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