mirror of
				https://github.com/ytdl-org/youtube-dl.git
				synced 2025-10-29 09:26:20 -07:00 
			
		
		
		
	[compat] Add compat_urllib_parse_urlencode and eliminate encode_dict
encode_dict functionality has been improved and moved directly into compat_urllib_parse_urlencode All occurrences of compat_urllib_parse.urlencode throughout the codebase have been replaced by compat_urllib_parse_urlencode Closes #8974
This commit is contained in:
		| @@ -169,6 +169,31 @@ except ImportError:  # Python 2 | ||||
|         string = string.replace('+', ' ') | ||||
|         return compat_urllib_parse_unquote(string, encoding, errors) | ||||
|  | ||||
| try: | ||||
|     from urllib.parse import urlencode as compat_urllib_parse_urlencode | ||||
| except ImportError:  # Python 2 | ||||
|     # Python 2 will choke in urlencode on mixture of byte and unicode strings. | ||||
|     # Possible solutions are to either port it from python 3 with all | ||||
|     # the friends or manually ensure input query contains only byte strings. | ||||
|     # We will stick with latter thus recursively encoding the whole query. | ||||
|     def compat_urllib_parse_urlencode(query, doseq=0, encoding='utf-8'): | ||||
|         def encode_elem(e): | ||||
|             if isinstance(e, dict): | ||||
|                 e = encode_dict(e) | ||||
|             elif isinstance(e, (list, tuple,)): | ||||
|                 e = encode_list(e) | ||||
|             elif isinstance(e, compat_str): | ||||
|                 e = e.encode(encoding) | ||||
|             return e | ||||
|  | ||||
|         def encode_dict(d): | ||||
|             return dict((encode_elem(k), encode_elem(v)) for k, v in d.items()) | ||||
|  | ||||
|         def encode_list(l): | ||||
|             return [encode_elem(e) for e in l] | ||||
|  | ||||
|         return compat_urllib_parse.urlencode(encode_elem(query), doseq=doseq) | ||||
|  | ||||
| try: | ||||
|     from urllib.request import DataHandler as compat_urllib_request_DataHandler | ||||
| except ImportError:  # Python < 3.4 | ||||
| @@ -588,6 +613,7 @@ __all__ = [ | ||||
|     'compat_urllib_parse_unquote', | ||||
|     'compat_urllib_parse_unquote_plus', | ||||
|     'compat_urllib_parse_unquote_to_bytes', | ||||
|     'compat_urllib_parse_urlencode', | ||||
|     'compat_urllib_parse_urlparse', | ||||
|     'compat_urllib_request', | ||||
|     'compat_urllib_request_DataHandler', | ||||
|   | ||||
		Reference in New Issue
	
	Block a user