diff --git a/youtube_dl/extractor/youtube.py b/youtube_dl/extractor/youtube.py index edcdc7b88..24d07d2ea 100644 --- a/youtube_dl/extractor/youtube.py +++ b/youtube_dl/extractor/youtube.py @@ -2767,6 +2767,7 @@ class YoutubePlaylistIE(YoutubePlaylistBaseInfoExtractor): ids_in_page = [] titles_in_page = [] durations_in_page = [] + playlist_video_id_in_page = [] for item in re.findall( r'(<[^>]*\bdata-video-id\s*=\s*["\'][0-9A-Za-z_-]{11}[^>]+>)', page): @@ -2779,20 +2780,21 @@ class YoutubePlaylistIE(YoutubePlaylistBaseInfoExtractor): titles_in_page.append(video_title) # TODO: ADD VIDEO DURATION HERE TOO? durations_in_page.append(None) + playlist_video_id_in_page.append(None) # Fallback with old _VIDEO_RE self.extract_videos_from_page_impl( - self._VIDEO_RE, page, ids_in_page, titles_in_page, durations_in_page) + self._VIDEO_RE, page, ids_in_page, titles_in_page, durations_in_page, playlist_video_id_in_page) # Relaxed fallbacks self.extract_videos_from_page_impl( r'href="\s*/watch\?v\s*=\s*(?P[0-9A-Za-z_-]{11})', page, - ids_in_page, titles_in_page, durations_in_page) + ids_in_page, titles_in_page, durations_in_page, playlist_video_id_in_page) self.extract_videos_from_page_impl( r'data-video-ids\s*=\s*["\'](?P[0-9A-Za-z_-]{11})', page, - ids_in_page, titles_in_page, durations_in_page) + ids_in_page, titles_in_page, durations_in_page, playlist_video_id_in_page) - return zip(ids_in_page, titles_in_page, durations_in_page) + return zip(ids_in_page, titles_in_page, durations_in_page, playlist_video_id_in_page) def _extract_mix(self, playlist_id): # The mixes are generated from a single video