pytube.exceptions.RegexMatchError: __init__: could not find match for ^\w+\W
pytube.exceptions.RegexMatchError: __init__: could not find match for ^\w+\W
所以我的问题是我 运行 这个简单的代码试图制作一个 pytube 流 object...
from pytube import YouTube
yt = YouTube('https://www.youtube.com/watch?v=aQNrG7ag2G4')
stream = yt.streams.filter(file_extension='mp4')
并以标题中的错误结束。
完全错误:
Traceback (most recent call last):
File ".\test.py", line 4, in <module>
stream = yt.streams.filter(file_extension='mp4')
File "C:\Users\logan\AppData\Local\Programs\Python\Python38\lib\site-packages\pytube\__main__.py", line 292, in streams
return StreamQuery(self.fmt_streams)
File "C:\Users\logan\AppData\Local\Programs\Python\Python38\lib\site-packages\pytube\__main__.py", line 184, in fmt_streams
extract.apply_signature(stream_manifest, self.vid_info, self.js)
File "C:\Users\logan\AppData\Local\Programs\Python\Python38\lib\site-packages\pytube\extract.py", line 409, in apply_signature
cipher = Cipher(js=js)
File "C:\Users\logan\AppData\Local\Programs\Python\Python38\lib\site-packages\pytube\cipher.py", line 33, in __init__
raise RegexMatchError(
pytube.exceptions.RegexMatchError: __init__: could not find match for ^\w+\W
额外数据:
python版本:3.8.10
pytube 版本:11.0.2
正如 juanchosaravia 在 https://github.com/pytube/pytube/issues/1199 上建议的那样,为了解决问题,您应该进入 cipher.py 文件并替换第 30 行,即:
var_regex = re.compile(r"^\w+\W")
那一行:
var_regex = re.compile(r"^$*\w+\W")
之后又成功了
@Dtelev Gakms:每个 python 版本都会有此文件的副本。这发生在我身上,因为我在编写代码后将版本从 3.8 升级到 3.10。因此,在正确的 python 版本文件夹中的 venv 文件夹中搜索此文件“cipher.py”并进行更新。之后对我有用。
提示:如果需要,您可以使用“find ./ -name 'cipher.py'”命令
所以我的问题是我 运行 这个简单的代码试图制作一个 pytube 流 object...
from pytube import YouTube
yt = YouTube('https://www.youtube.com/watch?v=aQNrG7ag2G4')
stream = yt.streams.filter(file_extension='mp4')
并以标题中的错误结束。
完全错误:
Traceback (most recent call last):
File ".\test.py", line 4, in <module>
stream = yt.streams.filter(file_extension='mp4')
File "C:\Users\logan\AppData\Local\Programs\Python\Python38\lib\site-packages\pytube\__main__.py", line 292, in streams
return StreamQuery(self.fmt_streams)
File "C:\Users\logan\AppData\Local\Programs\Python\Python38\lib\site-packages\pytube\__main__.py", line 184, in fmt_streams
extract.apply_signature(stream_manifest, self.vid_info, self.js)
File "C:\Users\logan\AppData\Local\Programs\Python\Python38\lib\site-packages\pytube\extract.py", line 409, in apply_signature
cipher = Cipher(js=js)
File "C:\Users\logan\AppData\Local\Programs\Python\Python38\lib\site-packages\pytube\cipher.py", line 33, in __init__
raise RegexMatchError(
pytube.exceptions.RegexMatchError: __init__: could not find match for ^\w+\W
额外数据:
python版本:3.8.10 pytube 版本:11.0.2
正如 juanchosaravia 在 https://github.com/pytube/pytube/issues/1199 上建议的那样,为了解决问题,您应该进入 cipher.py 文件并替换第 30 行,即:
var_regex = re.compile(r"^\w+\W")
那一行:
var_regex = re.compile(r"^$*\w+\W")
之后又成功了
@Dtelev Gakms:每个 python 版本都会有此文件的副本。这发生在我身上,因为我在编写代码后将版本从 3.8 升级到 3.10。因此,在正确的 python 版本文件夹中的 venv 文件夹中搜索此文件“cipher.py”并进行更新。之后对我有用。
提示:如果需要,您可以使用“find ./ -name 'cipher.py'”命令