在视频下载时获取youtube视频标题

时间:2017-11-03 13:20:41

标签: bash youtube

在我的bash脚本中,我一直下载视频:

youtube-dl -f mp4 -o '%(id)s.%(ext)s' --no-warnings $URL

然后获得视频标题:

TITLE=$(youtube-dl --skip-download --get-title --no-warnings $URL | sed 2d)

这两个命令都需要一些时间:前者需要1-10分钟(取决于视频持续时间),后者需要10-20秒。

下载视频时有没有办法在后台获取视频标题?

PS。我无法发送到后台第一个命令(下载视频),因为在我使用视频文件后:获取rss feed中项目元的文件大小和持续时间。

1 个答案:

答案 0 :(得分:2)

虽然您可以在后台运行第二个命令,从而向YouTube发出两个请求,但最好是通过一次调用执行youtube-dl,使用{{3} }选项,结合--print-json过滤器:

title=$(youtube-dl -f mp4 -o '%(id)s.%(ext)s' --print-json --no-warnings "$url" | jq -r .title)

视频将在后台下载,所有视频详情将立即打印。然后,您可以按上述jq过滤相关字段,或存储它们以供日后使用:

youtube-dl -f mp4 -o '%(id)s.%(ext)s' --print-json --no-warnings "$url" >metadata
title=$(jq -r ".title" metadata)
duration=$(jq -r ".duration" metadata)
view_count=$(jq -r ".view_count" metadata)

如果您希望在下载时将进度输出并将元数据存储到JSON文件,则必须使用jq选项。数据将存储在名为视频文件的文件中,但扩展名为.info.json。例如:

youtube-dl -f mp4 -o 'video.%(ext)s' --write-info-json "$url"
title=$(jq -r ".title" "video.info.json")