Skip to content

fix: 兼容 fpcalc 非致命解码退出码 - #6362

Merged
jxxghp merged 1 commit into
jxxghp:v3from
InfinityPacer:codex/fix/acoustid-fpcalc-exit-code
Aug 19, 2026
Merged

fix: 兼容 fpcalc 非致命解码退出码#6362
jxxghp merged 1 commit into
jxxghp:v3from
InfinityPacer:codex/fix/acoustid-fpcalc-exit-code

Conversation

@InfinityPacer

Copy link
Copy Markdown
Contributor

MoviePilot V3 当前 Docker 基于 Debian Bookworm,其 libchromaprint-tools 1.5.1-2+b1 存在已知的 FFmpeg 5 解码结束处理问题:fpcalc 已输出有效指纹后仍可能报告 End of file 并以 3 退出。主程序同步、异步路径此前把所有非零退出码直接视为失败,导致可用指纹被丢弃。

本 PR 将 03 定义为可继续校验输出的退出码;两种情况下都必须通过现有 JSON、音频时长和指纹非空校验。其它退出码仍按失败处理,因此不会把空输出或真实解码失败当成有效结果。

依赖包事实与处理边界:

  • Debian Bookworm 当前提供 1.5.1-2+b1,Debian #1062530 记录了有效指纹伴随 rc=3 的相同现象。
  • Chromaprint upstream #122 确认 FFmpeg 5 读取结束时的控制流问题,修复已由 #125 合并。
  • Debian Trixie 的 1.5.1-7 已带入对应修复。本 PR 不升级 Debian,也不把 Docker 替换为官方 fpcalc 1.6.1,仅在主程序层兼容依赖已定义的非致命退出语义。

验证:

  • 同一批 WAV、FLAC、MP3、M4A、Vorbis、Opus、CAF、AMR 和可生成部分指纹的截断 MP3:Bookworm 1.5.1-2+b1 均为有效 JSON + rc=3,Trixie 1.5.1-7 均为相同指纹 + rc=0;无效文件和无法生成指纹的严重截断文件均保持 rc=2
  • 使用真实 Bookworm fpcalc 1.5.1-2+b1 验证同步、异步路径均可读取 rc=3 的有效指纹,rc=2 无效文件仍被拒绝。
  • python tests/run.py5042 passed, 3 skipped
  • 触及模块与测试的 Pylint:10.00/10,0 告警。
  • 完整 pylint app 仍为上游现有 lazy export 基线的 46 个 E0611,评分 9.98/10,本 PR 未新增同类问题。

@jxxghp
jxxghp merged commit 307d54b into jxxghp:v3 Aug 19, 2026
1 of 2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants