diff --git a/test/test_youtube_signature.py b/test/test_youtube_signature.py index 44d06cc55..13436f088 100644 --- a/test/test_youtube_signature.py +++ b/test/test_youtube_signature.py @@ -15,7 +15,7 @@ from test.helper import FakeYDL, is_download_test from yt_dlp.extractor import YoutubeIE -from yt_dlp.jsinterp import NativeJSI +from yt_dlp.jsinterp import JSInterpreter _SIG_TESTS = [ ( @@ -274,7 +274,7 @@ def signature(jscode, sig_input): def n_sig(jscode, sig_input): ie = YoutubeIE(FakeYDL()) funcname = ie._extract_n_function_name(jscode) - jsi = NativeJSI(jscode) + jsi = JSInterpreter(jscode) func = jsi.extract_function_from_code(*ie._fixup_n_function_code(*jsi.extract_function_code(funcname))) return func([sig_input]) diff --git a/yt_dlp/extractor/youtube.py b/yt_dlp/extractor/youtube.py index 553bbcde7..fa73af7bb 100644 --- a/yt_dlp/extractor/youtube.py +++ b/yt_dlp/extractor/youtube.py @@ -20,7 +20,7 @@ import urllib.parse from .common import InfoExtractor, SearchInfoExtractor -from ..jsinterp import NativeJSI, PhantomJSwrapper +from ..jsinterp import JSInterpreter, PhantomJSwrapper from ..networking.exceptions import HTTPError, network_exceptions from ..utils import ( NO_DEFAULT, @@ -3169,7 +3169,7 @@ def _parse_sig_js(self, jscode): r'\bc\s*&&\s*[a-zA-Z0-9]+\.set\([^,]+\s*,\s*\([^)]*\)\s*\(\s*(?P[a-zA-Z0-9$]+)\('), jscode, 'Initial JS player signature function name', group='sig') - jsi = NativeJSI(jscode) + jsi = JSInterpreter(jscode) initial_function = jsi.extract_function(funcname) return lambda s: initial_function([s]) @@ -3213,7 +3213,7 @@ def _decrypt_nsig(self, s, video_id, player_url): try: extract_nsig = self._cached(self._extract_n_function_from_code, 'nsig func', player_url) ret = extract_nsig(jsi, func_code)(s) - except NativeJSI.Exception as e: + except JSInterpreter.Exception as e: try: jsi = PhantomJSwrapper(self, timeout=5000) except ExtractorError: @@ -3283,7 +3283,7 @@ def _extract_n_function_code(self, video_id, player_url): player_id = self._extract_player_info(player_url) func_code = self.cache.load('youtube-nsig', player_id, min_ver='2024.07.09') jscode = func_code or self._load_player(video_id, player_url) - jsi = NativeJSI(jscode) + jsi = JSInterpreter(jscode) if func_code: return jsi, player_id, func_code @@ -3302,13 +3302,13 @@ def _extract_n_function_from_code(self, jsi, func_code): def extract_nsig(s): try: ret = func([s]) - except NativeJSI.Exception: + except JSInterpreter.Exception: raise except Exception as e: - raise NativeJSI.Exception(traceback.format_exc(), cause=e) + raise JSInterpreter.Exception(traceback.format_exc(), cause=e) if ret.startswith('enhanced_except_') or ret.endswith(s): - raise NativeJSI.Exception('Signature function returned an exception') + raise JSInterpreter.Exception('Signature function returned an exception') return ret return extract_nsig @@ -4156,7 +4156,7 @@ def build_fragments(f): }) except ExtractorError as e: phantomjs_hint = '' - if isinstance(e, NativeJSI.Exception): + if isinstance(e, JSInterpreter.Exception): phantomjs_hint = (f' Install {self._downloader._format_err("PhantomJS", self._downloader.Styles.EMPHASIS)} ' f'to workaround the issue. {PhantomJSwrapper.INSTALL_HINT}\n') if player_url: diff --git a/yt_dlp/jsinterp/__init__.py b/yt_dlp/jsinterp/__init__.py index 94b471329..2477f0774 100644 --- a/yt_dlp/jsinterp/__init__.py +++ b/yt_dlp/jsinterp/__init__.py @@ -1,10 +1,10 @@ -from .native import JSInterpreter as NativeJSI +from .native import JSInterpreter from .external import PhantomJSwrapper, DenoJSI, PuppeteerJSI from .common import _JSI_PREFERENCES, _JSI_HANDLERS, JSInterp __all__ = [ - NativeJSI, + JSInterpreter, PhantomJSwrapper, DenoJSI, PuppeteerJSI, diff --git a/yt_dlp/jsinterp/common.py b/yt_dlp/jsinterp/common.py index b898a2a21..d6594fd42 100644 --- a/yt_dlp/jsinterp/common.py +++ b/yt_dlp/jsinterp/common.py @@ -240,7 +240,7 @@ def _base_preference(handler: JSI, *args): if typing.TYPE_CHECKING: from ..YoutubeDL import YoutubeDL - JsiClass = typing.TypeVar('JsiClass', bound=typing.Type[JSI]) + JsiClass = typing.TypeVar('JsiClass', bound=type[JSI]) class JSIPreference(typing.Protocol): def __call__(self, handler: JSI, method_name: str, *args, **kwargs) -> int: