浏览代码

距离第二天3分钟结束账号爬取

zhangliang 3 周之前
父节点
当前提交
ef118181e7
共有 2 个文件被更改,包括 13 次插入2 次删除
  1. 1 1
      services/pipeline.py
  2. 12 1
      spiders/authorspider.py

+ 1 - 1
services/pipeline.py

@@ -180,6 +180,7 @@ class PiaoQuanPipeline:
                 else:
                     flag = int(self.rule_dict[key]["min"]) <= int(self.item[key]) <= max_value
                     if not flag:
+                        self.logger.info(f"校验结束: 下载规则不符合{flag}")
                         self.aliyun_log.logging(
                             code="2004",
                             trace_id=self.trace_id,
@@ -287,7 +288,6 @@ class PiaoQuanPipeline:
             self.logger.info("校验结束: 去重不符合")
             return False
         if not self.download_rule_flag():
-            self.logger.info("校验结束: 下载规则不符合")
             return False
         self.logger.info("校验结束: 全部通过")
         return True

+ 12 - 1
spiders/authorspider.py

@@ -1,3 +1,4 @@
+from datetime import datetime, timedelta
 from spiders.basespider import BaseSpider
 from typing import Optional, List, Dict
 import aiohttp
@@ -29,6 +30,8 @@ class AuthorSpider(BaseSpider):
         """核心循环:处理每个用户的视频"""
         async with aiohttp.ClientSession(timeout=aiohttp.ClientTimeout(total=self.timeout)) as session:
             while self.current_user_index < len(self.user_list_from_db):
+                if self.is_less_than_3_minutes():
+                    return
                 # 检查数量限制
                 if not await self.is_video_count_sufficient():
                     return
@@ -99,4 +102,12 @@ class AuthorSpider(BaseSpider):
 
     async def fetch_detail(self, item: Dict) -> Dict:
         """账号模式:补充视频详情(子类自行实现)"""
-        return item  # 默认返回原数据
+        return item  # 默认返回原数据
+
+
+    def is_less_than_3_minutes(self):
+        now = datetime.now()
+        tomorrow = now.date() + timedelta(days=1)
+        midnight = datetime.combine(tomorrow, datetime.min.time())
+        time_left = midnight - now
+        return time_left.total_seconds() < 3 * 60