From eb99b7e6ba68d3c983d3b048641ed6e290e0d6dd Mon Sep 17 00:00:00 2001 From: benex Date: Sat, 23 Nov 2024 15:54:53 +0300 Subject: [PATCH] feat(anilist_api): also make the page configurable --- fastanime/libs/anilist/api.py | 38 +++++++++++------------ fastanime/libs/anilist/queries_graphql.py | 34 ++++++++++---------- 2 files changed, 36 insertions(+), 36 deletions(-) diff --git a/fastanime/libs/anilist/api.py b/fastanime/libs/anilist/api.py index 541f436..6aba74f 100644 --- a/fastanime/libs/anilist/api.py +++ b/fastanime/libs/anilist/api.py @@ -139,9 +139,7 @@ class AniListApi: return self._make_authenticated_request(media_list_mutation, variables) def get_anime_list( - self, - status: "AnilistMediaListStatus", - type="ANIME", + self, status: "AnilistMediaListStatus", type="ANIME", page=1, **kwargs ) -> tuple[bool, "AnilistMediaLists"] | tuple[bool, None]: """gets an anime list from your media list given the list status @@ -151,7 +149,12 @@ class AniListApi: Returns: a media list """ - variables = {"status": status, "userId": self.user_id, "type": type} + variables = { + "status": status, + "userId": self.user_id, + "type": type, + "page": page, + } return self._make_authenticated_request(media_list_query, variables) def get_medialist_entry( @@ -351,46 +354,43 @@ class AniListApi: variables = {"id": id} return self.get_data(anime_query, variables) - def get_trending(self, type="ANIME", *_, **kwargs): + def get_trending(self, type="ANIME", page=1, *_, **kwargs): """ Gets the currently trending anime """ - variables = {"type": type} + variables = {"type": type, "page": page} trending = self.get_data(trending_query, variables) return trending - def get_most_favourite(self, type="ANIME", *_, **kwargs): + def get_most_favourite(self, type="ANIME", page=1, *_, **kwargs): """ Gets the most favoured anime on anilist """ - variables = {"type": type} + variables = {"type": type, "page": page} most_favourite = self.get_data(most_favourite_query, variables) return most_favourite - def get_most_scored(self, type="ANIME", *_, **kwargs): + def get_most_scored(self, type="ANIME", page=1, *_, **kwargs): """ Gets most scored anime on anilist """ - variables = {"type": type} + variables = {"type": type, "page": page} most_scored = self.get_data(most_scored_query, variables) return most_scored - def get_most_recently_updated(self, type="ANIME", *_, **kwargs): + def get_most_recently_updated(self, type="ANIME", page=1, *_, **kwargs): """ Gets most recently updated anime from anilist """ - variables = {"type": type} + variables = {"type": type, "page": page} most_recently_updated = self.get_data(most_recently_updated_query, variables) return most_recently_updated - def get_most_popular( - self, - type="ANIME", - ): + def get_most_popular(self, type="ANIME", page=1, **kwargs): """ Gets most popular anime on anilist """ - variables = {"type": type} + variables = {"type": type, "page": page} most_popular = self.get_data(most_popular_query, variables) return most_popular @@ -403,8 +403,8 @@ class AniListApi: return upcoming_anime # NOTE: THe following methods will probably be scraped soon - def get_recommended_anime_for(self, id: int, type="ANIME", *_, **kwargs): - variables = {"type": type} + def get_recommended_anime_for(self, id: int, type="ANIME", page=1, *_, **kwargs): + variables = {"type": type, "page": page} recommended_anime = self.get_data(recommended_query, variables) return recommended_anime diff --git a/fastanime/libs/anilist/queries_graphql.py b/fastanime/libs/anilist/queries_graphql.py index 6131055..585e3da 100644 --- a/fastanime/libs/anilist/queries_graphql.py +++ b/fastanime/libs/anilist/queries_graphql.py @@ -193,8 +193,8 @@ mutation ( """ media_list_query = """ -query ($userId: Int, $status: MediaListStatus, $type: MediaType) { - Page { +query ($userId: Int, $status: MediaListStatus, $type: MediaType, $page: Int) { + Page(perPage: 15, page: $page) { pageInfo { currentPage total @@ -406,8 +406,8 @@ query($query:String,%s){ ) trending_query = """ -query ($type: MediaType) { - Page(perPage: 15) { +query ($type: MediaType, $page: Int) { + Page(perPage: 15, page: $page) { media(sort: TRENDING_DESC, type: $type, genre_not_in: ["hentai"]) { id idMal @@ -471,8 +471,8 @@ query ($type: MediaType) { # mosts most_favourite_query = """ -query ($type: MediaType) { - Page(perPage: 15) { +query ($type: MediaType, $page: Int) { + Page(perPage: 15, page: $page) { media(sort: FAVOURITES_DESC, type: $type, genre_not_in: ["hentai"]) { id idMal @@ -539,8 +539,8 @@ query ($type: MediaType) { """ most_scored_query = """ -query ($type: MediaType) { - Page(perPage: 15) { +query ($type: MediaType, $page: Int) { + Page(perPage: 15, page: $page) { media(sort: SCORE_DESC, type: $type, genre_not_in: ["hentai"]) { id idMal @@ -603,8 +603,8 @@ query ($type: MediaType) { """ most_popular_query = """ -query ($type: MediaType) { - Page(perPage: 15) { +query ($type: MediaType, $page: Int) { + Page(perPage: 15, page: $page) { media(sort: POPULARITY_DESC, type: $type, genre_not_in: ["hentai"]) { id idMal @@ -667,8 +667,8 @@ query ($type: MediaType) { """ most_recently_updated_query = """ -query ($type: MediaType) { - Page(perPage: 15) { +query ($type: MediaType, $page: Int) { + Page(perPage: 15, page: $page) { media( sort: UPDATED_AT_DESC type: $type @@ -738,8 +738,8 @@ query ($type: MediaType) { """ recommended_query = """ -query ($type: MediaType) { - Page(perPage: 15) { +query ($type: MediaType, $page: Int) { + Page(perPage: 15, page: $page) { media(type: $type, genre_not_in: ["hentai"]) { recommendations(sort: RATING_DESC) { nodes { @@ -838,8 +838,8 @@ query ($id: Int, $type: MediaType) { anime_relations_query = """ -query ($id: Int, $type: MediaType) { - Page(perPage: 20) { +query ($type: MediaType, $page: Int) { + Page(perPage: 15, page: $page) { media( id: $id sort: POPULARITY_DESC @@ -924,7 +924,7 @@ query ($id: Int,$type:MediaType) { upcoming_anime_query = """ query ($page: Int, $type: MediaType) { - Page(page: $page) { + Page(perPage: 15, page: $page) { pageInfo { total perPage