[dropbox] Fix title encoding on Python 2
This commit is contained in:
		| @@ -5,7 +5,7 @@ import os.path | ||||
| import re | ||||
|  | ||||
| from .common import InfoExtractor | ||||
| from ..utils import compat_urllib_parse | ||||
| from ..utils import compat_urllib_parse_unquote | ||||
|  | ||||
|  | ||||
| class DropboxIE(InfoExtractor): | ||||
| @@ -23,7 +23,7 @@ class DropboxIE(InfoExtractor): | ||||
|     def _real_extract(self, url): | ||||
|         mobj = re.match(self._VALID_URL, url) | ||||
|         video_id = mobj.group('id') | ||||
|         fn = compat_urllib_parse.unquote(mobj.group('title')) | ||||
|         fn = compat_urllib_parse_unquote(mobj.group('title')) | ||||
|         title = os.path.splitext(fn)[0] | ||||
|         video_url = url + '?dl=1' | ||||
|  | ||||
|   | ||||
| @@ -91,11 +91,9 @@ except ImportError: | ||||
|     compat_subprocess_get_DEVNULL = lambda: open(os.path.devnull, 'w') | ||||
|  | ||||
| try: | ||||
|     from urllib.parse import parse_qs as compat_parse_qs | ||||
| except ImportError: # Python 2 | ||||
|     # HACK: The following is the correct parse_qs implementation from cpython 3's stdlib. | ||||
|     # Python 2's version is apparently totally broken | ||||
|     def _unquote(string, encoding='utf-8', errors='replace'): | ||||
|     from urllib.parse import unquote as compat_urllib_parse_unquote | ||||
| except ImportError: | ||||
|     def compat_urllib_parse_unquote(string, encoding='utf-8', errors='replace'): | ||||
|         if string == '': | ||||
|             return string | ||||
|         res = string.split('%') | ||||
| @@ -130,6 +128,13 @@ except ImportError: # Python 2 | ||||
|             string += pct_sequence.decode(encoding, errors) | ||||
|         return string | ||||
|  | ||||
|  | ||||
| try: | ||||
|     from urllib.parse import parse_qs as compat_parse_qs | ||||
| except ImportError: # Python 2 | ||||
|     # HACK: The following is the correct parse_qs implementation from cpython 3's stdlib. | ||||
|     # Python 2's version is apparently totally broken | ||||
|  | ||||
|     def _parse_qsl(qs, keep_blank_values=False, strict_parsing=False, | ||||
|                 encoding='utf-8', errors='replace'): | ||||
|         qs, _coerce_result = qs, unicode | ||||
| @@ -149,10 +154,12 @@ except ImportError: # Python 2 | ||||
|                     continue | ||||
|             if len(nv[1]) or keep_blank_values: | ||||
|                 name = nv[0].replace('+', ' ') | ||||
|                 name = _unquote(name, encoding=encoding, errors=errors) | ||||
|                 name = compat_urllib_parse_unquote( | ||||
|                     name, encoding=encoding, errors=errors) | ||||
|                 name = _coerce_result(name) | ||||
|                 value = nv[1].replace('+', ' ') | ||||
|                 value = _unquote(value, encoding=encoding, errors=errors) | ||||
|                 value = compat_urllib_parse_unquote( | ||||
|                     value, encoding=encoding, errors=errors) | ||||
|                 value = _coerce_result(value) | ||||
|                 r.append((name, value)) | ||||
|         return r | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Philipp Hagemeister
					Philipp Hagemeister