PyTube3 播放列表返回空列表



似乎在过去的 2 或 3 周的某个时候,Playlist类似乎已经停止为我工作。我尝试了以下改编自其GitHub的代码片段:

from pytube import Playlist
playlist = Playlist("https://www.youtube.com/playlist?list=PLynhp4cZEpTbRs_PYISQ8v_uwO0_mDg_X")
print(len(playlist.video_urls))
for url in playlist.video_urls:
print(url)

我尝试了多个公共播放列表,但它们都生成了一个空的list对象。此代码大约在 3 周前有效。另外,我正在运行Python 3.7.6和最新版本的PyTube3(9.6.4(。

我做错了什么吗?

我稍微研究了一下源代码,似乎它会加载 html,然后对/watch/v=...URL 执行正则表达式搜索。使用的正则表达式是href="(/watch?v=[w-]*),但它找不到任何匹配项,因为YouTube必须更新了他们的html。他们现在在 JSON 对象中发送监视 URL。所以我们应该寻找它。

这是有效的:

from pytube import Playlist
import re
playlist = Playlist("https://www.youtube.com/playlist?list=PLynhp4cZEpTbRs_PYISQ8v_uwO0_mDg_X")
playlist._video_regex = re.compile(r""url":"(/watch?v=[w-]*)")
print(len(playlist.video_urls))
for url in playlist.video_urls:
print(url)

希望这在下一个补丁之前有用。

最新更新