alexta69/MeTube:给 yt-dlp 装个浏览器面板,视频下载不用敲命令了
MeTube 在 GitHub 上拿到了 13.5K Star。
yt-dlp 是命令行里下载视频的标杆工具,支持 YouTube 和上百个视频网站。但命令行对不少人来说有门槛——记参数、拼路径、排错都要翻文档。MeTube 做的事情很直接:给 yt-dlp 套一个 Web 界面,在浏览器里粘贴链接就能下载,配置也都在页面上完成。
1、这是干什么的
一个自托管的 Web UI,背后调用 yt-dlp,在浏览器里完成 YouTube 等几十个网站的视频下载。
支持下载视频、音频、字幕、封面缩略图。粘贴链接,选质量,点按钮,完事。
2、三种下载模式
MeTube 的下载分了三层:
第一层,单视频下载。粘贴链接,选视频质量或纯音频,提交即可。
第二层,播放列表和频道。粘贴列表链接后,MeTube 自动拉取全部条目,可以勾选部分下载,也可以一口气全下。
第三层,订阅自动下载。这个是 MeTube 和普通下载器拉开差距的功能。订阅一个频道或播放列表,MeTube 会按固定间隔检查新内容,发现新视频自动进队列。检查间隔可配置,默认 60 分钟。
3、Docker 一条命令部署
docker run -d -p 8081:8081 -v /path/to/downloads:/downloads ghcr.io/alexta69/metube
挂载一个下载目录,映射端口,就起来了。也支持 docker-compose,方便和其他服务编排。
4、yt-dlp 选项的三层控制
MeTube 对 yt-dlp 选项的控制分了三层,从全局到单次越来越具体:
全局选项(YTDL_OPTIONS)决定所有下载的默认行为,可以写在环境变量里,也可以指向 JSON 文件,文件变更自动重载,不用重启容器。
预设(Presets)是命名的选项包。比如定义三组配置:SponsorBlock 跳过赞助片段、FFmpeg 嵌入字幕、限速 5MB/s,下载时在界面下拉选择,可以多选叠加。
单次覆盖(Overrides)给临时需求用,在界面直接输入 JSON 覆盖参数,优先级最高。这个功能默认关闭,开启后注意权限控制,因为允许在容器内执行任意 yt-dlp 选项。
三层叠加的规则是:单次覆盖盖过预设,预设盖过全局。
5、文件命名和目录管理
文件名模板支持 yt-dlp 的完整占位符语法。OUTPUT_TEMPLATE 控制单视频命名,OUTPUT_TEMPLATE_PLAYLIST 控制播放列表(默认按列表名分目录),OUTPUT_TEMPLATE_CHANNEL 控制频道(默认按频道名分目录)。
音频可以单独存到 AUDIO_DOWNLOAD_DIR,和视频分开管理。临时文件目录可以指向 SSD 或 tmpfs 以提升性能,不过用内存文件系统会丢失断点续传的能力。
自定义目录默认开启,下载界面会多出一个目录选择器,输入新目录名自动创建。
6、浏览器扩展和集成
Chrome 和 Firefox 都有对应的扩展,右键视频直接发送到 MeTube。iOS 用户有快捷指令,从 Safari 分享菜单发送链接。还有书签脚本,在任意页面一键发送当前网址。Raycast 用户也有扩展可用。
浏览器扩展需要配好 CORS,如果 MeTube 跑在 HTTP 而你要在 HTTPS 页面用扩展,前面挂一个 Nginx、Caddy 或 Apache 做反向代理就行,配置模板 README 里都有现成的。
7、适合谁用
- 有 NAS 或家用服务器,想搭一个视频下载中心的人
- 订阅了一批 YouTube 频道,需要自动归档新内容的用户
- 觉得 yt-dlp 命令行太繁琐,想要界面操作的用户
- 需要给家人或团队提供统一下载入口的场景