diff options
| author | Sergey M․ <dstftw@gmail.com> | 2015-10-20 23:09:51 +0600 | 
|---|---|---|
| committer | Sergey M․ <dstftw@gmail.com> | 2015-10-20 23:09:51 +0600 | 
| commit | d01949dc89feb2441f251e42e8a6bfa4711b9715 (patch) | |
| tree | 5c7e6ae1a1a5f89670118cbf734487b2c46f8047 | |
| parent | 63a64948342ebfe46db8c258765e698a04a61904 (diff) | |
[utils:js_to_json] Fix bad escape in double quoted strings
| -rw-r--r-- | test/test_utils.py | 3 | ||||
| -rw-r--r-- | youtube_dl/utils.py | 4 | 
2 files changed, 5 insertions, 2 deletions
| diff --git a/test/test_utils.py b/test/test_utils.py index a5f164c49..918a7a9ef 100644 --- a/test/test_utils.py +++ b/test/test_utils.py @@ -495,6 +495,9 @@ class TestUtil(unittest.TestCase):              "playlist":[{"controls":{"all":null}}]          }''') +        inp = '''"The CW\\'s \\'Crazy Ex-Girlfriend\\'"''' +        self.assertEqual(js_to_json(inp), '''"The CW's 'Crazy Ex-Girlfriend'"''') +          inp = '"SAND Number: SAND 2013-7800P\\nPresenter: Tom Russo\\nHabanero Software Training - Xyce Software\\nXyce, Sandia\\u0027s"'          json_code = js_to_json(inp)          self.assertEqual(json.loads(json_code), json.loads(inp)) diff --git a/youtube_dl/utils.py b/youtube_dl/utils.py index db5b3698e..a61e47646 100644 --- a/youtube_dl/utils.py +++ b/youtube_dl/utils.py @@ -1701,8 +1701,8 @@ def js_to_json(code):          if v in ('true', 'false', 'null'):              return v          if v.startswith('"'): -            return v -        if v.startswith("'"): +            v = re.sub(r"\\'", "'", v[1:-1]) +        elif v.startswith("'"):              v = v[1:-1]              v = re.sub(r"\\\\|\\'|\"", lambda m: {                  '\\\\': '\\\\', | 
