在我的 bash 脚本中,我始终下载视频:
youtube-dl -f mp4 -o '%(id)s.%(ext)s' --no-warnings $URL
Run Code Online (Sandbox Code Playgroud)
然后获取视频标题:
TITLE=$(youtube-dl --skip-download --get-title --no-warnings $URL | sed 2d)
Run Code Online (Sandbox Code Playgroud)
这两个命令都需要一些时间:前者需要 1-10 分钟(取决于视频时长),后者需要 10-20 秒。
下载视频时有什么方法可以在后台获取视频标题吗?
附言。我无法发送到后台第一个命令(下载视频),因为在处理视频文件后:获取 rss feed 中项目元的文件大小和持续时间。
尽管您可以在后台运行第二个命令,从而向 YouTube 发出两个请求,但更好的方法是使用该选项并结合过滤器,通过一次调用来完成此操作:youtube-dl
--print-json
jq
title=$(youtube-dl -f mp4 -o '%(id)s.%(ext)s' --print-json --no-warnings "$url" | jq -r .title)
Run Code Online (Sandbox Code Playgroud)
视频将在后台下载,所有视频详细信息将立即打印。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)
Run Code Online (Sandbox Code Playgroud)
如果您希望在下载元数据并将其存储到 JSON 文件时获得进度输出,则必须使用该--write-info-json
选项。数据将存储在名为您的视频文件的文件中,但扩展名为.info.json
. 例如:
youtube-dl -f mp4 -o 'video.%(ext)s' --write-info-json "$url"
title=$(jq -r ".title" "video.info.json")
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
10910 次 |
最近记录: |