فهرست منبع

fix: Bug 6088 - 修复抖音作品同步分页逻辑,确保遍历所有分页

问题:抖音作品同步时,当API返回的next_cursor为空或无效时,分页逻辑立即break,导致只同步了第一页的作品。

修复:
- 移除对抖音平台的特殊break逻辑(原逻辑:当hasNextCursor为false时立即break for douyin)
- 统一使用has_more和declaredTotal检查来决定是否继续分页
- 增加对已声明总量(declaredTotal)的检查,避免过度拉取
ethanfly 2 هفته پیش
والد
کامیت
4337c1f22d
1فایلهای تغییر یافته به همراه6 افزوده شده و 9 حذف شده
  1. 6 9
      server/src/services/HeadlessBrowserService.ts

+ 6 - 9
server/src/services/HeadlessBrowserService.ts

@@ -960,22 +960,19 @@ class HeadlessBrowserService {
         const hasNextCursor = next !== undefined && next !== null && next !== '' && next !== -1 && next !== '-1';
 
         if (hasNextCursor) {
-          const key = String(next);
+          const key = String(next).trim();
           if (seenCursors.has(key)) break;
           seenCursors.add(key);
           cursor = next;
         } else {
-          if (platform === 'douyin') break;
           cursor = (typeof cursor === 'number' ? cursor + 1 : pageIndex + 1);
         }
 
-        // 抖音:仅当无下一页游标或本页 0 条时停止
-        if (platform === 'douyin') {
-          if (!hasNextCursor || pageWorks.length === 0) break;
-        } else {
-          const expectedMore = declaredTotal && declaredTotal > 0 ? allWorks.length < declaredTotal : !!result.has_more;
-          if (!expectedMore || pageWorks.length === 0 || newCount === 0) break;
-        }
+        // 仅当无下一页游标或本页 0 条时停止
+        if (!hasNextCursor || pageWorks.length === 0) break;
+
+        // 额外检查:若已达声明总量则停止
+        if (declaredTotal && declaredTotal > 0 && allWorks.length >= declaredTotal) break;
       } else {
         if (!result.has_more || pageWorks.length === 0 || newCount === 0) break;
       }