zhangyong vor 1 Monat
Ursprung
Commit
fb5ddc9ecc
2 geänderte Dateien mit 93 neuen und 6 gelöschten Zeilen
  1. 71 6
      utils/gpt4o_mini_help.py
  2. 22 0
      workers/consumption_spider_work.py

+ 71 - 6
utils/gpt4o_mini_help.py

@@ -10,12 +10,10 @@ class GPT4oMini:
             "imageList": [],
             "model": "gpt-4o-mini-2024-07-18",
             "prompt": (
-                "你是一个专业的标题分析师"
-                ",请你通过视频标题来判断视频内容是否属于早安祝福内容,如果全部符合则返回“是”,如果有其中一个标准不符合则返回“否”"
+                "你是一个专业的标题分析师,请你通过视频标题来判断视频内容是否属于早安祝福内容。"
                 "早安祝福视频标题标准如下:"
-                    "1.标题中含有“早”、“早上好”、“早安”等带有早安祝福的字眼,则符合"
-                    "2.标题中带有早安祝福含义,则符合"
-                    "3.标题中含有日期的话,如:xx月xx日、xx月xx,则必须是北京时间当天的日期则符合"
+                "1.标题中含有“早”、“早上好”、“早安”等带有早安祝福的字眼"
+                "2.标题中带有早安祝福含义"
                 f"请严格按照示例输出,标题:{title}。"
             ),
             "responseFormat": {
@@ -48,6 +46,73 @@ class GPT4oMini:
         except Exception as e:
             return "否"
 
+    @classmethod
+    def get_ai_mini_day_early(cls, title):
+        url = "http://aigc-api.cybertogether.net//aigc/dev/test/gpt"
+        payload = json.dumps({
+            "imageList": [],
+            "model": "gpt-4o-mini-2024-07-18",
+            "prompt": (
+                f"""你是一个专业的标题分析师,请通过视频标题来判断标题中的日期是否与当天日期一致。具体规则如下:
+
+            提取标题中的日期:
+            
+            若标题中包含“x月x日”或“x月x号”格式的日期(例如“3月4日”或“3月4号”或“3月4”),则提取该日期。
+            
+            若标题中不包含日期格式,则直接输出“符合日期适合推荐”。
+            
+            判断日期是否为当天:
+            
+            若提取的日期与北京时间当天日期一致,则输出“符合日期适合推荐”。
+            
+            若提取的日期与当天日期不一致,则输出“非当日日期不推荐”。
+            
+            输出格式:
+            
+            严格按照以下示例输出:
+            
+            示例1:标题:“早上好,3月4日最新消息” → 若当天是3月4日,输出“符合日期适合推荐”;。
+            
+            示例2:标题:“早上好” → 输出“符合日期适合推荐”。
+            
+            示例3:标题:“早上好,10月10日最新消息” → 若当天不是10月10日,则输出“非当日日期不推荐”;。
+
+            
+            请严格按照上述规则和示例输出,标题:{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 "非当日日期不推荐"
+
 if __name__ == '__main__':
-    title = GPT4oMini.get_ai_mini_early("❤️早上好!今天是3月3日!想得起的,都是真情。合得来的,都是缘分。处得好的,都有共识。经常问候的,都是最难忘的人")
+
+    title = GPT4oMini.get_ai_mini_day_early("❤️早上好!今天是3月5日!想得起的,都是真情。合得来的,都是缘分。处得好的,都有共识。经常问候的,都是最难忘的人")
     print(title)

+ 22 - 0
workers/consumption_spider_work.py

@@ -1,6 +1,9 @@
 import asyncio
 import json
+import re
 import sys
+from datetime import datetime
+
 import orjson
 from apscheduler.schedulers.asyncio import AsyncIOScheduler
 from apscheduler.triggers.cron import CronTrigger
@@ -14,6 +17,19 @@ from utils.redis import RedisHelper, content_video_data
 
 
 class ConsumptionSpiderRecommend(object):
+    @classmethod
+    def judgment_time(cls,title):
+        today = datetime.now().strftime("%-m月%-d")
+        date_pattern = r"(\d{1,2}月\d{1,2}([日号]|$))|(\d{4}年\d{1,2}月\d{1,2}日)|(\d{1,2}/\d{1,2})"
+        if re.search(date_pattern, title):
+            if today in title:
+                return True
+            else:
+                return False
+        else:
+            return True
+
+
     @classmethod
     async def run(cls):
         logger.info(f"[处理] 开始获取redis数据")
@@ -32,7 +48,12 @@ class ConsumptionSpiderRecommend(object):
             "video_title": task['video_title'],
             "status": title_type
         }), "task:spider_early_data")
+        title_status = cls.judgment_time(video_title)
         if title_type == "否":
+            logger.info('[处理] 不属于早安祝福内容')
+            return
+        if not title_status:
+            logger.info('[处理] 非当日日期不推荐')
             return
         logger.info('[处理] 开始上推荐处理')
         code = PQ.pq_recommended(task['video_id'])
@@ -43,6 +64,7 @@ class ConsumptionSpiderRecommend(object):
 
 
 
+
 async def run():
     scheduler = AsyncIOScheduler()
     try: