使用PyTube下载带‘建议观众自行斟酌’标签的YouTube视频时出错
解决YouTube年龄限制视频下载的Streaming Error问题
带“建议观众自行斟酌”标签的视频属于YouTube的年龄限制内容,这类视频要求访问者通过年龄验证才能获取流数据,而pytube默认的请求没有通过这层验证,所以会抛出Streaming Error。下面是几个可行的解决办法:
方法一:绕过年龄限制验证
如果你的pytube版本支持,直接调用bypass_age_gate()方法就能绕过年龄验证,不需要额外的cookie。修改代码中创建YouTube对象的部分:
def download_from_youtube(playlist, playlist_name, convert_to_mp3, is_playlist): if is_playlist == True: urls = obtain_urls(playlist) if is_playlist == False: urls = playlist for x in range(len(urls)): try: yt = YouTube(urls[x]) # 新增:绕过年龄限制 yt.bypass_age_gate() if convert_to_mp3 == True: download_and_convert_video(yt, playlist_name, x, urls) if convert_to_mp3 == False: download_video(yt, playlist_name) except Exception as e: print(f"第{x+1}个视频下载失败:{str(e)}") print(f"成功下载{len(urls)}个视频")
方法二:添加认证Cookie
如果bypass_age_gate无效,你可以用自己登录YouTube后的浏览器Cookie来验证身份:
- 在浏览器登录YouTube,打开开发者工具(F12),找到Application标签下的Cookie列表,复制
LOGIN_INFO和SID这两个Cookie的值。 - 修改创建YouTube对象的代码,传入Cookie参数:
yt = YouTube(urls[x], cookies={ "LOGIN_INFO": "你的LOGIN_INFO值", "SID": "你的SID值" })
注意:Cookie值会过期,过期后需要重新从浏览器获取。
方法三:升级pytube到最新版本
旧版本的pytube可能存在年龄限制视频的处理bug,执行下面的命令升级:
pip install --upgrade pytube
另外,建议给下载逻辑加上异常捕获,避免单个视频下载失败导致整个程序终止,上面的代码示例已经加入了try-except块。
内容的提问来源于stack exchange,提问作者ape_man
相关产品推荐
相关产品推荐

