v0.1.0 — Réécriture complète de OhmStreaming

Nouvelle version réécrite de zéro : recherche multi-sources (Vostfree,
French-Manga), extraction 2 niveaux, proxy vidéo intégré, streaming/téléchargement
HLS, métadonnées Kitsu, bibliothèque locale, comptes JWT + administration,
découverte fusionnée, indexeur Torznab (Sonarr/Prowlarr).
This commit is contained in:
Roman
2026-09-22 10:05:47 +00:00
commit 41566ab5fb
66 changed files with 8895 additions and 0 deletions
+31
View File
@@ -0,0 +1,31 @@
"""Chargement des configurations de scraping externalisées (sélecteurs YAML).
Permet de réparer un site cassé en modifiant un fichier de config sans toucher
au code. Chaque source peut avoir un fichier `configs/<nom_source>.yaml`.
"""
import logging
from functools import lru_cache
from typing import Any
import yaml
from app.config import get_settings
logger = logging.getLogger(__name__)
@lru_cache
def load_scraper_config(source_name: str) -> dict[str, Any]:
path = get_settings().scrapers_config_dir / f"{source_name}.yaml"
if not path.exists():
logger.debug("Pas de config externe pour %s (%s)", source_name, path)
return {}
try:
with path.open(encoding="utf-8") as fh:
config = yaml.safe_load(fh) or {}
logger.info("Config de scraping chargée pour %s", source_name)
return config
except yaml.YAMLError as exc:
logger.error("Config %s invalide : %s", path, exc)
return {}