Repository navigation
[codex] Add yt-dlp download backend - #60
4 commits merged into
Conversation
|
1. 关于下载后端 yt-dlp 本身已经完整支持 Twitch VOD 下载,包括分片合并、格式选择等。既然本项目后续的转字幕、翻译、总结流水线只依赖音频产物,是否可以直接使用 yt-dlp 作为唯一的下载后端,移除原有的 Twitch 直连逻辑? 好处是:
2. 关于CLI参数 既然本项目下游只依赖音频,可以简化
另外想讨论一个方向: 例如用户这样使用: uv run kits download "https://youtu.be/xxx" -- -f bestaudio --extract-audio或者直接: uv run kits download --yt-dlp-args="-f bestaudio --extract-audio" "https://youtu.be/xxx"这样本项目不需要维护任何下载相关的参数,完全由 yt-dlp 自己处理,用户也能使用 yt-dlp 的全部能力。 当然这样对用户的要求更高一些(需要了解 yt-dlp 语法),但好处是 CLI 非常薄,本项目只需要调用 yt-dlp 并拿到音频文件即可。 3. 关于依赖 建议将 yt-dlp 从 extra 提升为 core dependency,简化安装流程。 |
那么直接使用 yt-dlp 作为唯一的下载后端,关于CLI参数也可以这么改,不过对于yt-dlp还有一件事,目前yt-dlp需要一个相对来讲持续更新的版本,也就是说并不需要指定版本,保证最新版本即可 |
|
目前项目使用 另一种方案是作为可选依赖(extra)加入 两种方式都能满足"不限制版本"的需求。 |
那就在在文档中说明用户自行 pip install yt-dlp 安装最新yt-dlp即可 |
…-backend # Conflicts: # CLAUDE.md
feat(download)!: yt-dlp 下载后端(合并 PR #60,升 3.0.0)
概要
download收敛为唯一的 yt-dlp 下载后端,移除 Twitch TS 直连与后端选择逻辑download默认下载最佳音频并提取 MP3,分片并发默认固定为 5--backend/--audio-only/--yt-format/ Twitch 分片相关参数,新增--yt-dlp-args与裸--透传 yt-dlp 原生参数pyproject.toml/uv.lock固定版本,按 ffmpeg 类似的外部工具处理:用户自行pip install -U yt-dlp保持最新版背景
下游转字幕、翻译、总结流水线只依赖音频产物。使用 yt-dlp 作为唯一下载后端后,Twitch VOD、YouTube 和其他 yt-dlp 支持站点都走同一条路径,KITS 不再维护 Twitch TS 分片探测、合并与后端选择逻辑。
yt-dlp 需要跟随站点变化持续更新,因此不适合被项目 lock 文件固定版本;KITS 只调用 PATH 中的
yt-dlp命令,并在缺失时提示用户安装/更新。验证
uv run ruff check .uv run pytest tests/test_downloader.py tests/test_cli.pyuv run pytestuv run --no-project --with "pytest>=9.0.3" --with httpx --with pydantic --with tqdm python -m pytest -q -m "not requires_torch"