diff options
| -rw-r--r-- | youtube_dl/extractor/infoq.py | 24 | 
1 files changed, 13 insertions, 11 deletions
| diff --git a/youtube_dl/extractor/infoq.py b/youtube_dl/extractor/infoq.py index 57c9b0cc4..c3e892feb 100644 --- a/youtube_dl/extractor/infoq.py +++ b/youtube_dl/extractor/infoq.py @@ -8,7 +8,10 @@ from ..compat import (      compat_urllib_parse_unquote,      compat_urlparse,  ) -from ..utils import determine_ext +from ..utils import ( +    determine_ext, +    update_url_query, +)  from .bokecc import BokeCCBaseIE @@ -68,21 +71,22 @@ class InfoQIE(BokeCCBaseIE):              'play_path': playpath,          }] -    def _extract_cookies(self, webpage): +    def _extract_cf_auth(self, webpage):          policy = self._search_regex(r'InfoQConstants\.scp\s*=\s*\'([^\']+)\'', webpage, 'policy')          signature = self._search_regex(r'InfoQConstants\.scs\s*=\s*\'([^\']+)\'', webpage, 'signature')          key_pair_id = self._search_regex(r'InfoQConstants\.sck\s*=\s*\'([^\']+)\'', webpage, 'key-pair-id') -        return 'CloudFront-Policy=%s; CloudFront-Signature=%s; CloudFront-Key-Pair-Id=%s' % ( -            policy, signature, key_pair_id) +        return { +            'Policy': policy, +            'Signature': signature, +            'Key-Pair-Id': key_pair_id, +        }      def _extract_http_video(self, webpage):          http_video_url = self._search_regex(r'P\.s\s*=\s*\'([^\']+)\'', webpage, 'video URL') +        http_video_url = update_url_query(http_video_url, self._extract_cf_auth(webpage))          return [{              'format_id': 'http_video',              'url': http_video_url, -            'http_headers': { -                'Cookie': self._extract_cookies(webpage) -            },          }]      def _extract_http_audio(self, webpage, video_id): @@ -91,22 +95,20 @@ class InfoQIE(BokeCCBaseIE):          if not http_audio_url:              return [] -        cookies_header = {'Cookie': self._extract_cookies(webpage)} -          # base URL is found in the Location header in the response returned by          # GET https://www.infoq.com/mp3download.action?filename=... when logged in.          http_audio_url = compat_urlparse.urljoin('http://res.infoq.com/downloads/mp3downloads/', http_audio_url) +        http_audio_url = update_url_query(http_audio_url, self._extract_cf_auth(webpage))          # audio file seem to be missing some times even if there is a download link          # so probe URL to make sure -        if not self._is_valid_url(http_audio_url, video_id, headers=cookies_header): +        if not self._is_valid_url(http_audio_url, video_id):              return []          return [{              'format_id': 'http_audio',              'url': http_audio_url,              'vcodec': 'none', -            'http_headers': cookies_header,          }]      def _real_extract(self, url): | 
