Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 下载视频时获取youtube视频标题_Bash_Youtube - Fatal编程技术网

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

Bash 下载视频时获取youtube视频标题,bash,youtube,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秒 下载视频时有没有办法在后台获取视频标题 另外,我不能发送到后台的第一个命令(下

在我的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秒

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


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

虽然可以在后台运行第二个命令,从而向YouTube发出两个请求,但最好是通过对
YouTube dl
的单个调用来完成,使用选项,并结合过滤器:

视频将在后台下载,所有视频细节将立即打印。然后,您可以如上所述使用
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文件,则必须使用该选项。数据将存储在名为视频文件的文件中,但扩展名为
.info.json
。例如:

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

谢谢你,这很有效!我可以将youtube dl输出到标准输出下载进度吗?在这种情况下,您可能需要使用
--write info json
选项。查看我的更新。
youtube-dl -f mp4 -o 'video.%(ext)s' --write-info-json "$url"
title=$(jq -r ".title" "video.info.json")