mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-30 22:25:19 +00:00 
			
		
		
		
	[infoq] fix http format downloading
This commit is contained in:
		| @@ -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): | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Remita Amine
					Remita Amine