diff options
author | Sergey M․ <[email protected]> | 2015-07-17 23:28:34 +0600 |
---|---|---|
committer | Sergey M․ <[email protected]> | 2015-07-17 23:28:34 +0600 |
commit | aa99aa4e853966d4f01e280313e3aadf2ddf7ad6 (patch) | |
tree | f40f79a469e313dceb653b61fa60f1f04f7a692e /youtube_dl/compat.py | |
parent | d79febcd0619608aa100c17b0a2aefe9f4836d9b (diff) | |
download | youtube-dl-aa99aa4e853966d4f01e280313e3aadf2ddf7ad6.tar.gz youtube-dl-aa99aa4e853966d4f01e280313e3aadf2ddf7ad6.zip |
[compat] Add compat_urllib_parse_unquote_plus
Diffstat (limited to 'youtube_dl/compat.py')
-rw-r--r-- | youtube_dl/compat.py | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/youtube_dl/compat.py b/youtube_dl/compat.py index 54ccf1d28..a3a2aef53 100644 --- a/youtube_dl/compat.py +++ b/youtube_dl/compat.py @@ -77,6 +77,7 @@ except ImportError: try: from urllib.parse import unquote_to_bytes as compat_urllib_parse_unquote_to_bytes from urllib.parse import unquote as compat_urllib_parse_unquote + from urllib.parse import unquote_plus as compat_urllib_parse_unquote_plus except ImportError: # Python 2 # HACK: The following are the correct unquote_to_bytes and unquote # implementations from cpython 3.4.3's stdlib. Python 2's version @@ -131,6 +132,15 @@ except ImportError: # Python 2 append(bits[i + 1]) return ''.join(res) + def compat_urllib_parse_unquote_plus(string, encoding='utf-8', errors='replace'): + """Like unquote(), but also replace plus signs by spaces, as required for + unquoting HTML form values. + + unquote_plus('%7e/abc+def') -> '~/abc def' + """ + string = string.replace('+', ' ') + return compat_urllib_parse_unquote(string, encoding, errors) + try: compat_str = unicode # Python 2 except NameError: @@ -441,6 +451,7 @@ __all__ = [ 'compat_urllib_error', 'compat_urllib_parse', 'compat_urllib_parse_unquote', + 'compat_urllib_parse_unquote_plus', 'compat_urllib_parse_unquote_to_bytes', 'compat_urllib_parse_urlparse', 'compat_urllib_request', |