feat(anilist): introduce type as a variable

This commit is contained in:
Benex254
2024-08-10 15:39:46 +03:00
parent 1a88b6e998
commit 1fbca22be8
2 changed files with 56 additions and 43 deletions

View File

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

View File

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