diff options
author | Sergey M․ <dstftw@gmail.com> | 2018-02-10 00:55:11 +0700 |
---|---|---|
committer | Sergey M․ <dstftw@gmail.com> | 2018-02-10 00:55:11 +0700 |
commit | 9d5871fdffb945bf6084a4c30816c6917abd875b (patch) | |
tree | 33540413cc5a8cb3217fd845c7c4ce1385de3514 | |
parent | ff873b577721f04e5b5d5bacb23ea94f9103bd46 (diff) |
[discovery] Fix auth request (closes #15542)
-rw-r--r-- | youtube_dl/extractor/discovery.py | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/youtube_dl/extractor/discovery.py b/youtube_dl/extractor/discovery.py index f9cec1d23..91449dcd8 100644 --- a/youtube_dl/extractor/discovery.py +++ b/youtube_dl/extractor/discovery.py @@ -5,15 +5,16 @@ import re import string from .discoverygo import DiscoveryGoBaseIE +from ..compat import compat_str from ..utils import ( ExtractorError, - update_url_query, + try_get, ) from ..compat import compat_HTTPError class DiscoveryIE(DiscoveryGoBaseIE): - _VALID_URL = r'''(?x)https?://(?:www\.)?(?: + _VALID_URL = r'''(?x)https?://(?:www\.)?(?P<site> discovery| investigationdiscovery| discoverylife| @@ -44,7 +45,7 @@ class DiscoveryIE(DiscoveryGoBaseIE): _GEO_BYPASS = False 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) react_data = self._parse_json(self._search_regex( @@ -55,14 +56,13 @@ class DiscoveryIE(DiscoveryGoBaseIE): video_id = video['id'] access_token = self._download_json( - 'https://www.discovery.com/anonymous', display_id, query={ - 'authLink': update_url_query( - 'https://login.discovery.com/v1/oauth2/authorize', { - 'client_id': react_data['application']['apiClientId'], - 'redirect_uri': 'https://fusion.ddmcdn.com/app/mercury-sdk/180/redirectHandler.html', - 'response_type': 'anonymous', - 'state': 'nonce,' + ''.join([random.choice(string.ascii_letters) for _ in range(32)]), - }) + 'https://www.%s.com/anonymous' % site, display_id, query={ + 'authRel': 'authorization', + 'client_id': try_get( + react_data, lambda x: x['application']['apiClientId'], + compat_str) or '3020a40c2356a645b4b4', + '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'] try: |