refactor: simplify debug_provider decorator and remove redundant provider name usage

This commit is contained in:
benex
2024-12-02 10:20:24 +03:00
parent 0667749e4c
commit b3abcb958b
7 changed files with 29 additions and 37 deletions

View File

@@ -26,7 +26,6 @@ class AllAnime(AnimeProvider):
Provides a fast and effective interface to AllAnime site.
"""
PROVIDER = "allanime"
api_endpoint = ALLANIME_API_ENDPOINT
HEADERS = {
"Referer": ALLANIME_REFERER,
@@ -56,7 +55,7 @@ class AllAnime(AnimeProvider):
logger.error("[ALLANIME-ERROR]: ", response.text)
return {}
@debug_provider(PROVIDER.upper())
@debug_provider
def search_for_anime(
self,
user_query: str,
@@ -107,7 +106,7 @@ class AllAnime(AnimeProvider):
}
return normalized_search_results
@debug_provider(PROVIDER.upper())
@debug_provider
def get_anime(self, allanime_show_id: str):
"""get an anime details given its id
@@ -132,7 +131,7 @@ class AllAnime(AnimeProvider):
}
return normalized_anime
@debug_provider(PROVIDER.upper())
@debug_provider
def _get_anime_episode(
self, allanime_show_id: str, episode, translation_type: str = "sub"
) -> "AllAnimeEpisode | dict":
@@ -154,7 +153,7 @@ class AllAnime(AnimeProvider):
episode = self._fetch_gql(ALLANIME_EPISODES_GQL, variables)
return episode["episode"]
@debug_provider(PROVIDER.upper())
@debug_provider
def get_episode_streams(
self, anime_id, episode_number: str, translation_type="sub"
):

View File

@@ -32,9 +32,8 @@ class AnimePahe(AnimeProvider):
search_page: "AnimePaheSearchPage"
anime: "AnimePaheAnimePage"
HEADERS = REQUEST_HEADERS
PROVIDER = "animepahe"
@debug_provider(PROVIDER.upper())
@debug_provider
def search_for_anime(self, user_query: str, *args):
url = f"{ANIMEPAHE_ENDPOINT}m=search&q={user_query}"
response = self.session.get(
@@ -73,7 +72,7 @@ class AnimePahe(AnimeProvider):
],
}
@debug_provider(PROVIDER.upper())
@debug_provider
def get_anime(self, session_id: str, *args):
page = 1
if d := self.store.get(str(session_id), "search_result"):
@@ -151,7 +150,7 @@ class AnimePahe(AnimeProvider):
],
}
@debug_provider(PROVIDER.upper())
@debug_provider
def get_episode_streams(
self, anime_id, episode_number: str, translation_type, *args
):

View File

@@ -5,21 +5,19 @@ import os
logger = logging.getLogger(__name__)
def debug_provider(provider_name: str):
def _provider_function_decorator(provider_function):
@functools.wraps(provider_function)
def _provider_function_wrapper(*args, **kwargs):
if not os.environ.get("FASTANIME_DEBUG"):
try:
return provider_function(*args, **kwargs)
except Exception as e:
logger.error(f"[{provider_name}@{provider_function.__name__}]: {e}")
else:
return provider_function(*args, **kwargs)
def debug_provider(provider_function):
@functools.wraps(provider_function)
def _provider_function_wrapper(self, *args, **kwargs):
provider_name = self.__class__.__name__.upper()
if not os.environ.get("FASTANIME_DEBUG"):
try:
return provider_function(self, *args, **kwargs)
except Exception as e:
logger.error(f"[{provider_name}@{provider_function.__name__}]: {e}")
else:
return provider_function(self, *args, **kwargs)
return _provider_function_wrapper
return _provider_function_decorator
return _provider_function_wrapper
def ensure_internet_connection(provider_function):

View File

@@ -42,9 +42,7 @@ class ParseAnchorAndImgTag(HTMLParser):
class HiAnime(AnimeProvider):
# HEADERS = {"Referer": "https://hianime.to/home"}
PROVIDER = "hianime"
@debug_provider(PROVIDER.upper())
@debug_provider
def search_for_anime(self, anime_title: str, *args):
query = quote_plus(anime_title)
url = f"https://hianime.to/search?keyword={query}"
@@ -92,7 +90,7 @@ class HiAnime(AnimeProvider):
self.store.set(result["id"], "search_result", result)
return {"pageInfo": {}, "results": results}
@debug_provider(PROVIDER.upper())
@debug_provider
def get_anime(self, hianime_id, *args):
anime_result = {}
if d := self.store.get(str(hianime_id), "search_result"):
@@ -145,7 +143,7 @@ class HiAnime(AnimeProvider):
"episodes_info": episodes_info,
}
@debug_provider(PROVIDER.upper())
@debug_provider
def get_episode_streams(self, anime_id, episode, translation_type, *args):
if d := self.store.get(str(anime_id), "anime_info"):
episodes_info = d
@@ -192,7 +190,7 @@ class HiAnime(AnimeProvider):
if not servers_html:
return
@debug_provider(self.PROVIDER.upper())
@debug_provider
def _get_server(server_name, server_html):
# keys: [ data-type: translation_type, data-id: embed_id, data-server-id: server_id ]
servers_info = extract_attributes(server_html)

View File

@@ -29,9 +29,8 @@ EXTRACT_USEFUL_INFO_PATTERN_2 = re.compile(
class Nyaa(AnimeProvider):
search_results: SearchResults
PROVIDER = "nyaa"
@debug_provider(PROVIDER.upper())
@debug_provider
def search_for_anime(self, user_query: str, *args, **_):
self.search_results = search_for_anime_with_anilist(
user_query, True
@@ -39,7 +38,7 @@ class Nyaa(AnimeProvider):
self.user_query = user_query
return self.search_results
@debug_provider(PROVIDER.upper())
@debug_provider
def get_anime(self, anilist_id: str, *_):
for anime in self.search_results["results"]:
if anime["id"] == anilist_id:
@@ -55,7 +54,7 @@ class Nyaa(AnimeProvider):
},
}
@debug_provider(PROVIDER.upper())
@debug_provider
def get_episode_streams(
self,
anime_id: str,

View File

@@ -20,13 +20,12 @@ class Yugen(AnimeProvider):
Provides a fast and effective interface to YugenApi site.
"""
PROVIDER = "yugen"
api_endpoint = YUGEN_ENDPOINT
# HEADERS = {
# "Referer": ALLANIME_REFERER,
# }
@debug_provider(PROVIDER.upper())
@debug_provider
def search_for_anime(
self,
user_query: str,
@@ -94,7 +93,7 @@ class Yugen(AnimeProvider):
"results": results,
}
@debug_provider(PROVIDER.upper())
@debug_provider
def get_anime(self, anime_id: str, **kwargs):
identifier = base64.b64decode(anime_id).decode()
response = self.session.get(f"{YUGEN_ENDPOINT}/anime/{identifier}")
@@ -174,7 +173,7 @@ class Yugen(AnimeProvider):
return data_map
@debug_provider(PROVIDER.upper())
@debug_provider
def get_episode_streams(
self, anime_id, episode_number: str, translation_type="sub"
):