From 8555edb5215bb87510e715cd14ce95c2d14aab0a Mon Sep 17 00:00:00 2001 From: Benex254 Date: Sun, 22 Sep 2024 21:25:52 +0300 Subject: [PATCH] feat: dont pass obj to providers --- fastanime/AnimeProvider.py | 7 +++++-- fastanime/cli/commands/download.py | 2 +- fastanime/cli/commands/grab.py | 2 +- fastanime/cli/commands/search.py | 14 +++++++------- fastanime/cli/interfaces/anilist_interfaces.py | 3 ++- fastanime/libs/anime_provider/allanime/api.py | 17 +++++++++-------- fastanime/libs/anime_provider/animepahe/api.py | 7 ++++--- fastanime/libs/anime_provider/hianime/api.py | 4 +++- 8 files changed, 32 insertions(+), 24 deletions(-) diff --git a/fastanime/AnimeProvider.py b/fastanime/AnimeProvider.py index 5312078..25fb901 100644 --- a/fastanime/AnimeProvider.py +++ b/fastanime/AnimeProvider.py @@ -92,7 +92,8 @@ class AnimeProvider: def get_episode_streams( self, - anime, + anime_id, + anime_title, episode: str, translation_type: str, ) -> "Iterator[Server] | None": @@ -108,5 +109,7 @@ class AnimeProvider: [TODO:return] """ anime_provider = self.anime_provider - results = anime_provider.get_episode_streams(anime, episode, translation_type) + results = anime_provider.get_episode_streams( + anime_id, anime_title, episode, translation_type + ) return results diff --git a/fastanime/cli/commands/download.py b/fastanime/cli/commands/download.py index f0a256a..e5ae336 100644 --- a/fastanime/cli/commands/download.py +++ b/fastanime/cli/commands/download.py @@ -284,7 +284,7 @@ def download( with Progress() as progress: progress.add_task("Fetching Episode Streams...", total=None) streams = anime_provider.get_episode_streams( - anime, episode, config.translation_type + anime["id"], anime["title"], episode, config.translation_type ) if not streams: print("No streams skipping") diff --git a/fastanime/cli/commands/grab.py b/fastanime/cli/commands/grab.py index 5ed4a50..0f41771 100644 --- a/fastanime/cli/commands/grab.py +++ b/fastanime/cli/commands/grab.py @@ -217,7 +217,7 @@ def grab( if episode not in episodes: continue streams = anime_provider.get_episode_streams( - anime, episode, config.translation_type + anime["id"], anime["title"], episode, config.translation_type ) if not streams: continue diff --git a/fastanime/cli/commands/search.py b/fastanime/cli/commands/search.py index 0c97ae1..96723ee 100644 --- a/fastanime/cli/commands/search.py +++ b/fastanime/cli/commands/search.py @@ -247,7 +247,7 @@ def search(config: "Config", anime_titles: str, episode_range: str): anilist_anime_info = get_basic_anime_info_by_title(anime["title"]) - def stream_anime(): + def stream_anime(anime: "Anime"): clear() episode = None @@ -283,7 +283,7 @@ def search(config: "Config", anime_titles: str, episode_range: str): with Progress() as progress: progress.add_task("Fetching Episode Streams...", total=None) streams = anime_provider.get_episode_streams( - anime, episode, config.translation_type + anime["id"], anime["title"], episode, config.translation_type ) if not streams: print("Failed to get streams") @@ -298,13 +298,13 @@ def search(config: "Config", anime_titles: str, episode_range: str): if not server: print("Sth went wrong when fetching the episode") input("Enter to continue") - stream_anime() + stream_anime(anime) return stream_link = filter_by_quality(config.quality, server["links"]) if not stream_link: print("Quality not found") input("Enter to continue") - stream_anime() + stream_anime(anime) return link = stream_link["link"] subtitles = server["subtitles"] @@ -334,7 +334,7 @@ def search(config: "Config", anime_titles: str, episode_range: str): if not stream_link: print("Quality not found") input("Enter to continue") - stream_anime() + stream_anime(anime) return link = stream_link["link"] stream_headers = servers[server]["headers"] @@ -380,6 +380,6 @@ def search(config: "Config", anime_titles: str, episode_range: str): except IndexError as e: print(e) input("Enter to continue") - stream_anime() + stream_anime(anime) - stream_anime() + stream_anime(anime) diff --git a/fastanime/cli/interfaces/anilist_interfaces.py b/fastanime/cli/interfaces/anilist_interfaces.py index 0ad14ad..7271e54 100644 --- a/fastanime/cli/interfaces/anilist_interfaces.py +++ b/fastanime/cli/interfaces/anilist_interfaces.py @@ -387,7 +387,8 @@ def provider_anime_episode_servers_menu( with Progress() as progress: progress.add_task("Fetching Episode Streams...", total=None) episode_streams_generator = anime_provider.get_episode_streams( - provider_anime, + provider_anime["id"], + provider_anime["title"], current_episode_number, translation_type, ) diff --git a/fastanime/libs/anime_provider/allanime/api.py b/fastanime/libs/anime_provider/allanime/api.py index ac528a4..50ba1e2 100644 --- a/fastanime/libs/anime_provider/allanime/api.py +++ b/fastanime/libs/anime_provider/allanime/api.py @@ -153,7 +153,9 @@ class AllAnimeAPI(AnimeProvider): return episode["episode"] @debug_provider("ALLANIME") - def get_episode_streams(self, anime, episode_number: str, translation_type="sub"): + def get_episode_streams( + self, anime_id, anime_title, episode_number: str, translation_type="sub" + ): """get the streams of an episode Args: @@ -164,7 +166,6 @@ class AllAnimeAPI(AnimeProvider): Yields: [TODO:description] """ - anime_id = anime["id"] allanime_episode = self._get_anime_episode( anime_id, episode_number, translation_type ) @@ -202,7 +203,7 @@ class AllAnimeAPI(AnimeProvider): if "tools.fast4speed.rsvp" in url: return { "server": "Yt", - "episode_title": f'{anime["title"]}; Episode {episode_number}', + "episode_title": f"{anime_title}; Episode {episode_number}", "headers": {"Referer": f"https://{ALLANIME_BASE}/"}, "subtitles": [], "links": [ @@ -229,7 +230,7 @@ class AllAnimeAPI(AnimeProvider): "headers": {}, "subtitles": [], "episode_title": ( - allanime_episode["notes"] or f'{anime["title"]}' + allanime_episode["notes"] or f"{anime_title}" ) + f"; Episode {episode_number}", "links": give_random_quality(resp.json()["links"]), @@ -241,7 +242,7 @@ class AllAnimeAPI(AnimeProvider): "headers": {}, "subtitles": [], "episode_title": ( - allanime_episode["notes"] or f'{anime["title"]}' + allanime_episode["notes"] or f"{anime_title}" ) + f"; Episode {episode_number}", "links": give_random_quality(resp.json()["links"]), @@ -253,7 +254,7 @@ class AllAnimeAPI(AnimeProvider): "headers": {}, "subtitles": [], "episode_title": ( - allanime_episode["notes"] or f'{anime["title"]}' + allanime_episode["notes"] or f"{anime_title}" ) + f"; Episode {episode_number}", "links": give_random_quality(resp.json()["links"]), @@ -265,7 +266,7 @@ class AllAnimeAPI(AnimeProvider): "headers": {}, "subtitles": [], "episode_title": ( - allanime_episode["notes"] or f'{anime["title"]}' + allanime_episode["notes"] or f"{anime_title}" ) + f"; Episode {episode_number}", "links": give_random_quality(resp.json()["links"]), @@ -277,7 +278,7 @@ class AllAnimeAPI(AnimeProvider): "headers": {}, "subtitles": [], "episode_title": ( - allanime_episode["notes"] or f'{anime["title"]}' + allanime_episode["notes"] or f"{anime_title}" ) + f"; Episode {episode_number}", "links": give_random_quality(resp.json()["links"]), diff --git a/fastanime/libs/anime_provider/animepahe/api.py b/fastanime/libs/anime_provider/animepahe/api.py index 877da21..5e7cb66 100644 --- a/fastanime/libs/anime_provider/animepahe/api.py +++ b/fastanime/libs/anime_provider/animepahe/api.py @@ -147,7 +147,9 @@ class AnimePaheApi(AnimeProvider): } @debug_provider("ANIMEPAHE") - def get_episode_streams(self, anime, episode_number: str, translation_type, *args): + def get_episode_streams( + self, anime_id, anime_title, episode_number: str, translation_type, *args + ): # extract episode details from memory episode = [ episode @@ -160,7 +162,6 @@ class AnimePaheApi(AnimeProvider): return [] episode = episode[0] - anime_id = anime["id"] # fetch the episode page url = f"{ANIMEPAHE_BASE}/play/{anime_id}/{episode['session']}" response = self.session.get(url) @@ -175,7 +176,7 @@ class AnimePaheApi(AnimeProvider): # get the episode title episode_title = ( - f"{episode['title'] or anime['title']}; Episode {episode['episode']}" + f"{episode['title'] or anime_title}; Episode {episode['episode']}" ) # get all links streams = { diff --git a/fastanime/libs/anime_provider/hianime/api.py b/fastanime/libs/anime_provider/hianime/api.py index 37e35c0..1d398d9 100644 --- a/fastanime/libs/anime_provider/hianime/api.py +++ b/fastanime/libs/anime_provider/hianime/api.py @@ -139,7 +139,9 @@ class HiAnimeApi(AnimeProvider): } @debug_provider("ANIWATCH") - def get_episode_streams(self, anime, episode, translation_type, *args): + def get_episode_streams( + self, anime_id, anime_title, episode, translation_type, *args + ): episode_details = [ episode_details for episode_details in self.episodes_info