如何使用 yt-dlp 获取播放列表标题?

如何使用 yt-dlp 获取播放列表标题?

我想获取 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

执行此操作的正确方法(如果播放列表中的第一个视频不可用,则不会失败)是从titleJSON 响应中读取属性,可以通过使用--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)

相关内容