""" This module contains all the preset queries for the sake of neatness and convinience Mostly for internal usage """ mark_as_read_mutation = """ mutation{ UpdateUser{ unreadNotificationCount } } """ reviews_query = """ query($id:Int){ Page{ pageInfo{ total } reviews(mediaId:$id){ summary user{ name avatar { large medium } } body } } } """ notification_query = """ query { Page(perPage: 5) { pageInfo { total } notifications(resetNotificationCount: true, type: AIRING) { ... on AiringNotification { id type episode contexts createdAt media { id idMal title { romaji english } coverImage { medium } } } } } } """ get_medialist_item_query = """ query ($mediaId: Int) { MediaList(mediaId: $mediaId) { id } } """ delete_list_entry_query = """ mutation ($id: Int) { DeleteMediaListEntry(id: $id) { deleted } } """ get_logged_in_user_query = """ query{ Viewer{ id name bannerImage avatar { large medium } } } """ get_user_info = """ query ($userId: Int) { User(id: $userId) { name about avatar { large medium } bannerImage statistics { anime { count minutesWatched episodesWatched genres { count meanScore genre } tags { tag { id } count meanScore } } manga { count meanScore chaptersRead volumesRead tags { count meanScore } genres { count meanScore } } } favourites { anime { nodes { title { romaji english } } } manga { nodes { title { romaji english } } } } } } """ media_list_mutation = """ mutation ( $mediaId: Int $scoreRaw: Int $repeat: Int $progress: Int $status: MediaListStatus ) { SaveMediaListEntry( mediaId: $mediaId scoreRaw: $scoreRaw progress: $progress repeat: $repeat status: $status ) { id status mediaId score progress repeat startedAt { year month day } completedAt { year month day } } } """ media_list_query = """ query ($userId: Int, $status: MediaListStatus, $type: MediaType) { Page { pageInfo { currentPage total } mediaList(userId: $userId, status: $status, type: $type) { mediaId media { id idMal title { romaji english } coverImage { medium large } trailer { site id } popularity streamingEpisodes { title thumbnail } favourites averageScore episodes genres studios { nodes { name isAnimationStudio } } tags { name } startDate { year month day } endDate { year month day } status description mediaListEntry { status id progress } nextAiringEpisode { timeUntilAiring airingAt episode } } status progress score repeat notes startedAt { year month day } completedAt { year month day } createdAt } } } """ optional_variables = "\ $page:Int,\ $sort:[MediaSort],\ $id_in:[Int],\ $genre_in:[String],\ $genre_not_in:[String],\ $tag_in:[String],\ $tag_not_in:[String],\ $status_in:[MediaStatus],\ $status:MediaStatus,\ $status_not_in:[MediaStatus],\ $popularity_greater:Int,\ $popularity_lesser:Int,\ $averageScore_greater:Int,\ $averageScore_lesser:Int,\ $seasonYear:Int,\ $startDate_greater:FuzzyDateInt,\ $startDate_lesser:FuzzyDateInt,\ $startDate:FuzzyDateInt,\ $endDate_greater:FuzzyDateInt,\ $endDate_lesser:FuzzyDateInt,\ $format_in:[MediaFormat],\ $type:MediaType\ $season:MediaSeason\ $on_list:Boolean\ " search_query = ( """ query($query:String,%s){ Page(perPage: 50, page: $page) { pageInfo { total currentPage hasNextPage } media( search: $query id_in: $id_in genre_in: $genre_in genre_not_in: $genre_not_in tag_in: $tag_in tag_not_in: $tag_not_in status_in: $status_in status: $status startDate: $startDate status_not_in: $status_not_in popularity_greater: $popularity_greater popularity_lesser: $popularity_lesser averageScore_greater: $averageScore_greater averageScore_lesser: $averageScore_lesser startDate_greater: $startDate_greater startDate_lesser: $startDate_lesser endDate_greater: $endDate_greater endDate_lesser: $endDate_lesser format_in: $format_in sort: $sort season: $season seasonYear: $seasonYear type: $type onList:$on_list ) { id idMal title { romaji english } coverImage { medium large } trailer { site id } mediaListEntry { status id progress } popularity streamingEpisodes { title thumbnail } favourites averageScore episodes genres studios { nodes { name isAnimationStudio } } tags { name } startDate { year month day } endDate { year month day } status description nextAiringEpisode { timeUntilAiring airingAt episode } } } } """ % optional_variables ) trending_query = """ query ($type: MediaType) { Page(perPage: 15) { media(sort: TRENDING_DESC, type: $type, genre_not_in: ["hentai"]) { id idMal title { romaji english } coverImage { medium large } trailer { site id } popularity streamingEpisodes { title thumbnail } favourites averageScore genres episodes description studios { nodes { name isAnimationStudio } } tags { name } startDate { year month day } mediaListEntry { status id progress } endDate { year month day } status nextAiringEpisode { timeUntilAiring airingAt episode } } } } """ # mosts most_favourite_query = """ query ($type: MediaType) { Page(perPage: 15) { media(sort: FAVOURITES_DESC, type: $type, genre_not_in: ["hentai"]) { id idMal title { romaji english } coverImage { medium large } trailer { site id } mediaListEntry { status id progress } popularity streamingEpisodes { title thumbnail } streamingEpisodes { title thumbnail } favourites averageScore episodes description genres studios { nodes { name isAnimationStudio } } tags { name } startDate { year month day } endDate { year month day } status nextAiringEpisode { timeUntilAiring airingAt episode } } } } """ most_scored_query = """ query ($type: MediaType) { Page(perPage: 15) { media(sort: SCORE_DESC, type: $type, genre_not_in: ["hentai"]) { id idMal title { romaji english } coverImage { medium large } trailer { site id } mediaListEntry { status id progress } popularity streamingEpisodes { title thumbnail } episodes favourites averageScore description genres studios { nodes { name isAnimationStudio } } tags { name } startDate { year month day } endDate { year month day } status nextAiringEpisode { timeUntilAiring airingAt episode } } } } """ most_popular_query = """ query ($type: MediaType) { Page(perPage: 15) { media(sort: POPULARITY_DESC, type: $type, genre_not_in: ["hentai"]) { id idMal title { romaji english } coverImage { medium large } trailer { site id } popularity streamingEpisodes { title thumbnail } favourites averageScore description episodes genres mediaListEntry { status id progress } studios { nodes { name isAnimationStudio } } tags { name } startDate { year month day } endDate { year month day } status nextAiringEpisode { timeUntilAiring airingAt episode } } } } """ most_recently_updated_query = """ query ($type: MediaType) { Page(perPage: 15) { media( sort: UPDATED_AT_DESC type: $type averageScore_greater: 50 genre_not_in: ["hentai"] status: RELEASING ) { id idMal title { romaji english } coverImage { medium large } trailer { site id } mediaListEntry { status id progress } popularity streamingEpisodes { title thumbnail } favourites averageScore description genres episodes studios { nodes { name isAnimationStudio } } tags { name } startDate { year month day } endDate { year month day } status nextAiringEpisode { timeUntilAiring airingAt episode } } } } """ recommended_query = """ query ($type: MediaType) { Page(perPage: 15) { media(type: $type, genre_not_in: ["hentai"]) { recommendations(sort: RATING_DESC) { nodes { media { id idMal title { english romaji native } coverImage { medium large } mediaListEntry { status id progress } description episodes trailer { site id } genres averageScore popularity streamingEpisodes { title thumbnail } favourites tags { name } startDate { year month day } endDate { year month day } status nextAiringEpisode { timeUntilAiring airingAt episode } } } } } } } """ anime_characters_query = """ query ($id: Int, $type: MediaType) { Page { media(id: $id, type: $type) { characters { nodes { name { first middle last full native } image { medium large } description gender dateOfBirth { year month day } age bloodType favourites } } } } } """ anime_relations_query = """ query ($id: Int, $type: MediaType) { Page(perPage: 20) { media( id: $id sort: POPULARITY_DESC type: $type genre_not_in: ["hentai"] ) { relations { nodes { id idMal title { english romaji native } coverImage { medium large } mediaListEntry { status id progress } description episodes trailer { site id } genres averageScore popularity streamingEpisodes { title thumbnail } favourites tags { name } startDate { year month day } endDate { year month day } status nextAiringEpisode { timeUntilAiring airingAt episode } } } } } } """ airing_schedule_query = """ query ($id: Int,$type:MediaType) { Page { media(id: $id, sort: POPULARITY_DESC, type: $type) { airingSchedule(notYetAired:true){ nodes{ airingAt timeUntilAiring episode } } } } } """ upcoming_anime_query = """ query ($page: Int, $type: MediaType) { Page(page: $page) { pageInfo { total perPage currentPage hasNextPage } media( type: $type status: NOT_YET_RELEASED sort: POPULARITY_DESC genre_not_in: ["hentai"] ) { id idMal title { romaji english } coverImage { medium large } trailer { site id } mediaListEntry { status id progress } popularity streamingEpisodes { title thumbnail } favourites averageScore genres episodes description studios { nodes { name isAnimationStudio } } tags { name } startDate { year month day } endDate { year month day } status nextAiringEpisode { timeUntilAiring airingAt episode } } } } """ anime_query = """ query ($id: Int) { Page { media(id: $id) { id idMal title { romaji english } mediaListEntry { status id progress } nextAiringEpisode { timeUntilAiring airingAt episode } coverImage { extraLarge } characters(perPage: 5, sort: FAVOURITES_DESC) { edges { node { name { full } gender dateOfBirth { year month day } age image { medium large } description } voiceActors { name { full } image { medium large } } } } studios { nodes { name isAnimationStudio } } season format status seasonYear description genres synonyms startDate { year month day } endDate { year month day } duration countryOfOrigin averageScore popularity streamingEpisodes { title thumbnail } favourites source hashtag siteUrl tags { name rank } reviews(sort: SCORE_DESC, perPage: 3) { nodes { summary user { name avatar { medium large } } } } recommendations(sort: RATING_DESC, perPage: 10) { nodes { mediaRecommendation { title { romaji english } } } } relations { nodes { title { romaji english native } } } externalLinks { url site icon } rankings { rank context } bannerImage episodes } } } """