zhangyong 3 ماه پیش
والد
کامیت
0c02d64253
3فایلهای تغییر یافته به همراه82 افزوده شده و 2 حذف شده
  1. 10 0
      common/feishu_form.py
  2. 49 0
      common/gpt4o_mini_help.py
  3. 23 2
      video_rewriting/video_processor.py

+ 10 - 0
common/feishu_form.py

@@ -14,6 +14,16 @@ from common.feishu_utils import Feishu
 
 class Material():
 
+    @classmethod
+    def get_title_rule(cls):
+        summary = Feishu.get_values_batch("KsoMsyP2ghleM9tzBfmcEEXBnXg", "BS9uyu")
+        for row in summary[1:]:
+            title_rule = row[0]
+            if title_rule:
+                return title_rule
+            else:
+                return None
+        return None
 
     @classmethod
     def feishu_list(cls,channel_id):

+ 49 - 0
common/gpt4o_mini_help.py

@@ -3,6 +3,55 @@ import json
 import requests
 class GPT4oMini:
 
+    @classmethod
+    def get_ai_mini_title_secure(cls, title):
+        url = "http://aigc-api.cybertogether.net//aigc/dev/test/gpt"
+        payload = json.dumps({
+            "imageList": [],
+            "model": "gpt-4o-mini-2024-07-18",
+            "prompt": (
+                "针对微信平台视频类小程序场景"
+                "面向人群是中国中老年人,在单聊、群聊场景。为视频生成一个吸引人的标题。每次生成我会提供一个原标题,你通过规则生成一个新的标题。"
+                "生成规则:"
+                "a.生成的新标题一定不能包含以下风险词。 风险词:“看看”、“全体”、“一定”、“所以人”、“无数人”、“值得一看”、“值得一听”、“99 % ”、“震撼”、“必”、“必看”、“必听”、“必读”、“全场”、“听听”、“一起听听”、“一起”、“快看”、“快来”、“分享”、“转发”、“都看看吧”、“都来”"
+                "b.新标题字符不小于15个字,不超过30个字。"
+                "c.新标题最前面或最后面必须加上emoij符号。如“🔴”、“⭕️”、“🚩”、“🔥”、“💖”"
+                "d.新标题最好只去掉原标题里的低质词,其他句子、语句都保持不变"
+                "e.去掉低质词后,根据语意适当加字句,使新标题整句读起来简洁、通顺、有吸引力、并准确反映视频核心内容"
+                "请严格按照上述规则,生成对应的新标题。"
+                f"请分析该标题,标题为:{title},返回新的标题。"
+            ),
+            "responseFormat": {
+                "type": "json_schema",
+                "json_schema": {
+                    "strict": True,
+                    "name": "share_script_result",
+                    "schema": {
+                        "type": "object",
+                        "properties": {
+                            "新标题": {
+                                "type": "string",
+                                "description": "生成新的标题"
+                            }
+                        },
+                        "required": ["新标题"],
+                        "additionalProperties": False
+                    }
+                }
+            }
+        })
+        headers = {'Content-Type': 'application/json'}
+        try:
+            response = requests.post(url, headers=headers, data=payload)
+            response_data = response.json()
+
+            data = json.loads(response_data.get('data', '{}'))
+            new_title = data["新标题"]
+            return new_title
+        except Exception as e:
+            return None
+
+
     @classmethod
     def get_ai_mini_pw(cls, title):
         url = "http://aigc-api.cybertogether.net//aigc/dev/test/gpt"

+ 23 - 2
video_rewriting/video_processor.py

@@ -291,8 +291,30 @@ class VideoProcessor:
                     title_list = [new_test_title, new_old_title]
                 else:
                     title_list = [new_old_title]
+
                 is_first = True
                 for new_title in title_list:
+                    current_time = datetime.now()
+                    formatted_time = current_time.strftime("%Y-%m-%d %H:%M:%S")
+                    title_rule = Material.get_title_rule()
+                    if title_rule:
+                        title_rule = title_rule.split(",")
+                        contains_keyword = any(keyword in new_title for keyword in title_rule)
+                        if contains_keyword:
+                            new_title_secure = GPT4oMini.get_ai_mini_title_secure(new_title)
+                            values = [
+                                [   channel_id,
+                                    url,
+                                    old_title,
+                                    new_title,
+                                    new_title_secure,
+                                    formatted_time
+                                ]
+                            ]
+                            Feishu.insert_columns("U5dXsSlPOhiNNCtEfgqcm1iYnpf", "V36GHT", "ROWS", 1, 2)
+                            time.sleep(0.5)
+                            Feishu.update_values("U5dXsSlPOhiNNCtEfgqcm1iYnpf", "V36GHT", "A2:Z2", values)
+                            new_title = new_title_secure
                     # 更新数据库
                     code = cls.upload_video_and_thumbnail(oss_object_key, jpg, v_id, new_title, task_mark, name, piaoquan_id,
                                                                 mark, channel_id, url, old_title, rule, video)
@@ -323,8 +345,7 @@ class VideoProcessor:
                         explain = "历史爆款"
                     else:
                         explain = "新供给"
-                    current_time = datetime.now()
-                    formatted_time = current_time.strftime("%Y-%m-%d %H:%M:%S")
+
                     if name == "品类关键词搜索":
                         first_category = task["first_category"]
                         keyword_principal = task["keyword_name"]