diff --git a/fastanime/cli/interfaces/anilist_interfaces.py b/fastanime/cli/interfaces/anilist_interfaces.py index f717da8..2434a73 100644 --- a/fastanime/cli/interfaces/anilist_interfaces.py +++ b/fastanime/cli/interfaces/anilist_interfaces.py @@ -364,8 +364,20 @@ def provider_anime_episode_servers_menu( # no need to get all servers if top just works with Progress() as progress: progress.add_task("Fetching top server...", total=None) - selected_server = next(episode_streams_generator) - server_name = "top" + try: + selected_server = next(episode_streams_generator) + server_name = "top" + except Exception as e: + print("Failed to get streams. Reason:",e) + if not config.use_rofi: + input("Enter to coninue...") + else: + if not Rofi.confirm(f"!!Sth went wrong!!: {e} Enter to continue"): + exit_app(1) + server_name=None + selected_server="" + media_actions_menu(config,fastanime_runtime_state) + return else: with Progress() as progress: progress.add_task("Fetching servers...", total=None) @@ -400,9 +412,21 @@ def provider_anime_episode_servers_menu( provider_anime_episodes_menu(config, fastanime_runtime_state) return - elif server_name == "top": + elif server_name == "top" and episode_streams_dict.keys(): selected_server = episode_streams_dict[list(episode_streams_dict.keys())[0]] else: + if server_name=="top" or server_name=="back": + if config.use_rofi: + if not Rofi.confirm("No severs available..."): + exit_app() + else: + media_actions_menu(config,fastanime_runtime_state) + return + else: + print("Failed to set server") + input("Enter to continue") + media_actions_menu(config,fastanime_runtime_state) + return selected_server = episode_streams_dict[server_name] # get the stream of the preferred quality diff --git a/fastanime/libs/anime_provider/allanime/api.py b/fastanime/libs/anime_provider/allanime/api.py index 1106555..4fae6e9 100644 --- a/fastanime/libs/anime_provider/allanime/api.py +++ b/fastanime/libs/anime_provider/allanime/api.py @@ -138,9 +138,6 @@ class AllAnimeAPI(AnimeProvider): variables = {"showId": allanime_show_id} try: anime = self._fetch_gql(ALLANIME_SHOW_GQL, variables) - - print(anime) - input() id: str = anime["show"]["_id"] title: str = anime["show"]["name"] availableEpisodesDetail = anime["show"]["availableEpisodesDetail"] diff --git a/fastanime/libs/anime_provider/animepahe/api.py b/fastanime/libs/anime_provider/animepahe/api.py index 993c8ff..fc2acf9 100644 --- a/fastanime/libs/anime_provider/animepahe/api.py +++ b/fastanime/libs/anime_provider/animepahe/api.py @@ -121,9 +121,10 @@ class AnimePaheApi(AnimeProvider): for episode in self.anime["data"] if float(episode["episode"]) == float(episode_number) ] + if not episode: logger.error(f"AnimePahe(streams): episode {episode_number} doesn't exist") - raise Exception("Episode not found") + return [] episode = episode[0] anime_id = anime["id"] @@ -157,7 +158,7 @@ class AnimePaheApi(AnimeProvider): logger.warn( "AnimePahe: embed url not found please report to the developers" ) - raise Exception("Episode not found") + return [] # get embed page embed_response = self.session.get(embed_url, headers=SERVER_HEADERS) embed = embed_response.text @@ -174,14 +175,14 @@ class AnimePaheApi(AnimeProvider): logger.warn( "AnimePahe: Encoded js not found please report to the developers" ) - raise Exception("Episode not found") + return [] # execute the encoded js with node for now or maybe forever in odrder to get a more workable info NODE = shutil.which("node") if not NODE: logger.warn( "AnimePahe: animepahe currently requires node js to extract them juicy streams" ) - raise Exception("Episode not found") + return [] result = subprocess.run( [NODE, "-e", encoded_js], text=True, @@ -193,14 +194,14 @@ class AnimePaheApi(AnimeProvider): logger.warn( "AnimePahe: could not decode encoded js using node please report to developers" ) - raise Exception("Episode not found") + return [] # get that juicy stream match = JUICY_STREAM_REGEX.search(evaluted_js) if not match: logger.warn( "AnimePahe: could not find the juicy stream please report to developers" ) - raise Exception("Episode not found") + return [] # get the actual hls stream link juicy_stream = match.group(1) # add the link