aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey M․ <dstftw@gmail.com>2018-02-10 00:55:11 +0700
committerSergey M․ <dstftw@gmail.com>2018-02-10 00:55:11 +0700
commit9d5871fdffb945bf6084a4c30816c6917abd875b (patch)
tree33540413cc5a8cb3217fd845c7c4ce1385de3514
parentff873b577721f04e5b5d5bacb23ea94f9103bd46 (diff)
[discovery] Fix auth request (closes #15542)
-rw-r--r--youtube_dl/extractor/discovery.py22
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: