| 
					
				 | 
			
			
				@@ -0,0 +1,68 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import asyncio 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import json 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import sys 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import orjson 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+from apscheduler.schedulers.asyncio import AsyncIOScheduler 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+from apscheduler.triggers.cron import CronTrigger 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+from loguru import logger 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+from utils.gpt4o_mini_help import GPT4oMini 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+sys.path.append('/app') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+from utils.piaoquan import PQ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+from utils.redis import RedisHelper, content_video_data 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+class ConsumptionSpiderRecommend(object): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @classmethod 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    async def run(cls): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        logger.info(f"[处理] 开始获取redis数据") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        task = RedisHelper().get_client().rpop(name = 'task:pq_hour_early') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if not task: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            logger.info('[处理] 无待处理的数据') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        task = orjson.loads(task) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        logger.info(f"[处理] 获取redis数据{task}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        video_title = task['video_title'] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        logger.info(f"[处理] 开始分析标题是否符合早上发送,标题:{video_title}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        title_type = GPT4oMini.get_ai_mini_early(video_title) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        content_video_data(json.dumps({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            "video_id": task['video_id'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            "video_title": task['video_title'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            "status": title_type 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }), "task:spider_early_data") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if title_type == "否": 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        logger.info('[处理] 开始上推荐处理') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        code = PQ.pq_recommended(task['video_id']) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if code: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            logger.info('[处理] 上推荐处理成功') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            PQ.video_tag(task['video_id'], "lev-供给,rol-机器,#str-早安内容固定时段上推荐_62") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            logger.info('[处理] 视频打固定标签成功') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+async def run(): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    scheduler = AsyncIOScheduler() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    try: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        logger.info(f"[处理] 开始启动") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        scheduler.add_job( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ConsumptionSpiderRecommend.run, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            trigger=CronTrigger(hour='2-6', minute='*')  # 2:00-6:59 每分钟执行一次 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        scheduler.start() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        await asyncio.Event().wait() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    except KeyboardInterrupt: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pass 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    except Exception as e: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        logger.error(f"[处理] 启动异常,异常信息:{e}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pass 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    finally: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        scheduler.shutdown() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+if __name__ == '__main__': 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # asyncio.run(ConsumptionSpiderRecommend.run()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    loop = asyncio.get_event_loop() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    loop.run_until_complete(run()) 
			 |