4d280b5239
- Added new video players: Vidzy, LuLuvid, Uqload - Added new anime site: French-Manga - Added new series sites category with FS7 - Updated documentation to reflect three-tier architecture (anime sites → series sites → video players) - Added BaseSeriesSite interface documentation - Added "Adding New Series Site" section - Updated test organization with test_french_manga.py Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering>
36 lines
971 B
Python
36 lines
971 B
Python
"""Anime streaming sites (catalogs) downloaders"""
|
|
from .base import BaseAnimeSite
|
|
# Import all anime site downloaders
|
|
from .animesama import AnimeSamaDownloader
|
|
from .nekosama import NekoSamaDownloader
|
|
from .animeultime import AnimeUltimeDownloader
|
|
from .vostfree import VostfreeDownloader
|
|
from .frenchmanga import FrenchMangaDownloader
|
|
|
|
__all__ = [
|
|
"BaseAnimeSite",
|
|
"AnimeSamaDownloader",
|
|
"NekoSamaDownloader",
|
|
"AnimeUltimeDownloader",
|
|
"VostfreeDownloader",
|
|
"FrenchMangaDownloader",
|
|
]
|
|
|
|
|
|
def get_anime_site(url: str) -> BaseAnimeSite:
|
|
"""Factory function to get the appropriate anime site for a URL"""
|
|
sites = [
|
|
AnimeSamaDownloader(),
|
|
AnimeUltimeDownloader(),
|
|
NekoSamaDownloader(),
|
|
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
|