【PYTHON】如何獲取YouTube混合播放列表?

2021-01-23 PYTHON

使用Python 3,我可以獲得一個播放列表和一個單獨的視訊,但是我想獲取每個使用者的混合播放列表(公共(public)混合),因為每個使用者看到的混合都是不同的。

我是否應該使用google auth對使用者進行身份驗證,然後像抓取普通播放列表一樣抓取混合內容?如果是這樣,如何使用Youtube的API請求傳送身份驗證 token ?我在文件中找不到與混合相關的任何內容。

混音是否有一個唯一的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


    注意,在這種情況下,不需要start_radio=1,結果為:Mix: Ludwig Van Beethoven's 5th Symphony in C Minor (Full)

    旁註:我真的希望這一發現不會被刪除。

    出處

    Have any Question?

    Let us answer it!