我想从YouTube播放列表中提取信息,但是即使我使用ignoreerrors
标志,一次查询整个播放列表似乎也不太可靠,因为有时它会卡住,尤其是在互联网连接为有点动摇。
我是否应该通过设置playliststart
和playlistend
值并循环处理来逐个下载播放列表?
我当前的代码如下:
simulate_ydl_opts = {
'format': "251",
'playlistend': 50,
'ignoreerrors': True,
'simulate':True
}
youtube_dl_object = youtube_dl.YoutubeDL(simulate_ydl_opts)
test_info=youtube_dl_object.extract_info("https://www.youtube.com/user/Rasenfunk")
答案 0 :(得分:5)
恕我直言,我认为您可以使用ratelimit: 50000
作为配置,以防它取决于您的下载速度,并结合playliststart
,playlistend
,retries
和{ {1}}。
根据他们的github common module,continuedl
是
下载速度限制,以字节/秒为单位。
如果您已经知道需要限制此下载的速度,然后尝试相同的下载。如果带宽无法处理,基本上可以帮助您节流。
如果您不确定最大限制,我建议使用类似speedtest-cli的名称,其中您可以识别下载速度并应用该速度来限制速度,我只是点击了此示例代码来尝试一下退出:
ratelimit
答案 1 :(得分:1)
是的,您可能应该一次尝试一次。我建议您还让程序跟踪上次获得的URL,以便从上次中断的位置继续执行。一个基于线程的超时和重新启动系统(对于每个视频,创建一个新线程并包含一个超时)将有助于该过程更加无缝地进行。