mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 14:45:14 +00:00 
			
		
		
		
	[core] Deprecate internal Youtubedl-no-compression header (#6876)
				
					
				
			Authored by: coletdjnz
This commit is contained in:
		| @@ -2380,7 +2380,9 @@ class YoutubeDL: | |||||||
| 
 | 
 | ||||||
|     def _calc_headers(self, info_dict): |     def _calc_headers(self, info_dict): | ||||||
|         res = merge_headers(self.params['http_headers'], info_dict.get('http_headers') or {}) |         res = merge_headers(self.params['http_headers'], info_dict.get('http_headers') or {}) | ||||||
| 
 |         if 'Youtubedl-No-Compression' in res:  # deprecated | ||||||
|  |             res.pop('Youtubedl-No-Compression', None) | ||||||
|  |             res['Accept-Encoding'] = 'identity' | ||||||
|         cookies = self._calc_cookies(info_dict['url']) |         cookies = self._calc_cookies(info_dict['url']) | ||||||
|         if cookies: |         if cookies: | ||||||
|             res['Cookie'] = cookies |             res['Cookie'] = cookies | ||||||
|   | |||||||
| @@ -23,7 +23,6 @@ from ..utils import ( | |||||||
|     encodeArgument, |     encodeArgument, | ||||||
|     encodeFilename, |     encodeFilename, | ||||||
|     find_available_port, |     find_available_port, | ||||||
|     handle_youtubedl_headers, |  | ||||||
|     remove_end, |     remove_end, | ||||||
|     sanitized_Request, |     sanitized_Request, | ||||||
|     traverse_obj, |     traverse_obj, | ||||||
| @@ -529,10 +528,9 @@ class FFmpegFD(ExternalFD): | |||||||
|         selected_formats = info_dict.get('requested_formats') or [info_dict] |         selected_formats = info_dict.get('requested_formats') or [info_dict] | ||||||
|         for i, fmt in enumerate(selected_formats): |         for i, fmt in enumerate(selected_formats): | ||||||
|             if fmt.get('http_headers') and re.match(r'^https?://', fmt['url']): |             if fmt.get('http_headers') and re.match(r'^https?://', fmt['url']): | ||||||
|                 headers_dict = handle_youtubedl_headers(fmt['http_headers']) |  | ||||||
|                 # Trailing \r\n after each HTTP header is important to prevent warning from ffmpeg/avconv: |                 # Trailing \r\n after each HTTP header is important to prevent warning from ffmpeg/avconv: | ||||||
|                 # [http @ 00000000003d2fa0] No trailing CRLF found in HTTP header. |                 # [http @ 00000000003d2fa0] No trailing CRLF found in HTTP header. | ||||||
|                 args.extend(['-headers', ''.join(f'{key}: {val}\r\n' for key, val in headers_dict.items())]) |                 args.extend(['-headers', ''.join(f'{key}: {val}\r\n' for key, val in fmt['http_headers'].items())]) | ||||||
| 
 | 
 | ||||||
|             if start_time: |             if start_time: | ||||||
|                 args += ['-ss', str(start_time)] |                 args += ['-ss', str(start_time)] | ||||||
|   | |||||||
| @@ -45,8 +45,8 @@ class HttpFD(FileDownloader): | |||||||
|         ctx.tmpfilename = self.temp_name(filename) |         ctx.tmpfilename = self.temp_name(filename) | ||||||
|         ctx.stream = None |         ctx.stream = None | ||||||
| 
 | 
 | ||||||
|         # Do not include the Accept-Encoding header |         # Disable compression | ||||||
|         headers = {'Youtubedl-no-compression': 'True'} |         headers = {'Accept-Encoding': 'identity'} | ||||||
|         add_headers = info_dict.get('http_headers') |         add_headers = info_dict.get('http_headers') | ||||||
|         if add_headers: |         if add_headers: | ||||||
|             headers.update(add_headers) |             headers.update(add_headers) | ||||||
|   | |||||||
| @@ -113,7 +113,7 @@ class LiTVIE(InfoExtractor): | |||||||
|             entry_protocol='m3u8_native', m3u8_id='hls') |             entry_protocol='m3u8_native', m3u8_id='hls') | ||||||
|         for a_format in formats: |         for a_format in formats: | ||||||
|             # LiTV HLS segments doesn't like compressions |             # LiTV HLS segments doesn't like compressions | ||||||
|             a_format.setdefault('http_headers', {})['Youtubedl-no-compression'] = True |             a_format.setdefault('http_headers', {})['Accept-Encoding'] = 'identity' | ||||||
| 
 | 
 | ||||||
|         title = program_info['title'] + program_info.get('secondaryMark', '') |         title = program_info['title'] + program_info.get('secondaryMark', '') | ||||||
|         description = program_info.get('description') |         description = program_info.get('description') | ||||||
|   | |||||||
| @@ -161,3 +161,13 @@ def register_socks_protocols(): | |||||||
|     for scheme in ('socks', 'socks4', 'socks4a', 'socks5'): |     for scheme in ('socks', 'socks4', 'socks4a', 'socks5'): | ||||||
|         if scheme not in urllib.parse.uses_netloc: |         if scheme not in urllib.parse.uses_netloc: | ||||||
|             urllib.parse.uses_netloc.append(scheme) |             urllib.parse.uses_netloc.append(scheme) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | def handle_youtubedl_headers(headers): | ||||||
|  |     filtered_headers = headers | ||||||
|  | 
 | ||||||
|  |     if 'Youtubedl-no-compression' in filtered_headers: | ||||||
|  |         filtered_headers = {k: v for k, v in filtered_headers.items() if k.lower() != 'accept-encoding'} | ||||||
|  |         del filtered_headers['Youtubedl-no-compression'] | ||||||
|  | 
 | ||||||
|  |     return filtered_headers | ||||||
|   | |||||||
| @@ -1308,25 +1308,12 @@ def _create_http_connection(ydl_handler, http_class, is_https, *args, **kwargs): | |||||||
|     return hc |     return hc | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def handle_youtubedl_headers(headers): |  | ||||||
|     filtered_headers = headers |  | ||||||
| 
 |  | ||||||
|     if 'Youtubedl-no-compression' in filtered_headers: |  | ||||||
|         filtered_headers = {k: v for k, v in filtered_headers.items() if k.lower() != 'accept-encoding'} |  | ||||||
|         del filtered_headers['Youtubedl-no-compression'] |  | ||||||
| 
 |  | ||||||
|     return filtered_headers |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| class YoutubeDLHandler(urllib.request.HTTPHandler): | class YoutubeDLHandler(urllib.request.HTTPHandler): | ||||||
|     """Handler for HTTP requests and responses. |     """Handler for HTTP requests and responses. | ||||||
| 
 | 
 | ||||||
|     This class, when installed with an OpenerDirector, automatically adds |     This class, when installed with an OpenerDirector, automatically adds | ||||||
|     the standard headers to every HTTP request and handles gzipped and |     the standard headers to every HTTP request and handles gzipped, deflated and | ||||||
|     deflated responses from web servers. If compression is to be avoided in |     brotli responses from web servers. | ||||||
|     a particular request, the original request in the program code only has |  | ||||||
|     to include the HTTP header "Youtubedl-no-compression", which will be |  | ||||||
|     removed before making the real request. |  | ||||||
| 
 | 
 | ||||||
|     Part of this code was copied from: |     Part of this code was copied from: | ||||||
| 
 | 
 | ||||||
| @@ -1389,11 +1376,13 @@ class YoutubeDLHandler(urllib.request.HTTPHandler): | |||||||
|             if h.capitalize() not in req.headers: |             if h.capitalize() not in req.headers: | ||||||
|                 req.add_header(h, v) |                 req.add_header(h, v) | ||||||
| 
 | 
 | ||||||
|  |         if 'Youtubedl-no-compression' in req.headers:  # deprecated | ||||||
|  |             req.headers.pop('Youtubedl-no-compression', None) | ||||||
|  |             req.add_header('Accept-encoding', 'identity') | ||||||
|  | 
 | ||||||
|         if 'Accept-encoding' not in req.headers: |         if 'Accept-encoding' not in req.headers: | ||||||
|             req.add_header('Accept-encoding', ', '.join(SUPPORTED_ENCODINGS)) |             req.add_header('Accept-encoding', ', '.join(SUPPORTED_ENCODINGS)) | ||||||
| 
 | 
 | ||||||
|         req.headers = handle_youtubedl_headers(req.headers) |  | ||||||
| 
 |  | ||||||
|         return super().do_request_(req) |         return super().do_request_(req) | ||||||
| 
 | 
 | ||||||
|     def http_response(self, req, resp): |     def http_response(self, req, resp): | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 coletdjnz
					coletdjnz