使用pytube下载YouTube内容时报RegexMatchError无法匹配问题求助
pytube
get_throttling_function_name: could not find match for multiple 错误解决方案 该错误由YouTube更新前端播放器节流函数的命名规则导致,你本地安装的pytube版本内置的正则匹配规则未同步更新,无法识别新的函数命名格式。
解决方案
方案1:升级pytube到最新版本
优先尝试升级官方正式版,执行以下命令即可:
pip install --upgrade pytube
升级完成后重新运行下载代码测试即可。
方案2:手动修改源码修复(升级后仍报错时使用)
如果官方还未同步更新修复规则,可手动修改pytube的匹配逻辑:
- 打开报错提示的pytube安装路径下的
cipher.py文件,你对应的路径为:C:\Users\Me\AppData\Local\Programs\Python\Python39\lib\site-packages\pytube\cipher.py - 找到文件内
get_throttling_function_name函数下的function_patterns列表,将列表原有内容全部替换为以下规则:
function_patterns = [ r'a\.[a-zA-Z]\s*&&\s*\([a-z]\s*=\s*a\.get\("n"\)\)\s*&&\s*' r'\([a-z]\s*=\s*([a-zA-Z0-9$]+)(\[\d+\])?\([a-z]\)', ]
- 找到该函数下如下代码行:
return match.group(1)
修改为:
return match.group(1) if not match.group(2) else match.group(1) + match.group(2)
- 保存修改后的文件,重新运行下载代码即可正常工作。
内容的提问来源于stack exchange,提问作者Sciveo
相关产品推荐
相关产品推荐

