[ie/ertgr] Fix video extraction (#11091)

Closes #8955
Authored by: seproDev
This commit is contained in:
sepro 2024-09-26 18:35:19 +02:00 committed by GitHub
parent b37417e4f9
commit 416686ed0c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -17,6 +17,7 @@ from ..utils import (
url_or_none, url_or_none,
variadic, variadic,
) )
from ..utils.traversal import traverse_obj
class ERTFlixBaseIE(InfoExtractor): class ERTFlixBaseIE(InfoExtractor):
@ -74,18 +75,17 @@ class ERTFlixCodenameIE(ERTFlixBaseIE):
def _extract_formats_and_subs(self, video_id): def _extract_formats_and_subs(self, video_id):
media_info = self._call_api(video_id, codename=video_id) media_info = self._call_api(video_id, codename=video_id)
formats, subs = [], {} formats, subtitles = [], {}
for media_file in try_get(media_info, lambda x: x['MediaFiles'], list) or []: for media in traverse_obj(media_info, (
for media in try_get(media_file, lambda x: x['Formats'], list) or []: 'MediaFiles', lambda _, v: v['RoleCodename'] == 'main',
fmt_url = url_or_none(try_get(media, lambda x: x['Url'])) 'Formats', lambda _, v: url_or_none(v['Url']))):
if not fmt_url: fmt_url = media['Url']
continue
ext = determine_ext(fmt_url) ext = determine_ext(fmt_url)
if ext == 'm3u8': if ext == 'm3u8':
formats_, subs_ = self._extract_m3u8_formats_and_subtitles( fmts, subs = self._extract_m3u8_formats_and_subtitles(
fmt_url, video_id, m3u8_id='hls', ext='mp4', fatal=False) fmt_url, video_id, m3u8_id='hls', ext='mp4', fatal=False)
elif ext == 'mpd': elif ext == 'mpd':
formats_, subs_ = self._extract_mpd_formats_and_subtitles( fmts, subs = self._extract_mpd_formats_and_subtitles(
fmt_url, video_id, mpd_id='dash', fatal=False) fmt_url, video_id, mpd_id='dash', fatal=False)
else: else:
formats.append({ formats.append({
@ -93,10 +93,10 @@ class ERTFlixCodenameIE(ERTFlixBaseIE):
'format_id': str_or_none(media.get('Id')), 'format_id': str_or_none(media.get('Id')),
}) })
continue continue
formats.extend(formats_) formats.extend(fmts)
self._merge_subtitles(subs_, target=subs) self._merge_subtitles(subs, target=subtitles)
return formats, subs return formats, subtitles
def _real_extract(self, url): def _real_extract(self, url):
video_id = self._match_id(url) video_id = self._match_id(url)