ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

下载离线也能秒开:YT Zero搭配yt-dlp插件实现本地播放与智能留存策略

下载离线也能秒开:YT Zero搭配yt-dlp插件实现本地播放与智能留存策略

【免费下载链接】ytzero

YT Zero - own rules, own algorithm, no login required. Every video from every channel you follow, and nothing else

项目地址:https://gitcode.com/gh_mirrors/yt/ytzero
点击查看免费下载

YT Zero 是一款自托管的 YouTube 订阅阅读器,配合内置的 yt-dlp 插件,可以把你想看的视频自动下载到本地,并用它自带的播放器离线秒开、全程不卡顿;再靠智能留存策略自动清理旧文件,磁盘永不爆满。本文带你从零启用插件,一路配置到留存策略。

一、yt-dlp 插件能做什么?

YT Zero 的YT-DLP Integration插件默认关闭,启用后它会用 yt-dlp 把视频下载为本地文件,并在 YT Zero 自己的播放器中回放,核心能力包括:

  • 📥本地下载:手动、定时、整播放列表、规则驱动的自动下载,队列带实时进度
  • 🎬本地播放:内置播放器秒级拖动进度条,离线也能完整观看
  • 👨‍👩‍👧全家共享:一次下载,所有 profile 共享同一个文件
  • 🧹智能留存:按天数自动清理 + 存储上限兜底,磁盘占用可控

官方 Docker 镜像已捆绑 yt-dlp、ffmpeg 和 Deno(Deno 是 yt-dlp 用于解决 YouTube 提取难题的 JS 运行时),开箱即用;镜像还通过 app/scripts/provision-ytdlp.sh 把 yt-dlp 的自更新固定在持久化/data卷上。裸机安装只需将 yt-dlp 与 ffmpeg 放入PATH,或用YTDLP_PATH指向二进制文件。完整设置参考 wiki/YT-DLP-Integration.md。

二、三步启用:最快配置路径

  1. Settings → Plugins:打开YT-DLP Integration(需管理员权限)
  2. Downloads → Configuration:开启Allow downloads for this profile
  3. Video quality:选择最高分辨率(best available / 1440p / 1080p / 720p / 480p,默认 1080p,优先 H.264/AAC)

完成后,信息流里的视频卡片顶部会出现一条细蓝色进度条表示下载进度,已下载的视频还会带上小徽章,一眼分辨"哪些可以离线秒开"。

三、播放模式选择:先播 YouTube,还是等本地?

Opening a video设置决定你打开一个"还没下载"的视频时会发生什么:

模式行为
Play from YouTube(默认)嵌入式播放器立即起播,下载在后台继续
Ask every time播放器弹出选择:现在看 YouTube,或先下载再本地播放
Always wait for the download视频以最高优先级进队列并显示进度页,下载完成后自动本地起播

选择"等待下载"会抢占当前正在进行的任务,被抢占的下载之后会从部分文件自动续传,队列调度逻辑见 app/src/downloader.ts。

四、三种智能留存方式

4.1 稍后观看,自动预下载

Download scheduled videos默认开启:放进"稍后观看"桶(Today / Tonight / Tomorrow 等)的视频会被服务器提前抓取,真正想看时已经就位,点开即播。

4.2 自动下载规则

在Downloads → Automatic downloads里可以创建规则(实现见 app/src/downloadRules.ts):

  • 来源范围:全部订阅(可排除特定频道)或指定频道 / 已关注播放列表
  • 关键词:必须包含 / 排除短语,可限定标题、简介或两者
  • 内容过滤:是否包含 Shorts、members-only,最低时长要求
  • 时间范围:只下未来视频、回看最近 N 小时、或回填全部已知视频

规则之间是"或"的关系,启用前还有实时预览,先告诉你到底会匹配多少条,避免误下载。

4.3 整列表下载

一个确认动作即可把已关注频道播放列表或个人播放列表的全部视频排入队列。每个播放列表还能单独覆盖下载分辨率(best available / 1440p / 1080p / 720p / 480p),且分辨率在视频入队时锁定,之后改设置不会悄悄改变已排队的任务。

五、本地播放体验:一个真正的播放器

下载完成后,内置播放器接管一切,体验不输官方:

  • ⚡秒开拖动:文件走 HTTP Range 播放,seek 不会重新起播
  • 🎯章节与 SponsorBlock标记直接画在进度条上
  • ⌨️ 键盘快捷键(Space/K、J/L、方向键、M、0–9)、画中画、Media Session 集成
  • 📊 与嵌入播放器一致的进度记录、自动归档和倍速行为
  • 🔁 观看页可用Local / YouTube开关按视频切换来源

字幕也支持离线:已按 profile 保存为 sidecar 的语言直接可用,未保存的则通过服务器以 WebVTT 流式提供,不会额外产生文件。

六、智能留存策略:磁盘不爆满的秘诀

默认值定义在 app/src/downloadSettings.ts,开箱即合理:

策略默认值说明
留存天数14 天超过 N 天的文件按 profile 自动删除
已观看宽限24 小时看完后文件再保留 24 小时
存储上限25 GB(最高 128 TB)超限时逐出最老的非保护文件
受保护文件固定(pin)的下载、点赞视频(可选)永不被自动清理

几个值得知道的细节:

  • Keep 模式:某 profile 可设为"只手动删除",但仍受共享存储上限约束
  • 墓碑机制:从队列手动移除的项目不会被自动规则重新下载(手动再次请求除外)
  • 下载时间窗:每个 profile 可设"允许下载的星期 + 起止时间",例如只允许 23:00–07:00 夜间下载,运行中的任务可让它跑完
  • 崩溃恢复:服务器重启后,未完成的下载自动从部分文件续传(自动重试 3 次 + 退避)
  • 家庭场景:儿童 profile 可限制为"只能播放已下载的视频"

七、常用环境变量速查

变量默认值用途
DOWNLOADS_DIR/data/downloads(Docker)下载文件存放目录
YTDLP_PATHyt-dlpyt-dlp 二进制路径
FFMPEG_PATHffmpegffmpeg 路径(合并下载 / 实验性边下边播)
YTDLP_AUTO_UPDATEDocker 下为1yt-dlp 自动更新间隔(天)

管理员还可以直接在 UI 里更新 yt-dlp,选择 stable 或 nightly 通道及自动更新间隔,不用碰服务器。

八、小结

YT Zero 的 yt-dlp 插件把"自托管订阅收件箱"升级成了"本地片库":下载落盘、内置播放器离线秒开、留存策略替你盯住磁盘。按本文步骤启用插件、挑好播放模式、配好留存天数与存储上限,你的订阅内容从此在线离线都能即点即播。

【免费下载链接】ytzero

YT Zero - own rules, own algorithm, no login required. Every video from every channel you follow, and nothing else

项目地址:https://gitcode.com/gh_mirrors/yt/ytzero
点击查看免费下载
上一篇:EAGLE-LLaMA3-Instruct-8B常见问题排查清单:草稿接受率低、显存溢出等8大问题的终极解决方案
下一篇:GPT来"写声音"?拆解IndexTTS-2.5:语义编码器+GPT梅尔+BigVGAN三段流水线

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进