fix: issues with anime pahe provider

This commit is contained in:
benex
2024-08-11 20:34:26 +03:00
parent ccaacc9948
commit 09b88df49a
3 changed files with 34 additions and 12 deletions

View File

@@ -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

View File

@@ -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"]

View File

@@ -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