mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 14:45:14 +00:00 
			
		
		
		
	[jsinterp] Fix extract_object (#13580)
				
					
				
			Fixes sig extraction for YouTube player `e12fbea4` Authored by: seproDev
This commit is contained in:
		| @@ -478,6 +478,10 @@ class TestJSInterpreter(unittest.TestCase): | |||||||
|         func = jsi.extract_function('c', {'e': 10}, {'f': 100, 'g': 1000}) |         func = jsi.extract_function('c', {'e': 10}, {'f': 100, 'g': 1000}) | ||||||
|         self.assertEqual(func([1]), 1111) |         self.assertEqual(func([1]), 1111) | ||||||
| 
 | 
 | ||||||
|  |     def test_extract_object(self): | ||||||
|  |         jsi = JSInterpreter('var a={};a.xy={};var xy;var zxy={};xy={z:function(){return "abc"}};') | ||||||
|  |         self.assertTrue('z' in jsi.extract_object('xy', None)) | ||||||
|  | 
 | ||||||
|     def test_increment_decrement(self): |     def test_increment_decrement(self): | ||||||
|         self._test('function f() { var x = 1; return ++x; }', 2) |         self._test('function f() { var x = 1; return ++x; }', 2) | ||||||
|         self._test('function f() { var x = 1; return x++; }', 1) |         self._test('function f() { var x = 1; return x++; }', 1) | ||||||
|   | |||||||
| @@ -133,6 +133,11 @@ _SIG_TESTS = [ | |||||||
|         '2aq0aqSyOoJXtK73m-uME_jv7-pT15gOFC02RFkGMqWpzEICs69VdbwQ0LDp1v7j8xx92efCJlYFYb1sUkkBSPOlPmXgIARw8JQ0qOAOAA', |         '2aq0aqSyOoJXtK73m-uME_jv7-pT15gOFC02RFkGMqWpzEICs69VdbwQ0LDp1v7j8xx92efCJlYFYb1sUkkBSPOlPmXgIARw8JQ0qOAOAA', | ||||||
|         'IAOAOq0QJ8wRAAgXmPlOPSBkkUs1bYFYlJCfe29xx8j7v1pDL0QwbdV96sCIEzpWqMGkFR20CFOg51Tp-7vj_E2u-m37KtXJoOySqa0', |         'IAOAOq0QJ8wRAAgXmPlOPSBkkUs1bYFYlJCfe29xx8j7v1pDL0QwbdV96sCIEzpWqMGkFR20CFOg51Tp-7vj_E2u-m37KtXJoOySqa0', | ||||||
|     ), |     ), | ||||||
|  |     ( | ||||||
|  |         'https://www.youtube.com/s/player/e12fbea4/player_ias.vflset/en_US/base.js', | ||||||
|  |         'gN7a-hudCuAuPH6fByOk1_GNXN0yNMHShjZXS2VOgsEItAJz0tipeavEOmNdYN-wUtcEqD3bCXjc0iyKfAyZxCBGgIARwsSdQfJ2CJtt', | ||||||
|  |         'JC2JfQdSswRAIgGBCxZyAfKyi0cjXCb3DqEctUw-NYdNmOEvaepit0zJAtIEsgOV2SXZjhSHMNy0NXNG_1kOyBf6HPuAuCduh-a', | ||||||
|  |     ), | ||||||
| ] | ] | ||||||
| 
 | 
 | ||||||
| _NSIG_TESTS = [ | _NSIG_TESTS = [ | ||||||
|   | |||||||
| @@ -857,7 +857,7 @@ class JSInterpreter: | |||||||
|         obj = {} |         obj = {} | ||||||
|         obj_m = re.search( |         obj_m = re.search( | ||||||
|             r'''(?x) |             r'''(?x) | ||||||
|                 (?<!\.)%s\s*=\s*{\s* |                 (?<![a-zA-Z$0-9.])%s\s*=\s*{\s* | ||||||
|                     (?P<fields>(%s\s*:\s*function\s*\(.*?\)\s*{.*?}(?:,\s*)?)*) |                     (?P<fields>(%s\s*:\s*function\s*\(.*?\)\s*{.*?}(?:,\s*)?)*) | ||||||
|                 }\s*; |                 }\s*; | ||||||
|             ''' % (re.escape(objname), _FUNC_NAME_RE), |             ''' % (re.escape(objname), _FUNC_NAME_RE), | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 sepro
					sepro