diff options
| -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',  | 
