1
0
Fork 0
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:
c-basalt 2024-09-30 02:27:38 -04:00
parent 302ee5d0d4
commit e0bf89ff2e

View file

@ -67,6 +67,7 @@ def __init__(
): ):
self._downloader = downloader self._downloader = downloader
self._verbose = verbose self._verbose = verbose
self._features = features
jsi_keys = set(get_jsi_keys(only_include or _JSI_HANDLERS)) - set(get_jsi_keys(exclude)) 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 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
# raise EvaluationError # 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): 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] = [] unavailable: list[JSI] = []
exceptions: list[tuple[JSI, Exception]] = [] exceptions: list[tuple[JSI, Exception]] = []
is_test = self._downloader.params.get('test', False) is_test = self._downloader.params.get('test', False)
@ -172,8 +180,8 @@ def handler(self: JSIDirector, *args, **kwargs):
return handler return handler
execute = _get_handler_method('execute') execute = _get_handler_method('execute', {'html': 'dom'})
evaluate = _get_handler_method('evaluate') evaluate = _get_handler_method('evaluate', {'html': 'dom'})
class JSI(abc.ABC): class JSI(abc.ABC):