我正试图通过youtube-dl下载youtube播放列表中所有视频的json元数据(而不是视频)。我还想忽略下载已经下载的播放列表中视频的json元数据,同时再次运行相同的命令。这是我试过的命令,
youtube-dl -i --write-info-json --skip-download --download-archive archive.txt {youtube-playlist-url}
--write-info-json编写视频info.json
--skip-download不下载视频
--下载存档archive.txt archive.txt包含一个已经下载的视频ids列表,所以youtube-dl将不再下载这些视频。
但是,包含--跳过下载参数的youtube-dl会导致视频id没有添加到archive.txt,这意味着yt只在下载视频后才向archive.txt添加视频id。这两个命令(--跳过下载和下载存档archive.txt)能够一起运行吗?或者还有其他的方法来完成它呢?
发布于 2019-07-24 11:50:02
只有当视频被下载时,yt才会在archive.txt中添加一个条目。因此,我认为您的用例不可能仅仅通过yt实现。
然而,这种行为可以通过某种命令行魔法来实现,
youtube-dl --skip-download --write-info-json --download-archive archive.txt https://www.youtube.com/playlist\?list\=PLMCXHnjXnTnuFUfiWF4D0pYmJsMROz4sA |tee /dev/tty|grep "\[info] Writing video description metadata as JSON to:" |gawk '{ match($0, /-([a-zA-Z0-9_-]+)\.info\.json/, arr); if(arr[1] != "") print "youtube "arr[1] }' >> archive.txt
youtube-dl --跳过-下载-写-info-json-下载-存档archive.txt {youtube-播放列表-url}将下载播放列表视频.info.json数据,archive.txt中的video_ids除外。
to /dev/tty将将youtube-dl输出流到stdout,并将其输送到下一个命令。
grep "info将视频描述元数据写入JSON到:“将从yt-dl输出中获得包含下载的.info.json文件名的行。
gawk '{ match($0,/-(a-zA-Z0-9_-+).info.json/,arr);if(arr1 != "")打印"youtube "arr1 }'将从文件名以youtube {video_id}
格式打印视频。
>> archive.txt将将输出连接到archive.txt文件。
下面是运行该命令时发生的情况,
除在info.json中的视频外,还可直接下载播放列表中的视频的archive.txt,并将下载的info.json视频id附加到archive.txt中。因此,如果再次运行相同的命令,yt将在播放列表中下载所有视频的info.json,但archive.txt中提到的视频ids除外。
https://stackoverflow.com/questions/57168566
复制相似问题