如何为youtube-dl的-o参数设置条件格式化输出?
YouTube-dl
-o 参数条件格式化实现方案 要解决元数据缺失时生成NA路径的问题,youtube-dl支持在输出格式化字符串中使用Python风格的三元表达式,直接实现字段存在性判断与默认值替换,以下是具体写法:
通用解决方案(全局默认值)
适用于任意播放列表,缺失元数据时用通用默认值:
youtube-dl -o '%(artist if artist and artist != "NA" else "Unknown Artist")s/%(album if album and album != "NA" else "Unknown Album")s/%(track if track and track != "NA" else title)s.%(ext)s' https://www.youtube.com/playlist?list=OLAK5uy_k_chX2TlWB1Xnhm5ca6papp0bZwIC_Sd0
- 逻辑说明:
- 若
artist/album字段存在且不为NA,则使用字段值;否则替换为Unknown Artist/Unknown Album - 若
track字段缺失,直接使用视频title作为文件名,避免生成NA文件名
- 若
针对特定播放列表的优化方案
如果已知播放列表归属固定艺术家/专辑(比如你提供的The Oh Hellos《Dear Wormwood》专辑列表),可以直接指定对应默认值,让缺失元数据的视频自动归类到正确目录:
youtube-dl -o '%(artist if artist and artist != "NA" else "The Oh Hellos")s/%(album if album and album != "NA" else "Dear Wormwood")s/%(track if track and track != "NA" else title)s.%(ext)s' https://www.youtube.com/playlist?list=OLAK5uy_k_chX2TlWB1Xnhm5ca6papp0bZwIC_Sd0
这种写法会让所有视频统一归类到The Oh Hellos/Dear Wormwood目录下,有track元数据的用曲目名,缺失的用视频标题命名。
关键注意事项
- 确保shell环境正确转义:如果默认值包含空格或特殊字符,要用引号完整包裹格式化字符串
- 部分场景下youtube-dl会将缺失字段标记为
None而非NA,因此判断条件中同时检查字段存在性和是否为NA,避免遗漏
内容的提问来源于stack exchange,提问作者jojo2357
相关产品推荐
相关产品推荐

