mirror of
https://github.com/Benexl/FastAnime.git
synced 2025-12-26 04:41:34 -08:00
71 lines
2.0 KiB
Python
71 lines
2.0 KiB
Python
from typing import Iterator
|
|
|
|
from .libs.anilist.anilist_data_schema import AnilistBaseMediaDataSchema
|
|
from .libs.anime_provider import anime_sources
|
|
from .libs.anime_provider.types import Anime, SearchResults, Server
|
|
|
|
|
|
class AnimeProvider:
|
|
"""
|
|
Class that manages all anime sources adding some extra functionality to them.
|
|
"""
|
|
|
|
PROVIDERS = list(anime_sources.keys())
|
|
provider = PROVIDERS[0]
|
|
|
|
def __init__(self, provider, dynamic=False, retries=0) -> None:
|
|
self.provider = provider
|
|
self.dynamic = dynamic
|
|
self.retries = retries
|
|
self.load_provider_obj()
|
|
|
|
def load_provider_obj(self):
|
|
anime_provider = anime_sources[self.provider]()
|
|
self.anime_provider = anime_provider
|
|
|
|
def search_for_anime(
|
|
self,
|
|
user_query,
|
|
translation_type,
|
|
anilist_obj: AnilistBaseMediaDataSchema,
|
|
nsfw=True,
|
|
unknown=True,
|
|
) -> SearchResults | None:
|
|
anime_provider = self.anime_provider
|
|
try:
|
|
results = anime_provider.search_for_anime(
|
|
user_query, translation_type, nsfw, unknown
|
|
)
|
|
except Exception as e:
|
|
print(e)
|
|
results = None
|
|
return results # pyright:ignore
|
|
|
|
def get_anime(
|
|
self, anime_id: str, anilist_obj: AnilistBaseMediaDataSchema
|
|
) -> Anime | None:
|
|
anime_provider = self.anime_provider
|
|
try:
|
|
results = anime_provider.get_anime(anime_id)
|
|
except Exception as e:
|
|
print(e)
|
|
results = None
|
|
return results
|
|
|
|
def get_episode_streams(
|
|
self,
|
|
anime,
|
|
episode: str,
|
|
translation_type: str,
|
|
anilist_obj: AnilistBaseMediaDataSchema,
|
|
) -> Iterator[Server] | None:
|
|
anime_provider = self.anime_provider
|
|
try:
|
|
results = anime_provider.get_episode_streams(
|
|
anime, episode, translation_type
|
|
)
|
|
except Exception as e:
|
|
print(e)
|
|
results = None
|
|
return results # pyright:ignore
|