aboutsummaryrefslogtreecommitdiff
path: root/youtube_dl/compat.py
diff options
context:
space:
mode:
authorSergey M․ <dstftw@gmail.com>2015-07-17 23:28:34 +0600
committerSergey M․ <dstftw@gmail.com>2015-07-17 23:28:34 +0600
commitaa99aa4e853966d4f01e280313e3aadf2ddf7ad6 (patch)
treef40f79a469e313dceb653b61fa60f1f04f7a692e /youtube_dl/compat.py
parentd79febcd0619608aa100c17b0a2aefe9f4836d9b (diff)
downloadyoutube-dl-aa99aa4e853966d4f01e280313e3aadf2ddf7ad6.tar.xz
[compat] Add compat_urllib_parse_unquote_plus
Diffstat (limited to 'youtube_dl/compat.py')
-rw-r--r--youtube_dl/compat.py11
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',