Skip to content

v1.1.0 — 静默运行更稳:异常不再丢日志 + 网络时间预算

Latest

Choose a tag to compare

@88lin 88lin released this 07 Sep 14:48

这次主要解决什么

静默模式(模式 B)下,一旦脚本中途抛异常或网络持续超时,当天运行会无声无息地失败——日志里什么都没有,看上去就像"根本没跑"。本版本从两个方向根治:

  1. 任何异常都会被最后一道防线捕获并写入日志,不再凭空消失
  2. 新增网络时间预算,保证脚本总能在计划任务的时限内主动收尾

✨ 新增

  • 网络时间预算:新增环境变量 WORKBUDDY_BUDGET_SECONDS(默认 420 秒,上限 540 秒)。单次请求的超时随剩余预算收缩,预算耗尽即主动收尾并如实记录,剩余项留到下次再领
  • 新的结果类型NETWORK(网络不可达)与 TIMEOUT(预算耗尽),与 NO_SESSION(登录态失效)区分开,不再一律给出"请重新登录"的误导提示
  • 配置自检:环境变量非法、≤0 或超过上限时自动夹到安全值,并在输出里附 config_warning

🐛 修复

  • 静默模式异常兜底:main() 改为薄壳接住一切异常;日志路径不可写时回退到脚本同目录;print 失败同样转写日志
  • 凭据文件损坏不再被误报成 NO_SESSIONJSONDecodeErrorValueError 的子类,此前被错误归类)
  • 凭据里 endpoint 字段类型异常时不再崩溃(同样会落盘留痕)
  • 积分数若为字符串(如 "1.5""1e3")不再被当成 0;Infinity 也不会让整轮失败
  • 领取 Buddy 旅行礼物失败后不再派 Buddy 出发,避免覆盖尚未领取的奖励
  • 成长中心各子步骤独立容错,并区分软/硬失败——"派 Buddy 已达每日上限"这类 4xx 不再让计划任务天天报红
  • 未知命令给出明确提示与退出码

⚠️ 行为变更

  • GET 请求失败自动重试 1 次;抽奖、领奖等写操作不重试,避免超时发生在服务端处理完成之后造成重复提交
    (两个签到接口例外:状态查询是只读的,领取接口本身幂等,故允许重试)

📦 升级说明

无需修改任何配置,直接替换 signin.py 即可。已配置的定时任务(每天 00:05)不受影响,错过后补跑等设置保持不变。

完整变更v1.0.0...v1.1.0