我正在尝试使用 youtube_dl 检索 youtube 上纯音频文件的链接。我想知道是否有可能这样做。我在 python 代码中使用 youtube_dl 而不是终端。
非常感谢
请您参考如下方法:
只有极少数 websites supported by youtube-dl实际上提供纯音频文件。但有些确实如此,包括 YouTube 上的大多数视频。对于这些,您可以请求文件类型 bestaudio 并提取信息而不是下载:
from __future__ import unicode_literals
import youtube_dl
ydl_opts = {
'format': 'bestaudio',
}
with youtube_dl.YoutubeDL(ydl_opts) as ydl:
info = ydl.extract_info(
'https://www.youtube.com/watch?v=BaW_jenozKc', download=False)
print(info['formats'][0]['url'])
请注意,这将为您提供正确的 URL。但是,如果您更改以下任何内容,则无法保证此 URL 会有效:
- 使用该 URL 的 IP 地址(换句话说,如果您将此 URL 转移到另一台机器并尝试从那里下载,它将无法工作)。
- HTTP header (User-Agent 等)。可以在格式字典的
http_headers键中找到。 - cookie(可以在
ydl.cookiejar中找到)。
必须满足这些限制中的哪一个取决于视频,并且可能会突然发生变化。例如,目前看来该 URL 对于许多 YouTube 视频来说已经足够了,但随着时间的推移,YouTube 肯定已经屏蔽了其他 IPv4 地址,甚至屏蔽了某些视频的所有不同 IP 地址,或者仅屏蔽了音乐和其他高度盈利的视频。
另请注意,您将获得的文件格式可能很奇怪。例如,YouTube 过去常常发送大多数播放器无法读取的无效 m4a 文件。你会经常得到 opus ,可能并非所有地方都支持。如果你只想要音频文件,最好让 youtube-dl 下载并转换它,如 documentation 中所述。和其他答案。
