From 0953209a857c51648aee89d205c086b0e1dd3864 Mon Sep 17 00:00:00 2001 From: bashonly <88596187+bashonly@users.noreply.github.com> Date: Wed, 26 Jun 2024 18:57:34 -0500 Subject: [PATCH] [ie/mediasite] Fix extraction (#10273) Fix regression in add96eb9f84cfffe85682bf2fb85135746994ee8 Closes #10270 Authored by: bashonly --- yt_dlp/extractor/mediasite.py | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/yt_dlp/extractor/mediasite.py b/yt_dlp/extractor/mediasite.py index beb12f8a40..ad7ab27e28 100644 --- a/yt_dlp/extractor/mediasite.py +++ b/yt_dlp/extractor/mediasite.py @@ -15,6 +15,7 @@ url_or_none, urljoin, ) +from ..utils.traversal import traverse_obj _ID_RE = r'(?:[0-9a-f]{32,34}|[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12,14})' @@ -212,13 +213,14 @@ def _real_extract(self, url): stream_type, 'type%u' % stream_type) stream_formats = [] - for unum, video_url in enumerate(video_urls): - video_url = url_or_none(video_url.get('Location')) + for unum, video in enumerate(video_urls): + video_url = url_or_none(video.get('Location')) if not video_url: continue # XXX: if Stream.get('CanChangeScheme', False), switch scheme to HTTP/HTTPS - media_type = video_url.get('MediaType') + media_type = video.get('MediaType') + ext = mimetype2ext(video.get('MimeType')) if media_type == 'SS': stream_formats.extend(self._extract_ism_formats( video_url, resource_id, @@ -229,15 +231,20 @@ def _real_extract(self, url): video_url, resource_id, mpd_id=f'{stream_id}-{snum}.{unum}', fatal=False)) + elif ext in ('m3u', 'm3u8'): + stream_formats.extend(self._extract_m3u8_formats( + video_url, resource_id, + m3u8_id=f'{stream_id}-{snum}.{unum}', + fatal=False)) else: stream_formats.append({ 'format_id': f'{stream_id}-{snum}.{unum}', 'url': video_url, - 'ext': mimetype2ext(video_url.get('MimeType')), + 'ext': ext, }) - if stream.get('HasSlideContent', False): - images = player_options['PlayerLayoutOptions']['Images'] + images = traverse_obj(player_options, ('PlayerLayoutOptions', 'Images', {dict})) + if stream.get('HasSlideContent') and images: stream_formats.append(self.__extract_slides( stream_id=stream_id, snum=snum,