Merge branch 'hy-dev' into dev
Deploy / Build and deploy (push) Successful in 8s

This commit is contained in:
2026-05-13 16:22:12 +08:00
2 changed files with 7 additions and 6 deletions
+6 -5
View File
@@ -377,8 +377,9 @@ class XTwitterScraper:
if time.time() > deadline:
self.log("达到总时长上限,停止滚动")
break
# 先用已收集的响应数粗判,够了就停
before_bodies = len(self._bodies)
# 用「已处理推文数」判 idle(_seen 比 _items 鲁棒:即使所有新推文都被过滤掉
# 我们也知道时间线还在出新内容,不会误判到底)
before_seen = len(self._seen)
try:
await page.evaluate("window.scrollBy(0, document.body.scrollHeight)")
except Exception: # noqa: BLE001
@@ -392,15 +393,15 @@ class XTwitterScraper:
if self.since and self._oldest_seen and self._oldest_seen < self.since:
self.log(f"已滚动到 {_date_only(self._oldest_seen)},早于 since={_date_only(self.since)},停止滚动")
break
if len(self._bodies) == before_bodies:
if len(self._seen) == before_seen:
idle += 1
if idle >= self.idle_scrolls:
self.log(f"连续 {idle} 次滚动无新数据,判定到底,停止")
self.log(f"连续 {idle} 次滚动无新数据,判定到底,停止(原创 {len(self._items)} / 已处理 {len(self._seen)})")
break
else:
idle = 0
if n % 10 == 0:
self.log(f"滚动 {n} 次,已收集原创推文 {len(self._items)} 条")
self.log(f"滚动 {n} 次,原创 {len(self._items)} / 已处理 {len(self._seen)}")
def _reparse_so_far(self) -> None:
"""用目前所有响应体重新解析一遍(幂等,_seen/_items 去重)。"""
+1 -1
View File
@@ -37,7 +37,7 @@ _RUN_LOCK = asyncio.Lock()
TMP_ROOT = Path(os.environ.get("TMP_DIR", "/tmp")) / "content-harvester"
CONCURRENT_FRAGMENTS = int(os.environ.get("CONCURRENT_FRAGMENTS", "8"))
MAX_VIDEO_MB = int(os.environ.get("MAX_VIDEO_MB", "0")) # 0 = 不限
MAX_VIDEO_MB = int(os.environ.get("MAX_VIDEO_MB", "500")) # 单个视频上限,0=不限;默认 500MB 避免误下载几个 G 的长视频
@dataclass