From b03c89309eb141be1a1eceeeb7475dd3b7529ad9 Mon Sep 17 00:00:00 2001 From: Nicolas Cisco Date: Wed, 6 Dec 2023 14:55:38 -0300 Subject: [PATCH] [ie/mediastream] Fix authenticated format extraction (#8657) Authored by: NickCis --- yt_dlp/extractor/mediastream.py | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/yt_dlp/extractor/mediastream.py b/yt_dlp/extractor/mediastream.py index b8cb5a691..ae0fb2aed 100644 --- a/yt_dlp/extractor/mediastream.py +++ b/yt_dlp/extractor/mediastream.py @@ -3,8 +3,11 @@ import re from .common import InfoExtractor from ..utils import ( clean_html, + filter_dict, + parse_qs, remove_end, traverse_obj, + update_url_query, urljoin, ) @@ -108,7 +111,9 @@ class MediaStreamIE(MediaStreamBaseIE): for message in [ 'Debido a tu ubicación no puedes ver el contenido', - 'You are not allowed to watch this video: Geo Fencing Restriction' + 'You are not allowed to watch this video: Geo Fencing Restriction', + 'Este contenido no está disponible en tu zona geográfica.', + 'El contenido sólo está disponible dentro de', ]: if message in webpage: self.raise_geo_restricted() @@ -118,7 +123,16 @@ class MediaStreamIE(MediaStreamBaseIE): formats, subtitles = [], {} for video_format in player_config['src']: if video_format == 'hls': - fmts, subs = self._extract_m3u8_formats_and_subtitles(player_config['src'][video_format], video_id) + params = { + 'at': 'web-app', + 'access_token': traverse_obj(parse_qs(url), ('access_token', 0)), + } + for name, key in (('MDSTRMUID', 'uid'), ('MDSTRMSID', 'sid'), ('MDSTRMPID', 'pid'), ('VERSION', 'av')): + params[key] = self._search_regex( + rf'window\.{name}\s*=\s*["\']([^"\']+)["\'];', webpage, key, default=None) + + fmts, subs = self._extract_m3u8_formats_and_subtitles( + update_url_query(player_config['src'][video_format], filter_dict(params)), video_id) formats.extend(fmts) self._merge_subtitles(subs, target=subtitles) elif video_format == 'mpd':