youtube-dl:通过忽略archive.txt中指定的视频,将YouTube视频info.json下载到播放列表中

时间:2019-07-23 16:29:51

标签: youtube-dl

我正在尝试通过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

-跳过下载不要下载视频

-download-archive archive.txt archive.txt包含已下载的视频ID的列表,因此youtube-dl不会再次下载这些视频

但是,如果在youtube-dl中包含--skip-download参数,则视频ID不会添加到archive.txt中,这表明yt-dl仅在下载视频后才将视频ID添加到archive.txt中。这两个命令(--skip-download和--download-archive archive.txt)是否可以一起运行?还是有其他方法可以实现?

1 个答案:

答案 0 :(得分:0)

yt-dl仅在下载视频后才将条目添加到archive.txt。因此,我认为您的用例不能仅通过yt-dl来实现。

不过,可以使用一些命令行魔术来实现此行为,

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 --skip-download --write-info-json --download-archive archive.txt {youtube-playlist-url} 将下载播放列表视频.info.json数据,但用于archive.txt

中的video_id

tee / dev / tty 将youtube-dl输出流式传输到stdout并将其通过管道传递到下一个命令

grep“ [信息]将视频描述元数据作为JSON写入:” 将从yt-dl输出中获取包含已下载的.info.json文件名的行。

gawk'{match($ 0,/-([a-zA-Z0-9_-]+).info.json/,arr); if(arr [1]!=“”)print“ youtube” arr [1]}'将从文件名

youtube {video_id}格式显示视频ID

>> archive.txt 会将输出连接到archive.txt文件

这是您运行该命令时发生的事情
下载播放列表中视频的info.json,但archive.txt中的视频除外,并将下载的info.json视频ID附加到archive.txt。因此,如果再次运行同一命令,则yt-dl将下载播放列表中所有视频的info.json,但archive.txt中提到的视频ID除外