使用pafy和python-vlc播放YouTube视频出现KeyError: 'dislike_count'错误如何解决
错误原因
YouTube在2021年11月正式隐藏了公开的视频点踩数数据,第三方工具无法再获取到dislike_count字段。而你使用的pafy官方版本已经停止维护,内置的后端逻辑仍强制读取该不存在的字段,因此触发KeyError异常。
解决方案
方案1:手动修改pafy后端代码(最快生效)
找到报错信息中指向的backend_youtube_dl.py文件,路径为C:\Users\harsh\AppData\Local\Programs\Python\Python310\lib\site-packages\pafy\backend_youtube_dl.py,将第54行代码:
self._dislikes = self._ydl_info['dislike_count']
修改为:
self._dislikes = self._ydl_info.get('dislike_count', 0)
用get方法读取字段,不存在时默认返回0,即可避免报错。
方案2:安装社区维护的pafy版本
卸载官方停更的原版pafy,安装修复了该问题的社区分支:
pip uninstall pafy -y pip install pafy-git
方案3:替换为yt-dlp实现相同功能(长期稳定推荐)
pafy已属于过时工具,直接使用yt-dlp获取视频流地址再调用vlc播放的方案兼容性更强,示例代码如下:
# 导入依赖 import vlc import yt_dlp # 视频地址(注意原代码中watch后少了=,已修正) url = "https://www.youtube.com/watch?v=il_t1WVLNxk&list=PLqM7alHXFySGqCvcwfqqMrteqWukz9ZoE" # yt-dlp配置 ydl_opts = { 'format': 'best', 'quiet': True, 'no_warnings': True } # 提取流地址 with yt_dlp.YoutubeDL(ydl_opts) as ydl: video_info = ydl.extract_info(url, download=False) stream_url = video_info['url'] # 播放视频 player = vlc.MediaPlayer(stream_url) player.play()
使用前需先安装yt-dlp:
pip install yt-dlp
内容的提问来源于stack exchange,提问作者BOSS
相关产品推荐
相关产品推荐

