mirror of
				https://github.com/ytdl-org/youtube-dl.git
				synced 2025-10-29 09:26:20 -07:00 
			
		
		
		
	[utils] Recognize more patterns in strip_jsonp()
Used in Youku Show pages
This commit is contained in:
		| @@ -1,6 +1,7 @@ | ||||
| version <unreleased> | ||||
|  | ||||
| Core | ||||
| + [utils] strip_jsonp() can recognize more patterns | ||||
| * [postprocessor/ffmpeg] Fix metadata filename handling on Python 2 (#13182) | ||||
|  | ||||
| Extractors | ||||
|   | ||||
| @@ -678,6 +678,14 @@ class TestUtil(unittest.TestCase): | ||||
|         d = json.loads(stripped) | ||||
|         self.assertEqual(d, {'status': 'success'}) | ||||
|  | ||||
|         stripped = strip_jsonp('window.cb && window.cb({"status": "success"});') | ||||
|         d = json.loads(stripped) | ||||
|         self.assertEqual(d, {'status': 'success'}) | ||||
|  | ||||
|         stripped = strip_jsonp('window.cb && cb({"status": "success"});') | ||||
|         d = json.loads(stripped) | ||||
|         self.assertEqual(d, {'status': 'success'}) | ||||
|  | ||||
|     def test_uppercase_escape(self): | ||||
|         self.assertEqual(uppercase_escape('aä'), 'aä') | ||||
|         self.assertEqual(uppercase_escape('\\U0001d550'), '𝕐') | ||||
|   | ||||
| @@ -2211,7 +2211,12 @@ def parse_age_limit(s): | ||||
|  | ||||
| def strip_jsonp(code): | ||||
|     return re.sub( | ||||
|         r'(?s)^[a-zA-Z0-9_.$]+\s*\(\s*(.*)\);?\s*?(?://[^\n]*)*$', r'\1', code) | ||||
|         r'''(?sx)^ | ||||
|             (?:window\.)?(?P<func_name>[a-zA-Z0-9_.$]+) | ||||
|             (?:\s*&&\s*(?P=func_name))? | ||||
|             \s*\(\s*(?P<callback_data>.*)\);? | ||||
|             \s*?(?://[^\n]*)*$''', | ||||
|         r'\g<callback_data>', code) | ||||
|  | ||||
|  | ||||
| def js_to_json(code): | ||||
|   | ||||
		Reference in New Issue
	
	Block a user