【PYTHON】如何獲取YouTube混合播放列表?
使用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)旁註:我真的希望這一發現不會被刪除。