520be53901
- Add proper Alembic initial migration (0001_initial_schema.py) - Migrate refresh tokens from JSON file to SQLite (RefreshTokenTable) - Remove Neko-Sama provider entirely (redirects to Gupy, not a host) - Fix provider health check always showing UNKNOWN - Run check_all_health() on startup - Fix POST /providers/health/check background task bug - Add HTMX refresh after manual health check trigger - Fix anime search relevance scoring with MIN_RELEVANCE_THRESHOLD=0.5 - Replace bare 'except:' with 'except Exception:' across codebase - Add Playwright E2E test suite (12 tests, auth setup, helpers) - Fix toast container blocking clicks via pointer-events: none - Remove obsolete Jest/Vite test files and config - Clean up obsolete test_watchlist scripts - Update sonarr model comment for active providers
33 lines
874 B
Python
33 lines
874 B
Python
"""Anime streaming sites (catalogs) downloaders"""
|
|
from .base import BaseAnimeSite
|
|
# Import all anime site downloaders
|
|
from .animesama import AnimeSamaDownloader
|
|
from .animeultime import AnimeUltimeDownloader
|
|
from .vostfree import VostfreeDownloader
|
|
from .frenchmanga import FrenchMangaDownloader
|
|
|
|
__all__ = [
|
|
"BaseAnimeSite",
|
|
"AnimeSamaDownloader",
|
|
"AnimeUltimeDownloader",
|
|
"VostfreeDownloader",
|
|
"FrenchMangaDownloader",
|
|
]
|
|
|
|
|
|
def get_anime_site(url: str) -> BaseAnimeSite:
|
|
"""Factory function to get the appropriate anime site for a URL"""
|
|
sites = [
|
|
AnimeSamaDownloader(),
|
|
AnimeUltimeDownloader(),
|
|
VostfreeDownloader(),
|
|
FrenchMangaDownloader(),
|
|
]
|
|
|
|
for site in sites:
|
|
if site.can_handle(url):
|
|
return site
|
|
|
|
# Return None if no match (should not happen in normal flow)
|
|
return None
|