添加强制清理功能,添加百度云上传功能,部分逻辑修改

This commit is contained in:
Jerry Yan 2019-04-29 09:50:26 +08:00
parent 43e161ebb6
commit f1b4a878a5
5 changed files with 56 additions and 28 deletions

View File

@ -1,24 +1,27 @@
import os
import queue
from datetime import datetime
from glob import glob
import psutil
from api import XiGuaLiveApi
import json
from bilibili import Bilibili
import threading
from bypy import ByPy
_config_fp = open("config.json","r",encoding="utf8")
_config_fp = open("config.json", "r", encoding="utf8")
config = json.load(_config_fp)
_config_fp.close()
_do_move_time = datetime.now()
bypy = ByPy()
doCleanTime = datetime.now()
network = {
"currentTime": datetime.now(),
"out":{
"currentByte":psutil.net_io_counters().bytes_sent,
"out": {
"currentByte": psutil.net_io_counters().bytes_sent,
},
"in":{
"in": {
"currentByte": psutil.net_io_counters().bytes_recv,
}
}
@ -28,10 +31,10 @@ def updateNetwork():
global network
network = {
"currentTime": datetime.now(),
"out":{
"currentByte":psutil.net_io_counters().bytes_sent,
"out": {
"currentByte": psutil.net_io_counters().bytes_sent,
},
"in":{
"in": {
"currentByte": psutil.net_io_counters().bytes_recv,
}
}
@ -43,16 +46,30 @@ def getTimeDelta(a, b):
return sec+(ms/100000.0)
def _doClean():
global _do_move_time
def _doClean(_force=False):
global doCleanTime
_disk = psutil.disk_usage(".")
if _disk.percent > config["max"] and getTimeDelta(datetime.now(), _do_move_time) > 7200:
_do_move_time = datetime.now()
os.system(config["dow"])
if (_disk.percent > config["max"] and getTimeDelta(datetime.now(), doCleanTime) > 7200) or _force:
doCleanTime = datetime.now()
_list = sorted(glob("*.flv"), key=lambda x: datetime.utcfromtimestamp(os.path.getmtime(x)))
for _i in _list:
if not os.path.exists(_i):
break
doCleanTime = datetime.now()
if (datetime.now() - datetime.utcfromtimestamp(os.path.getmtime(_i))).days > config["exp"]:
if config["dow"] == "bypy":
_res = bypy.upload(_i)
if _res == 0:
os.remove(_i)
else:
os.system(config["dow"])
else:
break
doCleanTime = datetime.now()
def doClean():
p = threading.Thread(target=_doClean)
def doClean(_force=False):
p = threading.Thread(target=_doClean, args=(_force,))
p.setDaemon(True)
p.start()
@ -63,13 +80,13 @@ def getCurrentStatus():
_delta= getTimeDelta(datetime.now(),network["currentTime"])
_net = psutil.net_io_counters()
if 60 > _delta > 0:
_inSpeed = (_net.bytes_recv - network["in"]["currentByte"])/_delta
_outSpeed = (_net.bytes_sent - network["out"]["currentByte"])/_delta
_inSpeed = (_net.bytes_recv - network["in"]["currentByte"]) / _delta
_outSpeed = (_net.bytes_sent - network["out"]["currentByte"]) / _delta
else:
_outSpeed = 0
_inSpeed = 0
updateNetwork()
if getTimeDelta(datetime.now(), _do_move_time) > 3600:
if getTimeDelta(datetime.now(), doCleanTime) > 3600:
doClean()
return {
"memTotal": parseSize(_mem.total),
@ -81,6 +98,8 @@ def getCurrentStatus():
"cpu": psutil.cpu_percent(),
"outSpeed": parseSize(_outSpeed),
"inSpeed": parseSize(_inSpeed),
"doCleanTime": doCleanTime,
"fileExpire": config["exp"],
}
@ -91,7 +110,7 @@ def reloadConfig():
_config_fp.close()
dt_format="%Y/%m/%d %H:%M:%S"
dt_format = "%Y/%m/%d %H:%M:%S"
broadcaster = ""
streamUrl = ""
@ -130,9 +149,9 @@ def appendOperation(obj):
def parseSize(size):
K = size/1024.0
K = size / 1024.0
if K > 1000:
M = K/1024.0
M = K / 1024.0
if M > 1000:
return "{:.2f}GB".format(M / 1024.0)
else:

View File

@ -23,8 +23,6 @@ def index():
def readConfig():
config = Common.config.copy()
config.pop("b_p")
config.pop("mtd")
config.pop("del")
config.pop("mv")
return jsonify(config)
@ -88,6 +86,14 @@ def toggleForceStartUploadThread():
}})
@app.route("/force/start/clean", methods=["POST"])
def toggleForceStartUploadThread():
Common.doClean(True)
Common.appendOperation("强制执行清理程序")
return jsonify({"message":"ok","code":200,"status":0,"data":{
}})
@app.route("/encode/insert", methods=["POST"])
def insertEncode():
if "filename" in request.form and os.path.exists(request.form["filename"]):

View File

@ -67,10 +67,6 @@ def encode():
os.system("ffmpeg -i {} -c:v copy -c:a copy -f mp4 {} -y".format(i, i[:13] + ".mp4"))
Common.uploadQueue.put(i[:13] + ".mp4")
Common.modifyLastEncodeStatus("Encode >{}< Finished".format(i))
if Common.config["mv"]:
shutil.move(i, Common.config["mtd"])
elif Common.config["del"]:
os.remove(i)
def upload(date=datetime.strftime(datetime.now(), "%Y_%m_%d")):

View File

@ -15,6 +15,8 @@ function deviceUpdate(){
$("#cpuP").val(res.data.status.cpu)
$("#inSpeed").text(res.data.status.inSpeed)
$("#outSpeed").text(res.data.status.outSpeed)
$("#doCleanTime").text(res.data.status.doCleanTime)
$("#fileExpire").text(res.data.status.fileExpire)
}
}
)

View File

@ -20,5 +20,10 @@
<td><span id="inSpeed"></span>/s</td>
<td><span id="outSpeed"></span>/s</td>
</tr>
<tr>
<td class='title'>文件清理时间</td>
<td>@ <span id="doCleanTime"></span></td>
<td>清理超过<span id="fileExpire"></span>天的文件</td>
</tr>
</table>
<script src="/static/device.js"></script>