随便更改了下,希望不要老是投多个稿件

This commit is contained in:
Jerry Yan 2022-10-24 14:07:44 +08:00
parent 79a49de4d5
commit 0b01f1d77d
4 changed files with 26 additions and 7 deletions

View File

@ -13,7 +13,7 @@ from model import db
from model.DanmakuClip import DanmakuClip from model.DanmakuClip import DanmakuClip
from model.VideoClip import VideoClip from model.VideoClip import VideoClip
from model.Workflow import Workflow from model.Workflow import Workflow
from workflow.bilibili import IS_LIVING, IS_UPLOADING, INSTANCE as bilibili_instance from workflow.bilibili import IS_LIVING, IS_UPLOADING, INSTANCE as bilibili_instance, IS_ENCODING
from workflow.bilibili import VideoPart from workflow.bilibili import VideoPart
from workflow.danmaku import get_file_start from workflow.danmaku import get_file_start
from workflow.video import get_video_real_duration, duration_str_to_float from workflow.video import get_video_real_duration, duration_str_to_float
@ -35,13 +35,15 @@ def auto_submit_task():
if len(bili_record_workflow_item.video_clips) == 0: if len(bili_record_workflow_item.video_clips) == 0:
print("[!]Auto Submit Fail: No Video Clips") print("[!]Auto Submit Fail: No Video Clips")
return return
bilibili_instance.login() if VIDEO_ENABLED:
bilibili_instance.login()
video_title = bili_record_workflow_item.name video_title = bili_record_workflow_item.name
_future = None _future = None
for video_clip in bili_record_workflow_item.video_clips: for video_clip in bili_record_workflow_item.video_clips:
if len(video_clip.danmaku_clips) > 0: if len(video_clip.danmaku_clips) > 0:
print("[+]Workflow:", bili_record_workflow_item.id, "; Video:", video_clip.full_path) print("[+]Workflow:", bili_record_workflow_item.id, "; Video:", video_clip.full_path)
_started = True _started = True
IS_ENCODING.set()
_future = pool.submit( _future = pool.submit(
do_workflow, do_workflow,
video_clip.full_path, video_clip.full_path,
@ -51,6 +53,7 @@ def auto_submit_task():
clear_item() clear_item()
if VIDEO_ENABLED: if VIDEO_ENABLED:
def _encode_finish_callback(_f: "Future"): def _encode_finish_callback(_f: "Future"):
IS_ENCODING.clear()
_result = _f.result() _result = _f.result()
if _result: if _result:
# start uploading # start uploading
@ -63,9 +66,9 @@ def auto_submit_task():
_future.add_done_callback(_encode_finish_callback) _future.add_done_callback(_encode_finish_callback)
else: else:
print("[-]Workflow:", bili_record_workflow_item.id, "; Video:", video_clip.full_path, "; No Danmaku") print("[-]Workflow:", bili_record_workflow_item.id, "; Video:", video_clip.full_path, "; No Danmaku")
if _future is not None: if VIDEO_ENABLED and _future is not None:
def _on_upload_finish(_f: "Future"): def _on_upload_finish(_f: "Future"):
if IS_UPLOADING.is_set() or IS_LIVING.is_set(): if IS_UPLOADING.is_set() or IS_LIVING.is_set() or IS_ENCODING.is_set():
return return
bilibili_instance.finish_upload( bilibili_instance.finish_upload(
title=video_title, title=video_title,
@ -73,7 +76,6 @@ def auto_submit_task():
tid=VIDEO_TID, tid=VIDEO_TID,
tag=VIDEO_TAGS, tag=VIDEO_TAGS,
no_reprint=0) no_reprint=0)
bilibili_instance.clear()
_future.add_done_callback(_on_upload_finish) _future.add_done_callback(_on_upload_finish)

View File

@ -6,7 +6,7 @@ from flask import Blueprint, jsonify
from config import DANMAKU_EXEC, FFMPEG_EXEC, BILILIVE_RECORDER_DIRECTORY, XIGUALIVE_RECORDER_DIRECTORY, VIDEO_OUTPUT_DIR from config import DANMAKU_EXEC, FFMPEG_EXEC, BILILIVE_RECORDER_DIRECTORY, XIGUALIVE_RECORDER_DIRECTORY, VIDEO_OUTPUT_DIR
from util.system import check_exec from util.system import check_exec
from workflow.bilibili import IS_LIVING, IS_UPLOADING from workflow.bilibili import IS_LIVING, IS_UPLOADING, IS_ENCODING
blueprint = Blueprint("api_collector", __name__, url_prefix="/api/collector") blueprint = Blueprint("api_collector", __name__, url_prefix="/api/collector")
@ -66,5 +66,6 @@ def collect_basic_status():
'os': platform.system(), 'os': platform.system(),
}, },
'living': IS_LIVING.is_set(), 'living': IS_LIVING.is_set(),
'encoding': IS_ENCODING.is_set(),
'uploading': IS_UPLOADING.is_set(), 'uploading': IS_UPLOADING.is_set(),
}) })

View File

@ -58,6 +58,10 @@
<td>当前录制状态</td> <td>当前录制状态</td>
<td :class="collector.basic.living ? 'success' : 'warning'"></td> <td :class="collector.basic.living ? 'success' : 'warning'"></td>
</tr> </tr>
<tr>
<td>当前压制状态</td>
<td :class="collector.basic.encoding ? 'success' : 'warning'"></td>
</tr>
<tr> <tr>
<td>当前上传状态</td> <td>当前上传状态</td>
<td :class="collector.basic.uploading ? 'success' : 'warning'"></td> <td :class="collector.basic.uploading ? 'success' : 'warning'"></td>
@ -286,7 +290,9 @@
total: "" total: ""
} }
}, },
living: false living: false,
encoding: false,
uploading: false,
}, },
uploader: { uploader: {
mid: 0, mid: 0,

View File

@ -6,6 +6,7 @@ from .bilibiliupload import core, VideoPart
IS_LIVING = threading.Event() IS_LIVING = threading.Event()
IS_ENCODING = threading.Event()
IS_UPLOADING = threading.Event() IS_UPLOADING = threading.Event()
@ -112,6 +113,15 @@ class Bilibili:
""" """
if len(self.parts) == 0: if len(self.parts) == 0:
return return
if IS_ENCODING.is_set():
LOGGER.info("[{}]仍在压制,取消发布".format(title))
return
if IS_LIVING.is_set():
LOGGER.info("[{}]仍在直播,取消发布".format(title))
return
if IS_UPLOADING.is_set():
LOGGER.info("[{}]仍在上传,取消发布".format(title))
return
LOGGER.info("[{}]投稿中,请稍后".format(title)) LOGGER.info("[{}]投稿中,请稍后".format(title))
copyright = 2 if source else 1 copyright = 2 if source else 1
try: try: