diff --git a/fastanime/libs/anilist/api.py b/fastanime/libs/anilist/api.py index 4bdc8bb..95625c4 100644 --- a/fastanime/libs/anilist/api.py +++ b/fastanime/libs/anilist/api.py @@ -126,7 +126,9 @@ class AniListApi: return self._make_authenticated_request(media_list_mutation, variables) def get_anime_list( - self, status: "AnilistMediaListStatus" + self, + status: "AnilistMediaListStatus", + type="ANIME", ) -> tuple[bool, "AnilistMediaLists"] | tuple[bool, None]: """gets an anime list from your media list given the list status @@ -136,7 +138,7 @@ class AniListApi: Returns: a media list """ - variables = {"status": status, "userId": self.user_id} + variables = {"status": status, "userId": self.user_id, "type": type} return self._make_authenticated_request(media_list_query, variables) def get_medialist_entry( @@ -310,6 +312,7 @@ class AniListApi: start_greater: int | None = None, start_lesser: int | None = None, page: int | None = None, + type="ANIME", **kwargs, ): """ @@ -329,65 +332,74 @@ class AniListApi: variables = {"id": id} return self.get_data(anime_query, variables) - def get_trending(self, *_, **kwargs): + def get_trending(self, type="ANIME", *_, **kwargs): """ Gets the currently trending anime """ - trending = self.get_data(trending_query) + variables = {"type": type} + trending = self.get_data(trending_query, variables) return trending - def get_most_favourite(self, *_, **kwargs): + def get_most_favourite(self, type="ANIME", *_, **kwargs): """ Gets the most favoured anime on anilist """ - most_favourite = self.get_data(most_favourite_query) + variables = {"type": type} + most_favourite = self.get_data(most_favourite_query, variables) return most_favourite - def get_most_scored(self, *_, **kwargs): + def get_most_scored(self, type="ANIME", *_, **kwargs): """ Gets most scored anime on anilist """ - most_scored = self.get_data(most_scored_query) + variables = {"type": type} + most_scored = self.get_data(most_scored_query, variables) return most_scored - def get_most_recently_updated(self, *_, **kwargs): + def get_most_recently_updated(self, type="ANIME", *_, **kwargs): """ Gets most recently updated anime from anilist """ - most_recently_updated = self.get_data(most_recently_updated_query) + variables = {"type": type} + most_recently_updated = self.get_data(most_recently_updated_query, variables) return most_recently_updated - def get_most_popular(self): + def get_most_popular( + self, + type="ANIME", + ): """ Gets most popular anime on anilist """ - most_popular = self.get_data(most_popular_query) + variables = {"type": type} + most_popular = self.get_data(most_popular_query, variables) return most_popular - def get_upcoming_anime(self, page: int = 1, *_, **kwargs): + def get_upcoming_anime(self, type="ANIME", page: int = 1, *_, **kwargs): """ Gets upcoming anime from anilist """ - variables = {"page": page} + variables = {"page": page, "type": type} upcoming_anime = self.get_data(upcoming_anime_query, variables) return upcoming_anime # NOTE: THe following methods will probably be scraped soon - def get_recommended_anime_for(self, id: int, *_, **kwargs): - recommended_anime = self.get_data(recommended_query) + def get_recommended_anime_for(self, id: int, type="ANIME", *_, **kwargs): + variables = {"type": type} + recommended_anime = self.get_data(recommended_query, variables) return recommended_anime - def get_charcters_of(self, id: int, *_, **kwargs): + def get_charcters_of(self, id: int, type="ANIME", *_, **kwargs): variables = {"id": id} characters = self.get_data(anime_characters_query, variables) return characters - def get_related_anime_for(self, id: int, *_, **kwargs): + def get_related_anime_for(self, id: int, type="ANIME", *_, **kwargs): variables = {"id": id} related_anime = self.get_data(anime_relations_query, variables) return related_anime - def get_airing_schedule_for(self, id: int, *_, **kwargs): + def get_airing_schedule_for(self, id: int, type="ANIME", *_, **kwargs): variables = {"id": id} airing_schedule = self.get_data(airing_schedule_query, variables) return airing_schedule diff --git a/fastanime/libs/anilist/queries_graphql.py b/fastanime/libs/anilist/queries_graphql.py index 936caba..a8dcb7e 100644 --- a/fastanime/libs/anilist/queries_graphql.py +++ b/fastanime/libs/anilist/queries_graphql.py @@ -122,13 +122,13 @@ mutation($mediaId:Int,$scoreRaw:Int,$repeat:Int,$progress:Int,$status:MediaListS """ media_list_query = """ -query ($userId: Int, $status: MediaListStatus) { +query ($userId: Int, $status: MediaListStatus,$type:MediaType) { Page { pageInfo { currentPage total } - mediaList(userId: $userId, status: $status, type: ANIME) { + mediaList(userId: $userId, status: $status, type: $type) { mediaId media { @@ -223,7 +223,8 @@ $averageScore_lesser:Int,\ $startDate_greater:FuzzyDateInt,\ $startDate_lesser:FuzzyDateInt,\ $endDate_greater:FuzzyDateInt,\ -$endDate_lesser:FuzzyDateInt\ +$endDate_lesser:FuzzyDateInt,\ +$type:MediaType\ " # FuzzyDateInt = (yyyymmdd) # MediaStatus = (FINISHED,RELEASING,NOT_YET_RELEASED,CANCELLED,HIATUS) @@ -255,7 +256,7 @@ query($query:String,%s){ endDate_greater:$endDate_greater, endDate_lesser:$endDate_lesser, sort:$sort, - type:ANIME + type:$type ) { id @@ -316,10 +317,10 @@ query($query:String,%s){ ) trending_query = """ -query{ +query($type:MediaType){ Page(perPage:15){ - media(sort:TRENDING_DESC,type:ANIME,genre_not_in:["hentai"]){ + media(sort:TRENDING_DESC,type:$type,genre_not_in:["hentai"]){ id idMal title{ @@ -376,9 +377,9 @@ query{ # mosts most_favourite_query = """ -query{ +query($type:MediaType){ Page(perPage:15){ - media(sort:FAVOURITES_DESC,type:ANIME,genre_not_in:["hentai"]){ + media(sort:FAVOURITES_DESC,type:$type,genre_not_in:["hentai"]){ id idMal title{ @@ -435,9 +436,9 @@ query{ """ most_scored_query = """ -query{ +query($type:MediaType){ Page(perPage:15){ - media(sort:SCORE_DESC,type:ANIME,genre_not_in:["hentai"]){ + media(sort:SCORE_DESC,type:$type,genre_not_in:["hentai"]){ id idMal title{ @@ -494,9 +495,9 @@ query{ """ most_popular_query = """ -query{ +query($type:MediaType){ Page(perPage:15){ - media(sort:POPULARITY_DESC,type:ANIME,genre_not_in:["hentai"]){ + media(sort:POPULARITY_DESC,type:$type,genre_not_in:["hentai"]){ id idMal title{ @@ -553,9 +554,9 @@ query{ """ most_recently_updated_query = """ -query{ +query($type:MediaType){ Page(perPage:15){ - media(sort:UPDATED_AT_DESC,type:ANIME,averageScore_greater:50,genre_not_in:["hentai"],status:RELEASING){ + media(sort:UPDATED_AT_DESC,type:$type,averageScore_greater:50,genre_not_in:["hentai"],status:RELEASING){ id idMal title{ @@ -611,9 +612,9 @@ query{ """ recommended_query = """ -query { +query($type:MediaType){ Page(perPage:15) { - media( type: ANIME,genre_not_in:["hentai"]) { + media( type: $type,genre_not_in:["hentai"]) { recommendations(sort:RATING_DESC){ nodes{ media{ @@ -671,9 +672,9 @@ query { """ anime_characters_query = """ -query($id:Int){ +query($id:Int,$type:MediaType){ Page { - media(id:$id, type: ANIME) { + media(id:$id, type: $type) { characters { nodes { name { @@ -706,9 +707,9 @@ query($id:Int){ anime_relations_query = """ -query ($id: Int) { +query ($id: Int,$type:MediaType) { Page(perPage: 20) { - media(id: $id, sort: POPULARITY_DESC, type: ANIME,genre_not_in:["hentai"]) { + media(id: $id, sort: POPULARITY_DESC, type: $type,genre_not_in:["hentai"]) { relations { nodes { id @@ -763,9 +764,9 @@ query ($id: Int) { """ airing_schedule_query = """ -query ($id: Int) { +query ($id: Int,$type:MediaType) { Page { - media(id: $id, sort: POPULARITY_DESC, type: ANIME) { + media(id: $id, sort: POPULARITY_DESC, type: $type) { airingSchedule(notYetAired:true){ nodes{ airingAt @@ -780,7 +781,7 @@ query ($id: Int) { """ upcoming_anime_query = """ -query ($page: Int) { +query ($page: Int,$type:MediaType) { Page(page: $page) { pageInfo { total @@ -788,7 +789,7 @@ query ($page: Int) { currentPage hasNextPage } - media(type: ANIME, status: NOT_YET_RELEASED,sort:POPULARITY_DESC,genre_not_in:["hentai"]) { + media(type: $type, status: NOT_YET_RELEASED,sort:POPULARITY_DESC,genre_not_in:["hentai"]) { id idMal title {