diff --git a/fastanime/anilist.py b/fastanime/anilist.py new file mode 100644 index 0000000..97f31be --- /dev/null +++ b/fastanime/anilist.py @@ -0,0 +1,3 @@ +from .libs.anilist.api import AniListApi + +AniList = AniListApi() diff --git a/fastanime/cli/commands/anilist/favourites.py b/fastanime/cli/commands/anilist/favourites.py index 0f1e95c..8368ee6 100644 --- a/fastanime/cli/commands/anilist/favourites.py +++ b/fastanime/cli/commands/anilist/favourites.py @@ -1,6 +1,6 @@ import click -from ....libs.anilist.anilist import AniList +from ....anilist import AniList from ...interfaces.anilist_interfaces import select_anime from ...utils.tools import QueryDict diff --git a/fastanime/cli/commands/anilist/popular.py b/fastanime/cli/commands/anilist/popular.py index 7d5114c..6e41a1b 100644 --- a/fastanime/cli/commands/anilist/popular.py +++ b/fastanime/cli/commands/anilist/popular.py @@ -1,6 +1,6 @@ import click -from ....libs.anilist.anilist import AniList +from ....anilist import AniList from ...interfaces.anilist_interfaces import select_anime from ...utils.tools import QueryDict diff --git a/fastanime/cli/commands/anilist/random_anime.py b/fastanime/cli/commands/anilist/random_anime.py index f8bc471..a124e08 100644 --- a/fastanime/cli/commands/anilist/random_anime.py +++ b/fastanime/cli/commands/anilist/random_anime.py @@ -2,7 +2,7 @@ import random import click -from ....libs.anilist.anilist import AniList +from ....anilist import AniList from ...interfaces.anilist_interfaces import select_anime from ...utils.tools import QueryDict diff --git a/fastanime/cli/commands/anilist/recent.py b/fastanime/cli/commands/anilist/recent.py index 4898f4c..212ccf9 100644 --- a/fastanime/cli/commands/anilist/recent.py +++ b/fastanime/cli/commands/anilist/recent.py @@ -1,6 +1,6 @@ import click -from ....libs.anilist.anilist import AniList +from ....anilist import AniList from ...interfaces.anilist_interfaces import select_anime from ...utils.tools import QueryDict diff --git a/fastanime/cli/commands/anilist/scores.py b/fastanime/cli/commands/anilist/scores.py index 6ca42e6..ecc28f3 100644 --- a/fastanime/cli/commands/anilist/scores.py +++ b/fastanime/cli/commands/anilist/scores.py @@ -1,6 +1,6 @@ import click -from ....libs.anilist.anilist import AniList +from ....anilist import AniList from ...interfaces.anilist_interfaces import select_anime from ...utils.tools import QueryDict diff --git a/fastanime/cli/commands/anilist/search.py b/fastanime/cli/commands/anilist/search.py index 9aa4d2b..f4d3661 100644 --- a/fastanime/cli/commands/anilist/search.py +++ b/fastanime/cli/commands/anilist/search.py @@ -1,6 +1,6 @@ import click -from ....libs.anilist.anilist import AniList +from ....anilist import AniList from ...interfaces.anilist_interfaces import select_anime from ...utils.tools import QueryDict diff --git a/fastanime/cli/commands/anilist/trending.py b/fastanime/cli/commands/anilist/trending.py index 9585e51..716e30a 100644 --- a/fastanime/cli/commands/anilist/trending.py +++ b/fastanime/cli/commands/anilist/trending.py @@ -1,6 +1,6 @@ import click -from ....libs.anilist.anilist import AniList +from ....anilist import AniList from ...interfaces.anilist_interfaces import select_anime from ...utils.tools import QueryDict diff --git a/fastanime/cli/commands/anilist/upcoming.py b/fastanime/cli/commands/anilist/upcoming.py index 99c79f5..16e0284 100644 --- a/fastanime/cli/commands/anilist/upcoming.py +++ b/fastanime/cli/commands/anilist/upcoming.py @@ -1,6 +1,6 @@ import click -from ....libs.anilist.anilist import AniList +from ....anilist import AniList from ...interfaces.anilist_interfaces import select_anime from ...utils.tools import QueryDict diff --git a/fastanime/cli/interfaces/anilist_interfaces.py b/fastanime/cli/interfaces/anilist_interfaces.py index cca8885..8ff7d7c 100644 --- a/fastanime/cli/interfaces/anilist_interfaces.py +++ b/fastanime/cli/interfaces/anilist_interfaces.py @@ -7,7 +7,7 @@ from rich import print from rich.prompt import Prompt from ... import USER_CONFIG_PATH -from ...libs.anilist.anilist import AniList +from ...anilist import AniList from ...libs.anilist.anilist_data_schema import AnilistBaseMediaDataSchema from ...libs.anime_provider.types import Anime, SearchResult, Server from ...libs.fzf import fzf diff --git a/fastanime/libs/anilist/anilist.py b/fastanime/libs/anilist/api.py similarity index 70% rename from fastanime/libs/anilist/anilist.py rename to fastanime/libs/anilist/api.py index 383d83a..d6c624f 100644 --- a/fastanime/libs/anilist/anilist.py +++ b/fastanime/libs/anilist/api.py @@ -23,14 +23,13 @@ from .queries_graphql import ( # from kivy.network.urlrequest import UrlRequestRequests -class AniList: +class AniListApi: """ This class provides an abstraction for the anilist api """ - @classmethod def get_data( - cls, query: str, variables: dict = {} + self, query: str, variables: dict = {} ) -> tuple[bool, AnilistDataSchema]: """ The core abstraction for getting data from the anilist api @@ -43,7 +42,7 @@ class AniList: variables to pass to the anilist api """ url = "https://graphql.anilist.co" - # req=UrlRequestRequests(url, cls.got_data,) + # req=UrlRequestRequests(url, self.got_data,) try: # TODO: check if data is as expected response = requests.post( @@ -68,9 +67,8 @@ class AniList: except Exception as e: return (False, {"Error": f"{e}"}) # type: ignore - @classmethod def search( - cls, + self, query: str | None = None, sort: str | None = None, genre_in: list[str] | None = None, @@ -99,86 +97,75 @@ class AniList: for key, val in list(locals().items())[1:]: if val is not None and key not in ["variables"]: variables[key] = val - search_results = cls.get_data(search_query, variables=variables) + search_results = self.get_data(search_query, variables=variables) return search_results - @classmethod - def get_anime(cls, id: int): + def get_anime(self, id: int): """ Gets a single anime by a valid anilist anime id """ variables = {"id": id} - return cls.get_data(anime_query, variables) + return self.get_data(anime_query, variables) - @classmethod - def get_trending(cls, *_, **kwargs): + def get_trending(self, *_, **kwargs): """ Gets the currently trending anime """ - trending = cls.get_data(trending_query) + trending = self.get_data(trending_query) return trending - @classmethod - def get_most_favourite(cls, *_, **kwargs): + def get_most_favourite(self, *_, **kwargs): """ Gets the most favoured anime on anilist """ - most_favourite = cls.get_data(most_favourite_query) + most_favourite = self.get_data(most_favourite_query) return most_favourite - @classmethod - def get_most_scored(cls, *_, **kwargs): + def get_most_scored(self, *_, **kwargs): """ Gets most scored anime on anilist """ - most_scored = cls.get_data(most_scored_query) + most_scored = self.get_data(most_scored_query) return most_scored - @classmethod - def get_most_recently_updated(cls, *_, **kwargs): + def get_most_recently_updated(self, *_, **kwargs): """ Gets most recently updated anime from anilist """ - most_recently_updated = cls.get_data(most_recently_updated_query) + most_recently_updated = self.get_data(most_recently_updated_query) return most_recently_updated - @classmethod - def get_most_popular(cls, *_, **kwargs): + def get_most_popular(self): """ Gets most popular anime on anilist """ - most_popular = cls.get_data(most_popular_query) + most_popular = self.get_data(most_popular_query) return most_popular # FIXME:dont know why its not giving useful data - @classmethod - def get_recommended_anime_for(cls, id: int, *_, **kwargs): - recommended_anime = cls.get_data(recommended_query) + def get_recommended_anime_for(self, id: int, *_, **kwargs): + recommended_anime = self.get_data(recommended_query) return recommended_anime - @classmethod - def get_charcters_of(cls, id: int, *_, **kwargs): + def get_charcters_of(self, id: int, *_, **kwargs): variables = {"id": id} - characters = cls.get_data(anime_characters_query, variables) + characters = self.get_data(anime_characters_query, variables) return characters - @classmethod - def get_related_anime_for(cls, id: int, *_, **kwargs): + def get_related_anime_for(self, id: int, *_, **kwargs): variables = {"id": id} - related_anime = cls.get_data(anime_relations_query, variables) + related_anime = self.get_data(anime_relations_query, variables) return related_anime - @classmethod - def get_airing_schedule_for(cls, id: int, *_, **kwargs): + def get_airing_schedule_for(self, id: int, *_, **kwargs): variables = {"id": id} - airing_schedule = cls.get_data(airing_schedule_query, variables) + airing_schedule = self.get_data(airing_schedule_query, variables) return airing_schedule - @classmethod - def get_upcoming_anime(cls, page: int = 1, *_, **kwargs): + def get_upcoming_anime(self, page: int = 1, *_, **kwargs): """ Gets upcoming anime from anilist """ variables = {"page": page} - upcoming_anime = cls.get_data(upcoming_anime_query, variables) + upcoming_anime = self.get_data(upcoming_anime_query, variables) return upcoming_anime