youtube-dl

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

commit 410f3e73ab268f74a455798ee39de5caba90caea
parent 07e764439a1cdd3a3b95fbf21acc6a517c6a889e
Author: Philipp Hagemeister <phihag@phihag.de>
Date:   Tue, 30 Sep 2014 07:56:24 +0200

[utils] Fix js_to_json

Diffstat:
Mtest/test_utils.py | 10++++++++++
Myoutube_dl/utils.py | 6+++++-
2 files changed, 15 insertions(+), 1 deletion(-)

diff --git a/test/test_utils.py b/test/test_utils.py @@ -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() diff --git a/youtube_dl/utils.py b/youtube_dl/utils.py @@ -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