yt-dlp高级用法:如何用一条命令搞定YouTube播放列表下载与分类整理
·
yt-dlp高级用法:如何用一条命令搞定YouTube播放列表下载与分类整理
每次手动整理下载的YouTube视频是不是让你抓狂?学术研究需要批量下载课程视频时,是否总在重复劳动?作为yt-dlp的重度用户,我发现90%的人只用了它10%的功能。今天我要分享的这套组合拳,能让你用一条命令完成从下载到分类整理的全流程。
1. 理解yt-dlp的文件命名魔法
yt-dlp最强大的特性之一是其灵活的-o参数,它支持使用模板变量动态生成文件名和目录结构。我们先拆解几个核心变量:
%(title)s # 视频标题
%(uploader)s # 上传者名称
%(upload_date)s # 上传日期(YYYYMMDD)
%(ext)s # 文件扩展名
%(playlist)s # 播放列表名称
%(playlist_index)s # 在播放列表中的序号
实际案例对比:假设我们要下载一个名为"Python教程"的播放列表
# 基础用法(所有视频堆在同一个目录)
yt-dlp "https://youtube.com/playlist?list=PL123"
# 进阶用法(按播放列表分类)
yt-dlp -o "%(playlist)s/%(title)s.%(ext)s" "https://youtube.com/playlist?list=PL123"
2. 播放列表的智能分类方案
2.1 按内容类型自动归档
对于自媒体创作者,我推荐这种目录结构:
yt-dlp -o "YouTube/%(upload_date>%Y-%m)s/%(playlist)s/%(title)s.%(ext)s" --download-archive archive.txt PL123
这个命令实现了:
- 按年月创建父目录(如
YouTube/2023-08) - 二级目录使用播放列表名称
--download-archive记录已下载视频,避免重复
2.2 学术资料的特殊处理
研究文献往往需要包含原始URL信息:
yt-dlp -o "%(playlist)s/%(playlist_index)02d_%(title).100s.%(ext)s" --print-json --write-info-json PL456
关键参数说明:
%02d将序号格式化为两位数(01,02...).100s截断过长的标题(避免文件名超限)--write-info-json保存视频元数据
3. 高阶文件管理技巧
3.1 多级目录嵌套
这个命令创建了年度→上传者→播放列表的三级结构:
yt-dlp -o "%(upload_date>%Y)s/%(uploader)s/%(playlist)s/%(playlist_index)s_%(title)s.%(ext)s" PL789
3.2 特殊字符处理方案
遇到包含/等非法字符的标题时,添加:
--restrict-filenames --windows-filenames
3.3 并行下载优化
大幅提升批量下载速度:
yt-dlp -o "%(playlist)s/%(title)s.%(ext)s" --concurrent-fragments 5 --throttled-rate 1M PL123
参数说明:
| 参数 | 作用 | 推荐值 |
|---|---|---|
--concurrent-fragments |
并行下载片段数 | 3-5 |
--throttled-rate |
最低下载速率 | 1M |
4. 自动化实战:完整的学术资料收集方案
这是我为研究生设计的全自动脚本:
#!/bin/bash
# 定义保存路径
SAVE_PATH="$HOME/Academic/%(upload_date>%Y)s/%(playlist)s"
# 完整下载命令
yt-dlp \
-o "${SAVE_PATH}/%(playlist_index)02d_%(title)s.%(ext)s" \
--write-info-json \
--write-thumbnail \
--convert-thumbnails jpg \
--embed-metadata \
--embed-thumbnail \
--download-archive ~/downloaded.txt \
--limit-rate 2M \
--sleep-requests 1 \
--playlist-reverse \
"$1"
这个方案实现了:
- 按年份和课程自动归档
- 保存完整元数据和缩略图
- 自动跳过已下载内容
- 限速防止被封禁
- 按课程顺序下载(
--playlist-reverse)
5. 异常处理与调试技巧
当命令复杂时,建议分步验证:
# 1. 先测试文件名生成
yt-dlp --print filename -o "测试/%(title)s.%(ext)s" URL
# 2. 模拟运行(不实际下载)
yt-dlp --simulate --print filename -o "测试/%(title)s.%(ext)s" URL
# 3. 限制下载数量测试
yt-dlp --max-downloads 2 -o "测试/%(title)s.%(ext)s" URL
常见问题解决方案:
- 中文乱码:添加
--compat-options filename-sanitization - 网络错误:使用
--retries 10和--fragment-retries 10 - 403禁止访问:尝试
--force-ipv4或更换User-Agent
记得定期更新yt-dlp以获得最佳兼容性:
yt-dlp -U
更多推荐


所有评论(0)