seal 中文文档 下载 App

yt-dlp 内核自动更新 — Seal 如何应对视频站变化

为什么 yt-dlp 需要单独更新

Seal 应用本体是 Kotlin 写的 UI 和下载管理器,yt-dlp 是独立的 Python 脚本——负责解析各视频站页面结构。但视频站的页面是一直在变的:

这些变化会让旧版 yt-dlp 解析失败。yt-dlp 社区几乎每周都有新提交来应对这些变化——所以 Seal 不应该和 yt-dlp 一起打包死,而是允许应用内自动更新。

Seal 的 yt-dlp 更新机制

更新损坏的经典 bug:bad local file header

v1.12.1 的 CHANGELOG 里有这个已知问题:

yt-dlp might be broken if you tried to download something while it was updating (bad local file header)

含义:如果你恰好在 Seal 自动更新 yt-dlp 的同时发起了下载,下载的 Python 包可能不完整,下次解析时就会报这个错误。

修复方法:

  1. 等 Seal 自动更新完再用(v1.12.1 起更新期间会自动阻塞下载,所以正常不会遇到)
  2. 如果还是遇到,手动去设置里触发一次 yt-dlp 更新(强制重新拉完整包),更新完就好
  3. 如果还是不行,清除 Seal 应用数据(注意会清掉历史记录)

v1.12.1 之前的版本没有"更新期间阻塞下载"这个保护,遇到这个问题概率更高。用 v1.12.1 及以上版本就不会遇到这个时序问题。

推荐设置

选项建议
yt-dlp 更新开关开启
更新间隔1-3 天(取决于你下载频率)
版本通道稳定版 vs Nightly(稳定版更稳、Nightly 更新更勤)
Seal 自身更新F-Droid 客户端会提示;GitHub 版自己盯 Release

继续到 通知与后台下载 看下载时的通知表现。