diff options
| -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: | 
