From 57f4350fe42ecd08aebd48edaa7da954a36c029d Mon Sep 17 00:00:00 2001 From: bashonly Date: Thu, 27 Mar 2025 16:18:06 -0500 Subject: [PATCH] [ie/youtube] Make initial n function name search non-fatal Authored by: bashonly --- yt_dlp/extractor/youtube/_video.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/yt_dlp/extractor/youtube/_video.py b/yt_dlp/extractor/youtube/_video.py index 6627719d84..690b819a83 100644 --- a/yt_dlp/extractor/youtube/_video.py +++ b/yt_dlp/extractor/youtube/_video.py @@ -2150,7 +2150,7 @@ class YoutubeIE(YoutubeBaseInfoExtractor): def _extract_n_function_name(self, jscode, player_url=None): varname, global_list = self._interpret_player_js_global_var(jscode, player_url) if debug_str := traverse_obj(global_list, (lambda _, v: v.endswith('_w8_'), any)): - return self._search_regex( + funcname = self._search_regex( r'''(?xs) [;\n](?: (?Pfunction\s+)| @@ -2161,7 +2161,12 @@ class YoutubeIE(YoutubeBaseInfoExtractor): \}\s*catch\(\s*[a-zA-Z0-9_$]+\s*\)\s* \{\s*return\s+%s\[%d\]\s*\+\s*(?P=argname)\s*\}\s*return\s+[^}]+\}[;\n] ''' % (re.escape(varname), global_list.index(debug_str)), - jscode, 'nsig function name', group='funcname') + jscode, 'nsig function name', group='funcname', default=None) + if funcname: + return funcname + self.write_debug(join_nonempty( + 'Initial search was unable to find nsig function name', + player_url and f' player = {player_url}', delim='\n'), only_once=True) # Examples (with placeholders nfunc, narray, idx): # * .get("n"))&&(b=nfunc(b)