diff options
author | Tom-Oliver Heidel <github@tom-oliver.eu> | 2020-11-05 17:28:15 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-11-05 17:28:15 +0100 |
commit | adb118da2667522babf2b849a7ad1f5c44b8873b (patch) | |
tree | e668ea6b229746eb2d4c5ecf0bfe09d39d85956a | |
parent | 06a8be981b2f3ebca885103d05dc4d4c533ad548 (diff) | |
parent | 7f4f0b21c26b59a1d621e6407ea2f4ed6c1a98be (diff) | |
download | hypervideo-pre-adb118da2667522babf2b849a7ad1f5c44b8873b.tar.lz hypervideo-pre-adb118da2667522babf2b849a7ad1f5c44b8873b.tar.xz hypervideo-pre-adb118da2667522babf2b849a7ad1f5c44b8873b.zip |
Merge pull request #118 from insaneracist/youtube-music-playlist
[youtube] fix: Youtube Music playlists
-rw-r--r-- | youtube_dlc/extractor/youtube.py | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/youtube_dlc/extractor/youtube.py b/youtube_dlc/extractor/youtube.py index 025ea5e57..3ec2581dc 100644 --- a/youtube_dlc/extractor/youtube.py +++ b/youtube_dlc/extractor/youtube.py @@ -2631,6 +2631,12 @@ class YoutubePlaylistIE(YoutubePlaylistBaseInfoExtractor): _VIDEO_RE_TPL = r'href="\s*/watch\?v=%s(?:&(?:[^"]*?index=(?P<index>\d+))?(?:[^>]+>(?P<title>[^<]+))?)?' _VIDEO_RE = _VIDEO_RE_TPL % r'(?P<id>[0-9A-Za-z_-]{11})' IE_NAME = 'youtube:playlist' + _YTM_PLAYLIST_PREFIX = 'RDCLAK5uy_' + _YTM_CHANNEL_INFO = { + 'uploader': 'Youtube Music', + 'uploader_id': 'music', # or "UC-9-kyTW8ZkZNDHQJ6FgpwQ" + 'uploader_url': 'https://www.youtube.com/music' + } _TESTS = [{ 'url': 'https://www.youtube.com/playlist?list=PL4lCao7KL_QFVb7Iudeipvc2BCavECqzc', 'info_dict': { @@ -2940,6 +2946,8 @@ class YoutubePlaylistIE(YoutubePlaylistBaseInfoExtractor): 'uploader_id': uploader_id, 'uploader_url': uploader_url, }) + if playlist_id.startswith(self._YTM_PLAYLIST_PREFIX): + playlist.update(self._YTM_CHANNEL_INFO) return has_videos, playlist @@ -2970,8 +2978,10 @@ class YoutubePlaylistIE(YoutubePlaylistBaseInfoExtractor): return video if playlist_id.startswith(('RD', 'UL', 'PU')): - # Mixes require a custom extraction process - return self._extract_mix(playlist_id) + if not playlist_id.startswith(self._YTM_PLAYLIST_PREFIX): + # Mixes require a custom extraction process, + # Youtube Music playlists act like normal playlists (with randomized order) + return self._extract_mix(playlist_id) has_videos, playlist = self._extract_playlist(playlist_id) if has_videos or not video_id: |