You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

开发YouTube视频下载工具时pytube报RegexMatchError错误如何解决

报错触发原因

YouTube近期更新了网页端播放器的JavaScript代码结构,调整了节流限速相关函数的命名规则与代码位置,而pytube官方版本长期未更新适配,内置在cipher.py文件中的正则表达式无法匹配到新版的节流函数名称,因此抛出RegexMatchError异常。

解决方案
  • 方案1:修改本地cipher.py正则规则
    定位到报错信息中给出的cipher.py文件路径:C:\Users\Sanskar\PythonProjects\venv\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]\)',
    r'\([a-z]\s*=\s*([a-zA-Z0-9$]+)(\[\d+\])\([a-z]\)',
]

保存文件后重新运行代码即可修复该问题。

  • 方案2:安装更新版本的pytube
    卸载当前旧版本pytube,安装社区维护的修复版本,执行以下命令:
pip uninstall pytube -y
pip install pytube==15.0.0
  • 方案3:使用OAuth认证模式
    初始化YouTube对象时添加OAuth相关参数,跳过节流函数匹配逻辑,修改代码为:
from pytube import YouTube

yt = YouTube(
    'https://www.youtube.com/watch?v=yVcjVsk29XQ',
    use_oauth=True,
    allow_oauth_cache=True
)

streams = yt.streams.filter(adaptive=True)

首次运行时按照终端提示完成YouTube账号授权即可正常使用。

内容的提问来源于stack exchange,提问作者Sanskar Dhıman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 13:18:03