1
0
Fork 0
mirror of https://github.com/yt-dlp/yt-dlp.git synced 2025-05-13 16:35:43 -05:00

[extractor/echo360] read in mediaPlayerBootstrapApp json instead of

searching for single elements
This commit is contained in:
c0d3d3v 2023-03-12 00:10:24 +01:00
parent a2e9c5ba97
commit 577df3dbf1
No known key found for this signature in database
GPG key ID: 068AF680530DFF31

View file

@ -108,29 +108,22 @@ def _real_extract(self, url):
host, video_id = self._match_valid_url(url).group('host', 'id')
webpage = self._download_webpage(url, video_id)
media_id = self._search_regex(rf'\\"mediaId\\":\\"({Echo360BaseIE._UUID_RE})\\"', webpage, 'media id')
session_id = self._search_regex(rf'\\"sessionId\\":\\"({Echo360BaseIE._UUID_RE})\\"', webpage, 'session id')
player_config = self._parse_json(self._search_regex(
r'Echo\["mediaPlayerBootstrapApp"\]\("({[^}]*})"\);', webpage, 'player config').replace('\\"', "\""),
video_id)
share_link_id = self._search_regex(
rf'\\"shareLinkId\\":\\"({Echo360BaseIE._UUID_RE})\\"', webpage,
'share link id', default=None, fatal=False)
public_link_id = self._search_regex(
rf'\\"publicLinkId\\":\\"({Echo360BaseIE._UUID_RE})\\"', webpage,
'public link id', default=None, fatal=False)
real_video_id = share_link_id or public_link_id
real_video_id = player_config.get('shareLinkId') or player_config.get('publicLinkId')
if real_video_id is None:
raise ExtractorError('Video id was not found')
urlh = self._request_webpage(
f'https://{host}/api/ui/sessions/{session_id}',
f'https://{host}/api/ui/sessions/{player_config["sessionId"]}',
video_id,
note='Open video session',
errnote='Unable to open video session',
)
session_token = urlh.headers.get('Token')
if session_token is None:
raise ExtractorError('Video session could not be opened')
raise ExtractorError('No session token received')
return self._parse_mediapackage(self._call_api(host, real_video_id, media_id, session_token)['data'])
return self._parse_mediapackage(self._call_api(host, real_video_id, player_config['mediaId'], session_token)['data'])