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

Posted

技术标签:

【中文标题】youtube-dl:通过忽略 archive.txt 中指定的视频,将 youtube 视频 info.json 下载到播放列表中【英文标题】:youtube-dl: download youtube videos info.json in a playlist by ignoring videos specified in archive.txt 【发布时间】:2019-12-01 18:14:54 【问题描述】:

我正在尝试通过 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不要下载视频

--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】:

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_ids

tee /dev/tty 会将 youtube-dl 输出流式传输到标准输出,并将其通过管道传送到下一个命令

grep "[info] Writing video description metadata as JSON to:" 将从 yt-dl 输出中获取包含下载的 .info.json 文件名的行

gawk ' match($0, /-([a-zA-Z0-9_-]+).info.json/, arr); if(arr[1] != "") print "youtube "arr[1] ' 将从文件名中以 youtube video_id 格式打印 videoid

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

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

【讨论】:

以上是关于youtube-dl:通过忽略 archive.txt 中指定的视频,将 youtube 视频 info.json 下载到播放列表中的主要内容,如果未能解决你的问题,请参考以下文章

通过 php 使用 youtube-dl 时出现 Python ImportError

ModuleNotFoundException youtube-dl 模块无法识别

使用youtube-dl和yt-dlp下载视频!

Youtube-dl - 提取元数据/json 信息到文本文件

如何在 youtube-dl 的 python 代码中嵌入 socks5 代理?

youtube-dl:将视频下载为没有音频的最佳质量 mp4?