浏览代码

封面优化

zhangyong 9 月之前
父节点
当前提交
201cbf7e4e
共有 4 个文件被更改,包括 60 次插入6 次删除
  1. 19 0
      common/aliyun_oss.py
  2. 3 1
      common/gpt4o_help.py
  3. 27 3
      data_channel/piaoquan.py
  4. 11 2
      video_rewriting/video_prep.py

+ 19 - 0
common/aliyun_oss.py

@@ -63,6 +63,25 @@ class Oss():
             }
         raise AssertionError(f'OSS上传失败,请求ID: \n{response.headers["x-oss-request-id"]}')
 
+    """
+    封面发送到art-pubbucket
+    """
+    @classmethod
+    def stitching_fm_upload_oss(cls, src_url: str,
+                                  video_id: str) -> Dict[str, Any]:
+        oss_object_key = f'jq_oss/jpg/{video_id}.jpg'
+        auth = oss2.Auth(OSS_ACCESS_KEY_ID, OSS_ACCESS_KEY_SECRET)
+        bucket = oss2.Bucket(auth, OSS_BUCKET_ENDPOINT, "art-pubbucket")
+        response = bucket.put_object_from_file(oss_object_key, src_url)
+
+        if 'Content-Length' in response.headers:
+            return {
+                'status': response.status,
+                'oss_object_key': oss_object_key,
+                'save_oss_timestamp': int(datetime.now().timestamp() * 1000),
+            }
+        raise AssertionError(f'OSS上传失败,请求ID: \n{response.headers["x-oss-request-id"]}')
+
 
     @classmethod
     def download_video_oss(cls, video_url, video_path_url, v_id):

+ 3 - 1
common/gpt4o_help.py

@@ -75,6 +75,8 @@ class GPT4o():
                     if match == 'None':
                         return "🔻分享给大家一个视频!值得细品❗"
                     title = match.group(1)
+                    if title in '原标题无法按照规则生成新标题':
+                        return "🔻分享给大家一个视频!值得细品❗"
                     return title
                 else:
                     content = response['data']['choices'][0]['message']['content']
@@ -157,5 +159,5 @@ class GPT4o():
 
 
 if __name__ == '__main__':
-    title = '家长必读孩子教育教育'
+    title = '请问你是炎黄子孙吗'
     GPT4o.get_ai_title(title)

+ 27 - 3
data_channel/piaoquan.py

@@ -218,8 +218,6 @@ class PQ:
     """
     @classmethod
     def insert_piaoquantv(cls, new_video_path, new_title, cover, n_id):
-
-
         url = "https://vlogapi.piaoquantv.com/longvideoapi/crawler/video/send"
         headers = {
             'User-Agent': 'PQSpeed/486 CFNetwork/1410.1 Darwin/22.6.0',
@@ -230,7 +228,6 @@ class PQ:
             'Content-Type': 'application/x-www-form-urlencoded'
         }
         payload = {
-            'coverImgPath': cover,
             'deviceToken': '9ef064f2f7869b3fd67d6141f8a899175dddc91240971172f1f2a662ef891408',
             'fileExtensions': 'MP4',
             'loginUid': n_id,
@@ -248,6 +245,8 @@ class PQ:
             'videoPath': new_video_path,
             'viewStatus': '1'
         }
+        if cover:
+            payload['coverImgPath'] = cover
         encoded_payload = urlencode(payload)
         response = requests.request("POST", url, headers=headers, data=encoded_payload)
         data = response.json()
@@ -277,3 +276,28 @@ class PQ:
                 time.sleep(5)
                 return video
         return ''
+
+    """
+    票圈站内视频下载
+    """
+    @classmethod
+    def download_video_jpg(cls, video_url, video_path_url, video_id):
+        try:
+            payload = {}
+            headers = {}
+            response = requests.request("GET", video_url, headers=headers, data=payload)
+            if response.status_code == 200:
+                # 以二进制写入模式打开文件
+                video = video_path_url + str(video_id) + '.jpg'
+                with open(f"{video}", "wb") as file:
+                    # 将响应内容写入文件
+                    file.write(response.content)
+                time.sleep(5)
+                return video
+        except Exception:
+            return None
+
+
+if __name__ == '__main__':
+    a = PQ.insert_piaoquantv('jq_oss/video/2024071917270193942','🔻意想不到“惊掉下巴”!','/jq_oss/jpg/2024071917270193942','70100016')
+    print(a)

+ 11 - 2
video_rewriting/video_prep.py

@@ -245,8 +245,17 @@ class getVideo:
                         if status == 200:
                             oss_object_key = oss_object_key.get("oss_object_key")
                             time.sleep(1)
-
-                            code = PQ.insert_piaoquantv(oss_object_key, new_title, cover, piaoquan_id)
+                            jpg_path = PQ.download_video_jpg(cover, video_path_url, v_id)  # 下载视频封面
+                            if os.path.isfile(jpg_path):
+                                oss_jpg_key = Oss.stitching_fm_upload_oss(jpg_path, oss_id)  # 封面发送OSS
+                                status = oss_jpg_key.get("status")
+                                if status == 200:
+                                    jpg = oss_jpg_key.get("oss_object_key")
+                                else:
+                                    jpg = None
+                            else:
+                                jpg = None
+                            code = PQ.insert_piaoquantv(oss_object_key, new_title, jpg, piaoquan_id)
                             if code:
                                 Common.logger("log").info(f"{task_mark}下的视频ID{v_id}发送成功")
                                 sqlCollect.insert_task(task_mark, v_id, mark, channel_id)  # 插入数据库