使用 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 所说,我尝试过这样做,但它也没有工作,但也给了我一个错误&gt;&gt;&gt; url_video = "https://www.youtube.com/watch?v=dQw4w9WgXcQ" msedge.open_new(url_video) File "&lt;stdin&gt;", line 1 url_video = "https://www.youtube.com/watch?v=dQw4w9WgXcQ" msedge.open_new(url_video) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ SyntaxError: invalid syntax. Perhaps you forgot a comma? &gt;&gt;&gt; 【参考方案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 脚本出错的主要内容,如果未能解决你的问题,请参考以下文章

我如何用 pafy 为进度条制作线程

使用url从python流传输youtube音频而无需下载python

pybind11:使用嵌套的 py::dict 和 py::list?

使用参数和超时同时从另一个 .py 运行多个 .py

pytest学习和使用9-fixture中conftest.py如何使用?

discord.py,同时使用斜杠命令和前缀