zhangyong 7 månader sedan
förälder
incheckning
8a37c52d3e
2 ändrade filer med 17 tillägg och 6 borttagningar
  1. 14 5
      data_channel/piaoquan.py
  2. 3 1
      video_rewriting/video_processor.py

+ 14 - 5
data_channel/piaoquan.py

@@ -311,12 +311,21 @@ class PQ:
         if channel_id == '单点视频':
             if video['source'] == "视频号" and int(video['is_encrypted']) == 1:
                 decode_key = int(video['decode_key'])
-                response = requests.get(url=video_url)
-                data = response.content
-                print(f"下载 {len(data)}")
-                time.sleep(50)
-                enc_length = int(response.headers.get('X-enclen', 131072))
+                data, enc_length = None, 0
+                for i in range(3):
+                    try:
+                        response = requests.get(url=video_url, timeout=5)
+                        data = response.content
+                        data_length = int(response.headers.get("Content-Range", 0))
+                        enc_length = int(response.headers.get('X-enclen', 131072))
+                        if len(data) == data_length:
+                            break
+                    except TimeoutError:
+                        continue
+                if not data:
+                    return None
                 video_url = cls.decrypt_video(data=data, decode_key=decode_key, enc_length=enc_length)
+
         url_video = video_url
         new_video = video_path_url + str(video_id) + '.mp4'
         for i in range(3):

+ 3 - 1
video_rewriting/video_processor.py

@@ -141,7 +141,7 @@ class VideoProcessor:
                 Common.logger(mark).info(f"{name}的{task_mark}下的ID{url} 开始下载视频")
                 new_video_path = cls.download_and_process_video(channel_id, video_url, video_path_url, v_id,
                                                                 crop_total, gg_duration_total, pw_random_id, new_title, mark, video)
-                if not os.path.isfile(new_video_path):
+                if not os.path.isfile(new_video_path) or new_video_path == None:
                     AliyunLogger.logging(channel_id, name, url, v_id, "视频下载失败", "3002", f"video_url:{video_url}")
                     text = (
                         f"**通知类型**: 视频下载失败\n"
@@ -376,6 +376,8 @@ class VideoProcessor:
         """
         if channel_id in ["票圈", "快手创作者版", "单点视频"]:
             new_video_path = PQ.download_video(video_url, video_path_url, v_id, video, channel_id)
+            if new_video_path == None:
+                return None
             Common.logger(mark).info(f"{channel_id}视频下载成功: {new_video_path}")
         elif channel_id == "视频号历史":
             new_video_path = Oss.download_sph_ls(video_url, video_path_url, v_id)