![我如何让 youtube-dl 返回播放列表的创建者?](https://linux22.com/image/1610667/%E6%88%91%E5%A6%82%E4%BD%95%E8%AE%A9%20youtube-dl%20%E8%BF%94%E5%9B%9E%E6%92%AD%E6%94%BE%E5%88%97%E8%A1%A8%E7%9A%84%E5%88%9B%E5%BB%BA%E8%80%85%EF%BC%9F.png)
我可以使用youtube-dl
选项--dump-json
并jq
获取上传器视频:
uploader=$(youtube-dl --dump-json "$video_url" | jq -r '.uploader')
有没有办法让播放列表以类似的方式?
youtube-dl -j "$playlist_url"
返回视频列表,但不返回有关播放列表创建者的信息。
答案1
正如@Seth在他的回答中所建议的那样,我可以使用--skip-download
和--output
选项。经过一番试验,我发现--output选项不会在json数据中添加任何额外信息。但是,youtube-dl
像这样调用:
youtube-dl --skip-download --playlist-end 1 --output '%(playlist_uploader)s/%(title)s.%(ext)s' "$playlist_url"
确实会创建一个以播放列表上传器名称命名的文件夹。我可以使用find
以下命令获取此文件夹:
find . -type d -printf '%T@ %p\n' | sort -n | tail -1 | cut -f2- -d" "
就像建议的那样这回答一个问题在stackoverflow.com。这比@Seth 建议的还要迂回,但确实解决了我的问题。
答案2
有点绕,但您可以将其包含在输出名称或类似名称中,因为它似乎是一个受支持的变量。
- 播放列表(字符串):包含视频的播放列表的名称或 ID
- playlist_index(数字):播放列表中视频的索引,根据播放列表的总长度用前导零填充
- playlist_id(字符串):播放列表标识符
- playlist_title(字符串):播放列表标题
- playlist_uploader (字符串):播放列表上传器的全名
- playlist_uploader_id (string):播放列表上传者的昵称或 id
使用--external-downloader
您可能能够使用脚本。根据输出,您可能还可以使用--skip-download
或--simulate
。理论上,使用 中的变量-o
应该将其包含在 json 中。