使用pytube下载播放列表音频无输出无报错,程序无限运行求助
解决Pytube下载YouTube播放列表音频无限运行的问题
你的程序出现无响应、无限运行的情况,主要是旧版本Pytube的解析逻辑失效,加上手动修改正则表达式导致匹配错误,以下是针对性修复方案:
1. 优先更新Pytube到最新版
旧版本Pytube对YouTube页面结构的适配已经过时,直接执行升级命令:
pip install --upgrade pytube
2. 删除手动修改的正则表达式
新版本已经修复了播放列表视频列表的获取逻辑,之前添加的这行代码会干扰解析,直接删掉:
playlist._video_regex = re.compile(r'"url":"(/watch\?v=[\w-]*)')
3. 添加调试输出定位问题
如果更新后还是卡住,在代码里加打印语句,明确程序的执行进度:
from pytube import Playlist YOUTUBE_STREAM_AUDIO = 140 DOWNLOAD_DIR = r'C:\Users\spane\Downloads' playlist = Playlist('https://www.youtube.com/playlist?list=PLZHQObOWTQDNU6R1_67000Dx_ZCJB-3pi') # 打印找到的视频数量 print(f"共找到 {len(playlist.video_urls)} 个视频") for idx, video_url in enumerate(playlist.video_urls): print(f"正在处理第 {idx+1} 个视频: {video_url}") video = playlist.video_at(idx) # 改用更稳定的音频流筛选方式 audioStream = video.streams.filter(only_audio=True, file_extension='mp4').first() print(f"开始下载: {video.title}") audioStream.download(output_path=DOWNLOAD_DIR) print(f"{video.title} 下载完成!")
4. 检查网络代理
如果打印显示卡在获取视频信息阶段,说明网络无法访问YouTube,需要添加代理:
from pytube.request import set_proxy # 替换成你的代理地址和端口 set_proxy(proxy_host="127.0.0.1", proxy_port=7890) # 后续播放列表初始化代码不变
内容的提问来源于stack exchange,提问作者ИСПАНСКАЯ МАТЬ
相关产品推荐
相关产品推荐

