[discovery] Add support for --geo-verification-proxy
This commit is contained in:
parent
5d90a8a5f3
commit
2d869afc7e
@ -49,7 +49,7 @@ class DiscoveryIE(DiscoveryGoBaseIE):
|
|||||||
|
|
||||||
def _real_extract(self, url):
|
def _real_extract(self, url):
|
||||||
site, path, display_id = re.match(self._VALID_URL, url).groups()
|
site, path, display_id = re.match(self._VALID_URL, url).groups()
|
||||||
webpage = self._download_webpage(url, display_id)
|
webpage = self._download_webpage(url, display_id, headers=self.geo_verification_headers())
|
||||||
|
|
||||||
react_data = self._parse_json(self._search_regex(
|
react_data = self._parse_json(self._search_regex(
|
||||||
r'window\.__reactTransmitPacket\s*=\s*({.+?});',
|
r'window\.__reactTransmitPacket\s*=\s*({.+?});',
|
||||||
@ -78,14 +78,17 @@ class DiscoveryIE(DiscoveryGoBaseIE):
|
|||||||
compat_str) or '3020a40c2356a645b4b4',
|
compat_str) or '3020a40c2356a645b4b4',
|
||||||
'nonce': ''.join([random.choice(string.ascii_letters) for _ in range(32)]),
|
'nonce': ''.join([random.choice(string.ascii_letters) for _ in range(32)]),
|
||||||
'redirectUri': 'https://fusion.ddmcdn.com/app/mercury-sdk/180/redirectHandler.html?https://www.%s.com' % site,
|
'redirectUri': 'https://fusion.ddmcdn.com/app/mercury-sdk/180/redirectHandler.html?https://www.%s.com' % site,
|
||||||
})['access_token']
|
}, headers=self.geo_verification_headers())['access_token']
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
headers = self.geo_verification_headers()
|
||||||
|
headers.update({
|
||||||
|
'Authorization': 'Bearer ' + access_token,
|
||||||
|
})
|
||||||
|
|
||||||
stream = self._download_json(
|
stream = self._download_json(
|
||||||
'https://api.discovery.com/v1/streaming/video/' + video_id,
|
'https://api.discovery.com/v1/streaming/video/' + video_id,
|
||||||
display_id, headers={
|
display_id, headers=headers)
|
||||||
'Authorization': 'Bearer ' + access_token,
|
|
||||||
})
|
|
||||||
except ExtractorError as e:
|
except ExtractorError as e:
|
||||||
if isinstance(e.cause, compat_HTTPError) and e.cause.code in (401, 403):
|
if isinstance(e.cause, compat_HTTPError) and e.cause.code in (401, 403):
|
||||||
e_description = self._parse_json(
|
e_description = self._parse_json(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user