mirror of
https://github.com/yt-dlp/yt-dlp.git
synced 2025-03-09 12:50:23 -05:00
features check
This commit is contained in:
parent
302ee5d0d4
commit
e0bf89ff2e
1 changed files with 11 additions and 3 deletions
|
@ -67,6 +67,7 @@ def __init__(
|
|||
):
|
||||
self._downloader = downloader
|
||||
self._verbose = verbose
|
||||
self._features = features
|
||||
|
||||
jsi_keys = set(get_jsi_keys(only_include or _JSI_HANDLERS)) - set(get_jsi_keys(exclude))
|
||||
handler_classes = [_JSI_HANDLERS[key] for key in jsi_keys
|
||||
|
@ -124,8 +125,15 @@ def _get_handlers(self, method: str, *args, **kwargs) -> list[JSI]:
|
|||
# raise
|
||||
# raise EvaluationError
|
||||
|
||||
def _get_handler_method(method_name: str):
|
||||
def _get_handler_method(method_name: str, feature_params: dict):
|
||||
assert all(feature in _ALL_FEATURES for feature in feature_params.values())
|
||||
|
||||
def handler(self: JSIDirector, *args, **kwargs):
|
||||
for name, feature in feature_params.items():
|
||||
if name in kwargs and feature not in self._features:
|
||||
raise Exception(f'feature {feature} is required for using {name} params '
|
||||
f'but not provided when instantiating {self.__class__.__name__}')
|
||||
|
||||
unavailable: list[JSI] = []
|
||||
exceptions: list[tuple[JSI, Exception]] = []
|
||||
is_test = self._downloader.params.get('test', False)
|
||||
|
@ -172,8 +180,8 @@ def handler(self: JSIDirector, *args, **kwargs):
|
|||
|
||||
return handler
|
||||
|
||||
execute = _get_handler_method('execute')
|
||||
evaluate = _get_handler_method('evaluate')
|
||||
execute = _get_handler_method('execute', {'html': 'dom'})
|
||||
evaluate = _get_handler_method('evaluate', {'html': 'dom'})
|
||||
|
||||
|
||||
class JSI(abc.ABC):
|
||||
|
|
Loading…
Reference in a new issue