如何获取 youtube 混合播放列表?

How to get youtube mix playlist?

使用Python 3,我能够得到一个播放列表和一个单独的视频,但我想得到每个用户的混合播放列表(public mix),因为每个用户都看到不同的组合。

我是否应该使用 google auth 对用户进行身份验证,然后像抓取普通播放列表一样抓取混音?如果是这样,如何使用 Youtube 的 API 请求发送授权令牌?我在文档中找不到与混合相关的任何内容。

混音是否有唯一的 URL,我可以使用它来获取它们而无需身份验证?

我目前正在使用 Pafy,它是 Youtube API 的包装器,但该库和官方 API 都没有办法从 Youtube 的混音中获取信息,我的代码如下

def get_youtube_playlist(url):
    playlist = pafy.get_playlist(url)
    for item in playlist['items']:
        return item['pafy'].title

适用于播放列表,不适用于混音。

我认为 YouTube API 没有检索混合播放列表所需的功能 (实际上我找不到任何相关信息) .

说到这里,我想分享一下我的发现:


假设您想要来自视频“Eminem - Lose Yourself (Explicit)”的混音。

这是视频的URL:

Eminem - Lose Yourself (Explicit)

https://www.youtube.com/watch?v=nPA2czkOsFE

如果想获取该视频的混音播放列表,可以修改URL如下:

Mix: Eminem - Lose Yourself (Explicit)

https://www.youtube.com/watch?v=nPA2czkOsFE&start_radio=1&list=RDnPA2czkOsFE

这些附加参数可在 YouTube 生成的混合播放列表中找到。

解释:

  • start_radio=1:不知道,恕我直言,但如果有人能找到任何相关信息,请考虑编辑此问题并添加它。

  • list=RD:恕我直言,此设置表明声明的 videoId 将用于生成混合播放列表 - 通过添加“RD”字母 + videoId.

因此,如果您输入修改后的 URL,您将得到:Mix: Eminem - Lose Yourself (Explicit).


进行更多测试后,我还发现 start_radio=1 不需要使用给定视频“创建”混合播放列表。

换个例子,假设:Ludwig Van Beethoven's 5th Symphony in C Minor (Full):

这是URL:

Ludwig Van Beethoven's 5th Symphony in C Minor (Full)

https://www.youtube.com/watch?v=fOk8Tm815lE

在URL中进行修改后,结果为:

Mix: Ludwig Van Beethoven's 5th Symphony in C Minor (Full)

https://www.youtube.com/watch?v=fOk8Tm815lE&list=RDfOk8Tm815lE

N.B,在这种情况下,不需要 start_radio=1,结果将是:Mix: Ludwig Van Beethoven's 5th Symphony in C Minor (Full)


旁注:我真的希望这个发现不会被删除。