我想获取 YouTube 播放列表的播放列表标题并将其存储在 bash 脚本中的变量中。
我已经尝试过这些事情:
-e
标记,但它只列出视频标题-o
标记,--get-filename
但又一样- 最好的尝试是运行 yt-dlp 并 grep 包含播放列表名称的第一个下载行,但这对于基本工作来说似乎太多了
还请注意,我不想使用:
yt-dlp -o "%(playlist_title)s"
因为我只想要播放列表的名称。
是否可以使用 yt-dlp 获取播放列表标题?或者我必须使用像 Pafy 这样的解决方法?
答案1
您只需使用--print
(或-O
) 代替-o
:
yt-dlp [the rest of your command] --skip-download --print playlist_title
看文档:
-O, --print [WHEN:]TEMPLATE 要打印到屏幕的字段名称或输出模板,可选择在打印时间前加上前缀,以“:”分隔。
--skip-download
也会阻止下载,您可能只想添加--no-warnings
输出播放列表标题。
带有仅输出一个播放列表标题的播放列表的完整示例(针对第一个视频 - -I 1:1
):
yt-dlp https://youtube.com/playlist?list=PLpeFO20OwBF7iEECy0biLfP34s0j-8wzk -I 1:1 --skip-download --no-warning --print playlist_title
答案2
执行此操作的正确方法(如果播放列表中的第一个视频不可用,则不会失败)是从title
JSON 响应中读取属性,可以通过使用--dump-single-json
(简写-J
)和来获取--flat-playlist
。
然后要解析 JSON 数据并获取标题,您可以使用jq
:
playlist_title=$(yt-dlp "https://youtube.com/playlist?list=$playlist_id" \
--flat-playlist \
--dump-single-json \
| jq -r .title)