youtube-dl

Another place where youtube-dl lives on
git clone git://git.oshgnacknak.de/youtube-dl.git
Log | Files | Refs | README | LICENSE

commit dfe5fa49aed02cf36ba9f743b11b0903554b5e56
parent 01a0c511ebfa56699c1f58164c679b24f7972681
Author: Yen Chi Hsuan <yan12125@gmail.com>
Date:   Thu,  7 Jul 2016 17:37:29 +0800

[compat] Fix compat_shlex_split for non-ASCII input

Closes #9871

Diffstat:
Mtest/test_compat.py | 1+
Myoutube_dl/compat.py | 8+++++---
2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/test/test_compat.py b/test/test_compat.py @@ -88,6 +88,7 @@ class TestCompat(unittest.TestCase): def test_compat_shlex_split(self): self.assertEqual(compat_shlex_split('-option "one two"'), ['-option', 'one two']) self.assertEqual(compat_shlex_split('-option "one\ntwo" \n -flag'), ['-option', 'one\ntwo', '-flag']) + self.assertEqual(compat_shlex_split('-val 中文'), ['-val', '中文']) def test_compat_etree_fromstring(self): xml = ''' diff --git a/youtube_dl/compat.py b/youtube_dl/compat.py @@ -1,3 +1,4 @@ +# coding: utf-8 from __future__ import unicode_literals import binascii @@ -2594,15 +2595,16 @@ except ImportError: # Python < 3.3 return "'" + s.replace("'", "'\"'\"'") + "'" -if sys.version_info >= (2, 7, 3): +try: + assert shlex.split('中文') == ['中文'] compat_shlex_split = shlex.split -else: +except (AssertionError, UnicodeWarning, UnicodeEncodeError): # Working around shlex issue with unicode strings on some python 2 # versions (see http://bugs.python.org/issue1548891) def compat_shlex_split(s, comments=False, posix=True): if isinstance(s, compat_str): s = s.encode('utf-8') - return shlex.split(s, comments, posix) + return list(map(lambda s: s.decode('utf-8'), shlex.split(s, comments, posix))) def compat_ord(c):