|
@@ -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):
|