使用yt_dlp获取Youtube音频流,而不是使用pafy



我做了一个GUI youtube音频播放器。它使用pafy,一个获取给定youtube url的流url的库。这是美妙的,但党有两个问题;一个是,至少半年以来,它有一个错误,因为它试图获得YouTube的不喜欢计数(这不起作用),它使用的是youtube_dl库,它不能处理大约一半的视频。我的解决方法是稍微改变一下游戏代码,这非常有效,但这使得与他人分享我的代码变得非常复杂。所以我需要一个更好的解决方法。如果有任何关于这方面的建议,我将不胜感激。

我的想法是,从相关的部分中取出代码,并将其直接放入我的代码中。问题是,我觉得派码有点超出我的理解范围。一个原因是我对面向对象编程了解不多,所以它有点复杂。

Pafy通常使用youtube_dl,但我发现yt_dlp是一个更好的库。我相信用yt_dlp获得audiostreams是可能的,但是我不知道怎么做。

音频流列表就是我所需要的。

下面是一个使用yt-dlp的解决方案。它获取有关视频的所有信息,然后打印出所有可用格式的url。这就是你要找的吗?

import yt_dlp
URL = 'https://www.youtube.com/watch?v=CH50zuS8DD0'
ydl_opts = {}
with yt_dlp.YoutubeDL(ydl_opts) as ydl:
# get all information about the youtube video
info = ydl.extract_info(URL, download=False)

formats = info['formats']
print(f"Found {len(formats)} formats")
# iterate through all of the available formats
for i,format in enumerate(formats):
# print the url
url = format['url']
print(f"{i}) {url}")
# each format has many other attributes. You can do print(format.keys()) to see all possibilities

您可以查看https://github.com/yt-dlp/yt-dlp#embedding-examples以获取更多yt-dlp python示例。

编辑:需要查看返回有效负载的'格式'部分,而不是' requestd_formats ',以实际获取所有可用的格式

最新更新