|
|
@ -264,7 +264,7 @@ class YoutubeIE(YoutubeBaseInfoExtractor): |
|
|
|
) |
|
|
|
)? # all until now is optional -> you can pass the naked ID |
|
|
|
([0-9A-Za-z_-]{11}) # here is it! the YouTube video ID |
|
|
|
(?!.*?&list=) # combined list/video URLs are handled by the playlist IE |
|
|
|
(?!.*?\blist=) # combined list/video URLs are handled by the playlist IE |
|
|
|
(?(1).+)? # if we found the ID, everything can follow |
|
|
|
$""" |
|
|
|
_NEXT_URL_RE = r'[\?&]next_url=([^&]+)' |
|
|
@ -1778,11 +1778,14 @@ class YoutubePlaylistIE(YoutubePlaylistBaseInfoExtractor): |
|
|
|
_VALID_URL = r"""(?x)(?: |
|
|
|
(?:https?://)? |
|
|
|
(?:\w+\.)? |
|
|
|
youtube\.com/ |
|
|
|
(?: |
|
|
|
(?:course|view_play_list|my_playlists|artist|playlist|watch|embed/videoseries) |
|
|
|
\? (?:.*?[&;])*? (?:p|a|list)= |
|
|
|
| p/ |
|
|
|
youtube\.com/ |
|
|
|
(?: |
|
|
|
(?:course|view_play_list|my_playlists|artist|playlist|watch|embed/videoseries) |
|
|
|
\? (?:.*?[&;])*? (?:p|a|list)= |
|
|
|
| p/ |
|
|
|
)| |
|
|
|
youtu\.be/[0-9A-Za-z_-]{11}\?.*?\blist= |
|
|
|
) |
|
|
|
( |
|
|
|
(?:PL|LL|EC|UU|FL|RD|UL)?[0-9A-Za-z-_]{10,} |
|
|
@ -1887,6 +1890,9 @@ class YoutubePlaylistIE(YoutubePlaylistBaseInfoExtractor): |
|
|
|
'skip_download': True, |
|
|
|
}, |
|
|
|
'add_ie': [YoutubeIE.ie_key()], |
|
|
|
}, { |
|
|
|
'url': 'https://youtu.be/uWyaPkt-VOI?list=PL9D9FC436B881BA21', |
|
|
|
'only_matching': True, |
|
|
|
}] |
|
|
|
|
|
|
|
def _real_initialize(self): |
|
|
|