mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 14:45:14 +00:00 
			
		
		
		
	[ie/youtube] Fix n function name extraction for player 20dfca59 (#10611)
				
					
				
			Closes #10608 Authored by: bashonly
This commit is contained in:
		| @@ -3174,18 +3174,32 @@ class YoutubeIE(YoutubeBaseInfoExtractor): | ||||
|         return ret | ||||
| 
 | ||||
|     def _extract_n_function_name(self, jscode): | ||||
|         # Examples (with placeholders nfunc, narray, idx): | ||||
|         # *  .get("n"))&&(b=nfunc(b) | ||||
|         # *  .get("n"))&&(b=narray[idx](b) | ||||
|         # *  b=String.fromCharCode(110),c=a.get(b))&&c=narray[idx](c) | ||||
|         # *  a.D&&(b="nn"[+a.D],c=a.get(b))&&(c=narray[idx](c),a.set(b,c),narray.length||nfunc("") | ||||
|         # *  a.D&&(PL(a),b=a.j.n||null)&&(b=narray[0](b),a.set("n",b),narray.length||nfunc("") | ||||
|         funcname, idx = self._search_regex( | ||||
|             r'''(?x) | ||||
|             (?: | ||||
|                 \.get\("n"\)\)&&\(b=| | ||||
|                 (?: | ||||
|                     b=String\.fromCharCode\(110\)| | ||||
|                     ([a-zA-Z0-9$.]+)&&\(b="nn"\[\+\1\] | ||||
|                 ),c=a\.get\(b\)\)&&\(c= | ||||
|             ) | ||||
|             (?P<nfunc>[a-zA-Z0-9$]+)(?:\[(?P<idx>\d+)\])?\([a-zA-Z0-9]\)''', | ||||
|             jscode, 'Initial JS player n function name', group=('nfunc', 'idx')) | ||||
|         if not idx: | ||||
|                     (?P<str_idx>[a-zA-Z0-9_$.]+)&&\(b="nn"\[\+(?P=str_idx)\] | ||||
|                 ),c=a\.get\(b\)\)&&\(c=| | ||||
|                 \b(?P<var>[a-zA-Z0-9_$]+)= | ||||
|             )(?P<nfunc>[a-zA-Z0-9_$]+)(?:\[(?P<idx>\d+)\])?\([a-zA-Z]\) | ||||
|             (?(var),[a-zA-Z0-9_$]+\.set\("n"\,(?P=var)\),(?P=nfunc)\.length)''', | ||||
|             jscode, 'n function name', group=('nfunc', 'idx'), default=(None, None)) | ||||
|         if not funcname: | ||||
|             self.report_warning('Falling back to generic n function search') | ||||
|             return self._search_regex( | ||||
|                 r'''(?xs) | ||||
|                 ;\s*(?P<name>[a-zA-Z0-9_$]+)\s*=\s*function\([a-zA-Z0-9_$]+\) | ||||
|                 \s*\{(?:(?!};).)+?["']enhanced_except_''', | ||||
|                 jscode, 'Initial JS player n function name', group='name') | ||||
|         elif not idx: | ||||
|             return funcname | ||||
| 
 | ||||
|         return json.loads(js_to_json(self._search_regex( | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 bashonly
					bashonly