From c9ceaeca6755fb394fe04aa0424325f4485ca31e Mon Sep 17 00:00:00 2001
From: Jerry Yan <792602257@qq.com>
Date: Mon, 1 Aug 2022 11:32:11 +0800
Subject: [PATCH] =?UTF-8?q?=E6=80=BB=E7=9A=84=E4=B8=8A=E4=BC=A0=E5=AE=8C?=
 =?UTF-8?q?=E6=88=90=E5=90=8E=E5=86=8D=E6=8A=95=E7=A8=BF?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 controller/api/bilirecorder_blueprint.py | 24 +++++++++++++++---------
 1 file changed, 15 insertions(+), 9 deletions(-)

diff --git a/controller/api/bilirecorder_blueprint.py b/controller/api/bilirecorder_blueprint.py
index b591e30..51be00f 100644
--- a/controller/api/bilirecorder_blueprint.py
+++ b/controller/api/bilirecorder_blueprint.py
@@ -35,6 +35,9 @@ def auto_submit_task():
     if len(bili_record_workflow_item.video_clips) == 0:
         print("[!]Auto Submit Fail: No Video Clips")
         return
+    bilibili_instance.login()
+    video_title = bili_record_workflow_item.name
+    _future = None
     for video_clip in bili_record_workflow_item.video_clips:
         if len(video_clip.danmaku_clips) > 0:
             print("[+]Workflow:", bili_record_workflow_item.id, "; Video:", video_clip.full_path)
@@ -45,24 +48,27 @@ def auto_submit_task():
                 video_clip.danmaku_clips[0].full_path,
                 *[clip.full_path for clip in video_clip.danmaku_clips[1:]]
             )
-            video_title = bili_record_workflow_item.name
             clear_item()
             def _encode_finish_callback(_f: "Future"):
                 _result = _f.result()
                 if _result:
                     # start uploading
-                    bilibili_instance.login()
-                    bilibili_instance.upload(
+                    bilibili_instance.pre_upload(
                         parts=[VideoPart(os.path.join(_item['base_path'], _item['file']), _item['file']) for _item in
-                               _result],
-                        title=video_title,
-                        desc=VIDEO_DESC,
-                        tid=VIDEO_TID,
-                        tag=VIDEO_TAGS,
-                        no_reprint=0)
+                               _result])
             _future.add_done_callback(_encode_finish_callback)
         else:
             print("[-]Workflow:", bili_record_workflow_item.id, "; Video:", video_clip.full_path, "; No Danmaku")
+    if _future is not None:
+        def _on_upload_finish(_f: "Future"):
+            bilibili_instance.finish_upload(
+                title=video_title,
+                desc=VIDEO_DESC,
+                tid=VIDEO_TID,
+                tag=VIDEO_TAGS,
+                no_reprint=0)
+            bilibili_instance.clear()
+        _future.add_done_callback(_on_upload_finish)
 
 
 def clear_item():