-
Notifications
You must be signed in to change notification settings - Fork 202
Open
Labels
Description
描述Bug
clear 脚本出现回溯循环,我设置清理四十天前的动态,当脚本翻页到达该账号动态历史的最底端时,B 站 API 返回的下一页 offset 变为了空字符串 ""(或 undefined),而不再是 '0'。
由于代码中严格校验 next_offset === '0' 作为退出条件,导致循环无法被 break。随后脚本带着空 offset 继续请求,B站接口会默认返回账号第一页(最新发布)的数据,导致脚本陷入无限读取“0天前”新动态的死循环,直到进程超时被强杀。
重现Bug
task lottery/main.js clear
将脚本调到清理60天前,将无限循环,调成40天勉强能清理1000条左右
预期行为
先一路检测到52天前的动态,然后回到第0天的动态,周而复始,不会切换到下一个号
截图
运行日志
在附件里
操作系统
centos7.6
NodeJs版本
No response
脚本版本
Latest
其他
AI给出了解决办法,
文件路径:clear.js
在 clear() 函数的 for (const page of infiniteNumber()) 循环末尾:
// 原代码逻辑过于严格:
if (next_offset === '0' || !success) break;
修复建议 (Suggested Fix):
建议在判断条件中增加对空字符串及假值(Falsy)的兼容。只需将该行代码修改为:
if (!next_offset || next_offset === '0' || next_offset === '' || !success) break;
Reactions are currently unavailable