|
@@ -1712,30 +1712,36 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
|
|
|
else:
|
|
|
video_description = ''
|
|
|
|
|
|
- if 'multifeed_metadata_list' in video_info and not smuggled_data.get('force_singlefeed', False):
|
|
|
+ if not smuggled_data.get('force_singlefeed', False):
|
|
|
if not self._downloader.params.get('noplaylist'):
|
|
|
- entries = []
|
|
|
- feed_ids = []
|
|
|
- multifeed_metadata_list = video_info['multifeed_metadata_list'][0]
|
|
|
- for feed in multifeed_metadata_list.split(','):
|
|
|
- # Unquote should take place before split on comma (,) since textual
|
|
|
- # fields may contain comma as well (see
|
|
|
- # https://github.com/rg3/youtube-dl/issues/8536)
|
|
|
- feed_data = compat_parse_qs(compat_urllib_parse_unquote_plus(feed))
|
|
|
- entries.append({
|
|
|
- '_type': 'url_transparent',
|
|
|
- 'ie_key': 'Youtube',
|
|
|
- 'url': smuggle_url(
|
|
|
- '%s://www.youtube.com/watch?v=%s' % (proto, feed_data['id'][0]),
|
|
|
- {'force_singlefeed': True}),
|
|
|
- 'title': '%s (%s)' % (video_title, feed_data['title'][0]),
|
|
|
- })
|
|
|
- feed_ids.append(feed_data['id'][0])
|
|
|
- self.to_screen(
|
|
|
- 'Downloading multifeed video (%s) - add --no-playlist to just download video %s'
|
|
|
- % (', '.join(feed_ids), video_id))
|
|
|
- return self.playlist_result(entries, video_id, video_title, video_description)
|
|
|
- self.to_screen('Downloading just video %s because of --no-playlist' % video_id)
|
|
|
+ multifeed_metadata_list = try_get(
|
|
|
+ player_response,
|
|
|
+ lambda x: x['multicamera']['playerLegacyMulticameraRenderer']['metadataList'],
|
|
|
+ compat_str) or try_get(
|
|
|
+ video_info, lambda x: x['multifeed_metadata_list'][0], compat_str)
|
|
|
+ if multifeed_metadata_list:
|
|
|
+ entries = []
|
|
|
+ feed_ids = []
|
|
|
+ for feed in multifeed_metadata_list.split(','):
|
|
|
+ # Unquote should take place before split on comma (,) since textual
|
|
|
+ # fields may contain comma as well (see
|
|
|
+ # https://github.com/rg3/youtube-dl/issues/8536)
|
|
|
+ feed_data = compat_parse_qs(compat_urllib_parse_unquote_plus(feed))
|
|
|
+ entries.append({
|
|
|
+ '_type': 'url_transparent',
|
|
|
+ 'ie_key': 'Youtube',
|
|
|
+ 'url': smuggle_url(
|
|
|
+ '%s://www.youtube.com/watch?v=%s' % (proto, feed_data['id'][0]),
|
|
|
+ {'force_singlefeed': True}),
|
|
|
+ 'title': '%s (%s)' % (video_title, feed_data['title'][0]),
|
|
|
+ })
|
|
|
+ feed_ids.append(feed_data['id'][0])
|
|
|
+ self.to_screen(
|
|
|
+ 'Downloading multifeed video (%s) - add --no-playlist to just download video %s'
|
|
|
+ % (', '.join(feed_ids), video_id))
|
|
|
+ return self.playlist_result(entries, video_id, video_title, video_description)
|
|
|
+ else:
|
|
|
+ self.to_screen('Downloading just video %s because of --no-playlist' % video_id)
|
|
|
|
|
|
if view_count is None:
|
|
|
view_count = extract_view_count(video_info)
|