[ie/mgtv] Fix VIP stream extraction (#16982)

Authored by: longcharmroeun
This commit is contained in:
Longcharmroeun 2026-06-27 05:55:42 +07:00 committed by GitHub
parent f69e64a954
commit 6b67e1f2b7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -9,6 +9,7 @@ from ..utils import (
int_or_none, int_or_none,
parse_resolution, parse_resolution,
traverse_obj, traverse_obj,
try_call,
try_get, try_get,
url_or_none, url_or_none,
urljoin, urljoin,
@ -94,12 +95,18 @@ class MGTVIE(InfoExtractor):
raise raise
stream_data = self._download_json( stream_data = self._download_json(
'https://pcweb.api.mgtv.com/player/getSource', video_id, query={ 'https://tinker.glb.mgtv.com/player/getSource', video_id, query={
'_support': '10000000',
'tk2': tk2, 'tk2': tk2,
'pm2': api_data['atc']['pm2'], 'pm2': api_data['atc']['pm2'],
'video_id': video_id, 'video_id': video_id,
'type': 'pch5', 'type': 'pch5',
'auth_mode': '1',
'cxid': '',
'supportMse': '1',
'src': 'intelmgtv', 'src': 'intelmgtv',
'abroad': try_call(lambda: self._get_cookies('https://www.mgtv.com')['abroad'].value) or '10',
'allowedRC': '1',
}, headers=self.geo_verification_headers())['data'] }, headers=self.geo_verification_headers())['data']
stream_domain = traverse_obj(stream_data, ('stream_domain', ..., {url_or_none}), get_all=False) stream_domain = traverse_obj(stream_data, ('stream_domain', ..., {url_or_none}), get_all=False)
@ -110,7 +117,8 @@ class MGTVIE(InfoExtractor):
self._RESOLUTIONS, (stream_name, 1 if stream.get('scale') == '16:9' else 0)) self._RESOLUTIONS, (stream_name, 1 if stream.get('scale') == '16:9' else 0))
format_url = traverse_obj(self._download_json( format_url = traverse_obj(self._download_json(
urljoin(stream_domain, stream['url']), video_id, fatal=False, urljoin(stream_domain, stream['url']), video_id, fatal=False,
note=f'Downloading video info for format {resolution or stream_name}'), note=f'Downloading video info for format {resolution or stream_name}',
headers=self.geo_verification_headers()),
('info', {url_or_none})) ('info', {url_or_none}))
if not format_url: if not format_url:
continue continue