Files

33 lines
1.4 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""Расширения-экстракторы для сайтов с непрямыми ссылками.
Каждый модуль здесь регистрирует свою стратегию декоратором @register из
app.services.downloader. Добавить сайт = положить сюда один файл; ядро не
трогаем. load_extractors() импортирует все модули пакета — её зовут на старте
приложения (lifespan в app/main.py).
"""
from __future__ import annotations
import importlib
import logging
import pkgutil
logger = logging.getLogger("pvideodl.extractors")
def load_extractors() -> list[str]:
"""Импортировать все модули пакета — при импорте они себя регистрируют.
Идемпотентно: при повторном вызове модули уже в sys.modules, их тело (а с ним
и @register) заново не выполняется — реестр не задваивается.
"""
loaded: list[str] = []
for info in pkgutil.iter_modules(__path__, __name__ + "."):
if info.name.rsplit(".", 1)[-1].startswith("_"):
continue
importlib.import_module(info.name)
loaded.append(info.name)
if loaded:
logger.info("Загружено экстракторов: %d (%s)", len(loaded), ", ".join(loaded))
return loaded