【问题标题】:PyTube3 Playlist returns empty listPyTube3 播放列表返回空列表
【发布时间】:2020-06-30 16:24:17
【问题描述】:

似乎在过去 2 或 3 周的某个时间,Playlist 课程似乎停止为我工作。我试过以下代码 sn-p 改编自their 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)。

是不是我做错了什么?

【问题讨论】:

  • 我已经在their GitHub 上提出了这个问题。希望有人尽快回答。如果没有,我将开始挖掘源代码,看看是否能找到任何东西。

标签: python-3.x youtube pytube


【解决方案1】:

我稍微查看了源代码,它似乎会加载 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)

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

【讨论】:

  • 很好,你提交了 PR 吗?
  • @mitchus 是的,我的第一个,但我认为一旦提交,我不需要做任何事情。我想我只需要等待它被接受。
  • @bobsmith76,如果您运行的 Python 和 PyTube 版本与我相同,并且您拥有相同的链接,我不知道可能出了什么问题。同样的设置昨天对我有用。
  • 搞定了。我使用的是 Python 3.8,这就是问题所在。
  • 我还没有到 Github 的那个阶段,我可以直接从中提取。
猜你喜欢
  • 1970-01-01
  • 2021-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-04
  • 2015-07-27
  • 1970-01-01
相关资源
最近更新 更多