使用 python-vlc 和 pafy 的 python 脚本出错
Posted
技术标签:
【中文标题】使用 python-vlc 和 pafy 的 python 脚本出错【英文标题】:Error in python script using python-vlc and pafy 【发布时间】:2022-01-01 14:53:56 【问题描述】:最近我创建了一个 python 脚本来使用 pafy 和 python-vlc 播放 youtube 视频。 下面的代码是脚本:
# importing vlc module
import vlc
# importing pafy module
import pafy
# url of the video
url = "https://www.youtube.com/watchv=il_t1WVLNxk&list=PLqM7alHXFySGqCvcwfqqMrteqWukz9ZoE"
# creating pafy object of the video
video = pafy.new(url)
# getting stream at index 0
best = video.streams[0]
# creating vlc media player object
media = vlc.MediaPlayer(best.url)
# start playing video
media.play()
运行后我得到这个错误:
Traceback (most recent call last):
File "C:\Users\harsh\Desktop\don't.py", line 11, in <module>
video = pafy.new(url)
File "C:\Users\harsh\AppData\Local\Programs\Python\Python310\lib\site-
packages\pafy\pafy.py", line 124, in new
return Pafy(url, basic, gdata, size, callback, ydl_opts=ydl_opts)
File "C:\Users\harsh\AppData\Local\Programs\Python\Python310\lib\site-
packages\pafy\backend_youtube_dl.py", line 31, in __init__
super(YtdlPafy, self).__init__(*args, **kwargs)
File "C:\Users\harsh\AppData\Local\Programs\Python\Python310\lib\site-
packages\pafy\backend_shared.py", line 97, in __init__
self._fetch_basic()
File "C:\Users\harsh\AppData\Local\Programs\Python\Python310\lib\site-
packages\pafy\backend_youtube_dl.py", line 54, in _fetch_basic
self._dislikes = self._ydl_info['dislike_count']
KeyError: 'dislike_count'
请帮我解决这个错误。如果您有任何问题,请提出。
【问题讨论】:
我不确定,但我听说 YouTube 从网页中删除了按钮Dislike
- 所以现在 Pafy
可能也需要更改。所以你可能需要等待更新的版本。
哦,我明白了。但我讨厌 youtube 做出的决定,我的意思是喜欢和不喜欢按钮是判断视频的重要方面。
这与不喜欢按钮无关,Google/youtube 不允许您在脚本中复制他的歌曲。如果您从代码来源中查看 GeeksForGeeks,您会发现 Pafy 是获取有关视频信息的好工具,例如视图..作者..但无法运行链接。你可以使用 url_video = "someYoutubeUrl" webbrowser.open_new(url_video)
感谢您的信息。我一定会试试的
正如@EnriqueBenitoCasado 所说,我尝试过这样做,但它也没有工作,但也给了我一个错误>>> url_video = "https://www.youtube.com/watch?v=dQw4w9WgXcQ" msedge.open_new(url_video) File "<stdin>", line 1 url_video = "https://www.youtube.com/watch?v=dQw4w9WgXcQ" msedge.open_new(url_video) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ SyntaxError: invalid syntax. Perhaps you forgot a comma? >>>
【参考方案1】:
Pafy 如果您想提取有关 youtube 视频的信息,例如检索观看次数、持续时间、评级、作者、缩略图、关键字等元数据,或者以请求的分辨率下载视频或音频,Pafy 是非常有用的工具。 但是播放视频不起作用(至少到现在为止)。 如果您想在代码中播放 Yt 视频,请使用它:
import webbrowser
url = "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
webbrowser.open(url)
【讨论】:
【参考方案2】:youtube 上的不喜欢按钮已设为私有,因此需要对 backend_youtube_dl.py 进行一些修改才能运行 pafy。
导航到 C:\Users\harsh\AppData\Local\Programs\Python\Python310\lib\site- 包\pafy 打开 backend_youtube_dl.py 文件 评论或删除此代码:self._dislikes = self._ydl_info['dislike_count']
除了不喜欢的功能,其他一切都很好。 它对我有用,希望每个人都一样。
【讨论】:
以上是关于使用 python-vlc 和 pafy 的 python 脚本出错的主要内容,如果未能解决你的问题,请参考以下文章
使用url从python流传输youtube音频而无需下载python
pybind11:使用嵌套的 py::dict 和 py::list?