|
|
@ -1851,7 +1851,7 @@ class YoutubePlaylistIE(YoutubePlaylistBaseInfoExtractor):
|
|
|
|
(?:
|
|
|
|
(?:
|
|
|
|
youtube\.com/
|
|
|
|
youtube\.com/
|
|
|
|
(?:
|
|
|
|
(?:
|
|
|
|
(?:course|view_play_list|my_playlists|artist|playlist|watch|embed/videoseries)
|
|
|
|
(?:course|view_play_list|my_playlists|artist|playlist|watch|embed/(?:videoseries|[0-9A-Za-z_-]{11}))
|
|
|
|
\? (?:.*?[&;])*? (?:p|a|list)=
|
|
|
|
\? (?:.*?[&;])*? (?:p|a|list)=
|
|
|
|
| p/
|
|
|
|
| p/
|
|
|
|
)|
|
|
|
|
)|
|
|
|
@ -1924,6 +1924,13 @@ class YoutubePlaylistIE(YoutubePlaylistBaseInfoExtractor):
|
|
|
|
'title': 'JODA15',
|
|
|
|
'title': 'JODA15',
|
|
|
|
'id': 'PL6IaIsEjSbf96XFRuNccS_RuEXwNdsoEu',
|
|
|
|
'id': 'PL6IaIsEjSbf96XFRuNccS_RuEXwNdsoEu',
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}, {
|
|
|
|
|
|
|
|
'url': 'http://www.youtube.com/embed/_xDOZElKyNU?list=PLsyOSbh5bs16vubvKePAQ1x3PhKavfBIl',
|
|
|
|
|
|
|
|
'playlist_mincount': 485,
|
|
|
|
|
|
|
|
'info_dict': {
|
|
|
|
|
|
|
|
'title': '2017 華語最新單曲 (2/24更新)',
|
|
|
|
|
|
|
|
'id': 'PLsyOSbh5bs16vubvKePAQ1x3PhKavfBIl',
|
|
|
|
|
|
|
|
}
|
|
|
|
}, {
|
|
|
|
}, {
|
|
|
|
'note': 'Embedded SWF player',
|
|
|
|
'note': 'Embedded SWF player',
|
|
|
|
'url': 'https://www.youtube.com/p/YN5VISEtHet5D4NEvfTd0zcgFk84NqFZ?hl=en_US&fs=1&rel=0',
|
|
|
|
'url': 'https://www.youtube.com/p/YN5VISEtHet5D4NEvfTd0zcgFk84NqFZ?hl=en_US&fs=1&rel=0',
|
|
|
@ -2072,7 +2079,7 @@ class YoutubePlaylistIE(YoutubePlaylistBaseInfoExtractor):
|
|
|
|
# Check if it's a video-specific URL
|
|
|
|
# Check if it's a video-specific URL
|
|
|
|
query_dict = compat_urlparse.parse_qs(compat_urlparse.urlparse(url).query)
|
|
|
|
query_dict = compat_urlparse.parse_qs(compat_urlparse.urlparse(url).query)
|
|
|
|
video_id = query_dict.get('v', [None])[0] or self._search_regex(
|
|
|
|
video_id = query_dict.get('v', [None])[0] or self._search_regex(
|
|
|
|
r'(?:^|//)youtu\.be/([0-9A-Za-z_-]{11})', url,
|
|
|
|
r'(?:(?:^|//)youtu\.be/|youtube\.com/embed/(?!videoseries))([0-9A-Za-z_-]{11})', url,
|
|
|
|
'video id', default=None)
|
|
|
|
'video id', default=None)
|
|
|
|
if video_id:
|
|
|
|
if video_id:
|
|
|
|
if self._downloader.params.get('noplaylist'):
|
|
|
|
if self._downloader.params.get('noplaylist'):
|
|
|
|