![youtube-dl 正在下载频道页面 #number => 如何跳过旧页面?](https://linux22.com/image/939492/youtube-dl%20%E6%AD%A3%E5%9C%A8%E4%B8%8B%E8%BD%BD%E9%A2%91%E9%81%93%E9%A1%B5%E9%9D%A2%20%23number%20%3D%3E%20%E5%A6%82%E4%BD%95%E8%B7%B3%E8%BF%87%E6%97%A7%E9%A1%B5%E9%9D%A2%EF%BC%9F.png)
我住在离网的地方,没有互联网接入。偶尔我会去图书馆运行我的脚本,它会备份视频频道(youtube、bitchute、rumble 等)
我在大型频道上浪费了很多时间......因为 youtube-dl 必须加载所有页面......例如:
[BitChuteChannel] thedavidknightshow:正在下载频道第 1 页
...
[BitChuteChannel] thedavidknightshow:正在下载频道第 194 页
该库阻止了 BitChute 和 rumble......所以我必须对它们进行 torify,这会使其速度变得更慢。
由于我已经下载了整个频道,我该如何仅索引最新的页面?
我们也欢迎其他能加快这一进程的建议。
答案1
如果你已经有了最旧的文件,你可以使用--playlist-items
或--playlist-end
例如:
yt-dlp playlist_url --playlist-end 30
仅获取最新的 1 或 2 页。这也适用于帐户或频道,因为频道基本上是特定类型的播放列表
答案2
--playlist-end 可能有用,但你还有另外两个不错的选择。第一个选项是在下载时使用
--download-archive <archive file>
选项。您可以给它一个文件名,如 YOUTUBE.CHANNEL.archive.txt,它会列出该存档文件中下载的文件。下次您运行该命令时,比如几个月后,它会跳过您已经下载的文件。
另一个选择是
--datebefore YYYYMMDD
和
--dateafter YYYYMMDD
您可以使用 --datebefore 下载从开始到某个日期的所有内容。您可以使用 --dateafter 下载从该日期到当前日期的所有内容。例如,如果我在 11 月左右停止观看某个节目,并且不想在那之后下载任何内容,我可以使用
--datebefore 20231101
因此,整个命令行的示例如下
yt-dlp -f 'bv*[height<=1440]+ba' --embed-thumbnail --embed-metadata --download-archive YOUTUBE.CHANNEL.archive.txt https://www.youtube.com/@YOUTUBE.CHANNEL/videos --datebefore 20231101 -o '%(channel)s/%(title)s.%(ext)s'
将 YOUTUBE.CHANNEL 替换为正确的名称。这应该可以解决您的问题。