|
|
@ -2182,6 +2182,7 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
|
|
|
|
(?P<value>
|
|
|
|
(?P<value>
|
|
|
|
(?P<q2>["\'])(?:(?!(?P=q2)).|\\.)+(?P=q2)
|
|
|
|
(?P<q2>["\'])(?:(?!(?P=q2)).|\\.)+(?P=q2)
|
|
|
|
\.split\((?P<q3>["\'])(?:(?!(?P=q3)).)+(?P=q3)\)
|
|
|
|
\.split\((?P<q3>["\'])(?:(?!(?P=q3)).)+(?P=q3)\)
|
|
|
|
|
|
|
|
|\[\s*(?:(?P<q4>["\'])(?:(?!(?P=q4)).|\\.)*(?P=q4)\s*,?\s*)+\]
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)[;,]
|
|
|
|
)[;,]
|
|
|
|
''', jscode, 'global variable', group=('code', 'name', 'value'), default=(None, None, None))
|
|
|
|
''', jscode, 'global variable', group=('code', 'name', 'value'), default=(None, None, None))
|
|
|
@ -2199,7 +2200,7 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
|
|
|
|
|
|
|
|
|
|
|
|
def _extract_n_function_code(self, video_id, player_url):
|
|
|
|
def _extract_n_function_code(self, video_id, player_url):
|
|
|
|
player_id = self._extract_player_info(player_url)
|
|
|
|
player_id = self._extract_player_info(player_url)
|
|
|
|
func_code = self.cache.load('youtube-nsig', player_id, min_ver='2025.03.25')
|
|
|
|
func_code = self.cache.load('youtube-nsig', player_id, min_ver='2025.03.26')
|
|
|
|
jscode = func_code or self._load_player(video_id, player_url)
|
|
|
|
jscode = func_code or self._load_player(video_id, player_url)
|
|
|
|
jsi = JSInterpreter(jscode)
|
|
|
|
jsi = JSInterpreter(jscode)
|
|
|
|
|
|
|
|
|
|
|
|