[utils] Fix js_to_json
This commit is contained in:
		@@ -44,6 +44,7 @@ from youtube_dl.utils import (
 | 
			
		||||
    limit_length,
 | 
			
		||||
    escape_rfc3986,
 | 
			
		||||
    escape_url,
 | 
			
		||||
    js_to_json,
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -331,5 +332,14 @@ class TestUtil(unittest.TestCase):
 | 
			
		||||
        )
 | 
			
		||||
        self.assertEqual(escape_url('http://vimeo.com/56015672#at=0'), 'http://vimeo.com/56015672#at=0')
 | 
			
		||||
 | 
			
		||||
    def test_js_to_json(self):
 | 
			
		||||
        inp = '''{
 | 
			
		||||
                'clip':{'provider':'pseudo'}
 | 
			
		||||
        }'''
 | 
			
		||||
        self.assertEqual(js_to_json(inp), '''{
 | 
			
		||||
                "clip":{"provider":"pseudo"}
 | 
			
		||||
        }''')
 | 
			
		||||
        json.loads(js_to_json(inp))
 | 
			
		||||
 | 
			
		||||
if __name__ == '__main__':
 | 
			
		||||
    unittest.main()
 | 
			
		||||
 
 | 
			
		||||
@@ -673,6 +673,8 @@ class ExtractorError(Exception):
 | 
			
		||||
            expected = True
 | 
			
		||||
        if video_id is not None:
 | 
			
		||||
            msg = video_id + ': ' + msg
 | 
			
		||||
        if cause:
 | 
			
		||||
            msg += u' (caused by %r)' % cause
 | 
			
		||||
        if not expected:
 | 
			
		||||
            msg = msg + u'; please report this issue on https://yt-dl.org/bug . Be sure to call youtube-dl with the --verbose flag and include its complete output. Make sure you are using the latest version; type  youtube-dl -U  to update.'
 | 
			
		||||
        super(ExtractorError, self).__init__(msg)
 | 
			
		||||
@@ -1598,7 +1600,9 @@ def js_to_json(code):
 | 
			
		||||
            ([{,]\s*)
 | 
			
		||||
            ("[^"]*"|\'[^\']*\'|[a-z0-9A-Z]+)
 | 
			
		||||
            (:\s*)
 | 
			
		||||
            ([0-9.]+|true|false|"[^"]*"|\'[^\']*\'|\[|\{)
 | 
			
		||||
            ([0-9.]+|true|false|"[^"]*"|\'[^\']*\'|
 | 
			
		||||
                (?=\[|\{)
 | 
			
		||||
            )
 | 
			
		||||
        ''', fix_kv, code)
 | 
			
		||||
    res = re.sub(r',(\s*\])', lambda m: m.group(1), res)
 | 
			
		||||
    return res
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user