我可以使用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 中。