diff --git a/test/test_utils.py b/test/test_utils.py index 0067e1ec99..4bfe250ac9 100644 --- a/test/test_utils.py +++ b/test/test_utils.py @@ -1054,6 +1054,9 @@ def test_js_to_json_edgecases(self): on = js_to_json('{ "040": "040" }') self.assertEqual(json.loads(on), {'040': '040'}) + on = js_to_json('[1,//{},\n2]') + self.assertEqual(json.loads(on), [1, 2]) + def test_js_to_json_malformed(self): self.assertEqual(js_to_json('42a1'), '42"a1"') self.assertEqual(js_to_json('42a-1'), '42"a"-1') diff --git a/yt_dlp/utils.py b/yt_dlp/utils.py index 8f9cb46f64..795c5632ff 100644 --- a/yt_dlp/utils.py +++ b/yt_dlp/utils.py @@ -4365,7 +4365,7 @@ def strip_jsonp(code): def js_to_json(code, vars={}): # vars is a dict of var, val pairs to substitute - COMMENT_RE = r'/\*(?:(?!\*/).)*?\*/|//[^\n]*' + COMMENT_RE = r'/\*(?:(?!\*/).)*?\*/|//[^\n]*\n' SKIP_RE = r'\s*(?:{comment})?\s*'.format(comment=COMMENT_RE) INTEGER_TABLE = ( (r'(?s)^(0[xX][0-9a-fA-F]+){skip}:?$'.format(skip=SKIP_RE), 16),