aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbashonly <88596187+bashonly@users.noreply.github.com>2024-06-29 10:43:55 -0500
committerGitHub <noreply@github.com>2024-06-29 15:43:55 +0000
commit61edf57f8f13f6dfd81154174e647eb5fdd26089 (patch)
treed9b1b19a657a2700c4c1ee4907d0a802da4f4707
parent5b1a2aa978d0074cee278e7659f32f52ecc4ab53 (diff)
[ie/mlbtv] Fix extraction (#10296)
Closes #10275 Authored by: bashonly
-rw-r--r--yt_dlp/extractor/mlb.py18
1 files changed, 12 insertions, 6 deletions
diff --git a/yt_dlp/extractor/mlb.py b/yt_dlp/extractor/mlb.py
index 8a693dc0b..6f67602a6 100644
--- a/yt_dlp/extractor/mlb.py
+++ b/yt_dlp/extractor/mlb.py
@@ -9,9 +9,10 @@ from ..utils import (
join_nonempty,
parse_duration,
parse_iso8601,
- traverse_obj,
try_get,
+ url_or_none,
)
+from ..utils.traversal import traverse_obj
class MLBBaseIE(InfoExtractor):
@@ -326,15 +327,20 @@ class MLBTVIE(InfoExtractor):
video_id)['data']['Airings']
formats, subtitles = [], {}
- for airing in airings:
- m3u8_url = self._download_json(
+ for airing in traverse_obj(airings, lambda _, v: v['playbackUrls'][0]['href']):
+ format_id = join_nonempty('feedType', 'feedLanguage', from_dict=airing)
+ m3u8_url = traverse_obj(self._download_json(
airing['playbackUrls'][0]['href'].format(scenario='browser~csai'), video_id,
- headers={
+ note=f'Downloading {format_id} stream info JSON',
+ errnote=f'Failed to download {format_id} stream info, skipping',
+ fatal=False, headers={
'Authorization': self._access_token,
'Accept': 'application/vnd.media-service+json; version=2',
- })['stream']['complete']
+ }), ('stream', 'complete', {url_or_none}))
+ if not m3u8_url:
+ continue
f, s = self._extract_m3u8_formats_and_subtitles(
- m3u8_url, video_id, 'mp4', m3u8_id=join_nonempty(airing.get('feedType'), airing.get('feedLanguage')))
+ m3u8_url, video_id, 'mp4', m3u8_id=format_id, fatal=False)
formats.extend(f)
self._merge_subtitles(s, target=subtitles)