|
@@ -405,6 +405,7 @@ def _fetch_landing_video_pages(
|
|
|
max_pages = max(1, int(max_pages or 1))
|
|
max_pages = max(1, int(max_pages or 1))
|
|
|
merged: List[LandingVideo] = []
|
|
merged: List[LandingVideo] = []
|
|
|
seen: set[int] = set()
|
|
seen: set[int] = set()
|
|
|
|
|
+ effective_page_size = 0
|
|
|
for page_num in range(1, max_pages + 1):
|
|
for page_num in range(1, max_pages + 1):
|
|
|
page = fetch_landing_videos(
|
|
page = fetch_landing_videos(
|
|
|
crowd_package=crowd_package,
|
|
crowd_package=crowd_package,
|
|
@@ -414,12 +415,17 @@ def _fetch_landing_video_pages(
|
|
|
)
|
|
)
|
|
|
if not page:
|
|
if not page:
|
|
|
break
|
|
break
|
|
|
|
|
+ if effective_page_size == 0:
|
|
|
|
|
+ # 2026-08-07:服务端每页实际返回数可能小于请求的 page_size(实测最多 50),
|
|
|
|
|
+ # 用首页实际条数作为"末页判定"基准;否则 page_size>上限 时会在第 1 页
|
|
|
|
|
+ # 就满足 len(page)<page_size 提前 break,候选池只拉到 1 页。
|
|
|
|
|
+ effective_page_size = len(page)
|
|
|
for video in page:
|
|
for video in page:
|
|
|
if video.video_id in seen:
|
|
if video.video_id in seen:
|
|
|
continue
|
|
continue
|
|
|
merged.append(video)
|
|
merged.append(video)
|
|
|
seen.add(video.video_id)
|
|
seen.add(video.video_id)
|
|
|
- if len(page) < page_size:
|
|
|
|
|
|
|
+ if len(page) < effective_page_size:
|
|
|
break
|
|
break
|
|
|
logger.info(
|
|
logger.info(
|
|
|
"[video_recall] 分页合并 crowd=%r source=%r pages<=%d merged=%d",
|
|
"[video_recall] 分页合并 crowd=%r source=%r pages<=%d merged=%d",
|