mirror of
https://github.com/ytdl-org/youtube-dl.git
synced 2024-12-21 12:34:08 +00:00
[discovery] Fix auth request (closes #15542)
This commit is contained in:
parent
ff873b5777
commit
9d5871fdff
@ -5,15 +5,16 @@ import re
|
|||||||
import string
|
import string
|
||||||
|
|
||||||
from .discoverygo import DiscoveryGoBaseIE
|
from .discoverygo import DiscoveryGoBaseIE
|
||||||
|
from ..compat import compat_str
|
||||||
from ..utils import (
|
from ..utils import (
|
||||||
ExtractorError,
|
ExtractorError,
|
||||||
update_url_query,
|
try_get,
|
||||||
)
|
)
|
||||||
from ..compat import compat_HTTPError
|
from ..compat import compat_HTTPError
|
||||||
|
|
||||||
|
|
||||||
class DiscoveryIE(DiscoveryGoBaseIE):
|
class DiscoveryIE(DiscoveryGoBaseIE):
|
||||||
_VALID_URL = r'''(?x)https?://(?:www\.)?(?:
|
_VALID_URL = r'''(?x)https?://(?:www\.)?(?P<site>
|
||||||
discovery|
|
discovery|
|
||||||
investigationdiscovery|
|
investigationdiscovery|
|
||||||
discoverylife|
|
discoverylife|
|
||||||
@ -44,7 +45,7 @@ class DiscoveryIE(DiscoveryGoBaseIE):
|
|||||||
_GEO_BYPASS = False
|
_GEO_BYPASS = False
|
||||||
|
|
||||||
def _real_extract(self, url):
|
def _real_extract(self, url):
|
||||||
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)
|
||||||
|
|
||||||
react_data = self._parse_json(self._search_regex(
|
react_data = self._parse_json(self._search_regex(
|
||||||
@ -55,14 +56,13 @@ class DiscoveryIE(DiscoveryGoBaseIE):
|
|||||||
video_id = video['id']
|
video_id = video['id']
|
||||||
|
|
||||||
access_token = self._download_json(
|
access_token = self._download_json(
|
||||||
'https://www.discovery.com/anonymous', display_id, query={
|
'https://www.%s.com/anonymous' % site, display_id, query={
|
||||||
'authLink': update_url_query(
|
'authRel': 'authorization',
|
||||||
'https://login.discovery.com/v1/oauth2/authorize', {
|
'client_id': try_get(
|
||||||
'client_id': react_data['application']['apiClientId'],
|
react_data, lambda x: x['application']['apiClientId'],
|
||||||
'redirect_uri': 'https://fusion.ddmcdn.com/app/mercury-sdk/180/redirectHandler.html',
|
compat_str) or '3020a40c2356a645b4b4',
|
||||||
'response_type': 'anonymous',
|
'nonce': ''.join([random.choice(string.ascii_letters) for _ in range(32)]),
|
||||||
'state': '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,
|
||||||
})
|
|
||||||
})['access_token']
|
})['access_token']
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
Loading…
Reference in New Issue
Block a user