From 8a8cf810e4a03453b8254eaad56c27529dc107ef Mon Sep 17 00:00:00 2001 From: Fuwn Date: Fri, 22 Dec 2023 06:53:35 -0800 Subject: feat(wrapped): genres and tags --- src/lib/AniList/media.ts | 18 ++++++++++++++++ src/lib/AniList/wrapped.ts | 52 ++++++++++++++++++++++++++++++++-------------- 2 files changed, 54 insertions(+), 16 deletions(-) (limited to 'src/lib/AniList') diff --git a/src/lib/AniList/media.ts b/src/lib/AniList/media.ts index 039b9db6..6fc83296 100644 --- a/src/lib/AniList/media.ts +++ b/src/lib/AniList/media.ts @@ -342,3 +342,21 @@ export const recentMediaActivities = async ( return null; }; + +export const mediaCover = async (id: number) => + ( + await ( + await fetch('https://graphql.anilist.co', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + Accept: 'application/json' + }, + body: JSON.stringify({ + query: `{ + Media(id: ${id}) { coverImage { extraLarge } } + }` + }) + }) + ).json() + )['data']['Media']['coverImage']['extraLarge']; diff --git a/src/lib/AniList/wrapped.ts b/src/lib/AniList/wrapped.ts index d3c67fa2..35ce7554 100644 --- a/src/lib/AniList/wrapped.ts +++ b/src/lib/AniList/wrapped.ts @@ -1,21 +1,33 @@ import type { AniListAuthorisation, UserIdentity } from './identity'; +export interface WrappedMediaFormat { + startYears: { + startYear: number; + minutesWatched: number; + count: number; + }; + genres: { + meanScore: number; + minutesWatched: number; + chaptersRead: number; + genre: string; + mediaIds: number[]; + }[]; + tags: { + meanScore: number; + minutesWatched: number; + chaptersRead: number; + tag: { + name: string; + }; + mediaIds: number[]; + }[]; +} + export interface Wrapped { statistics: { - anime: { - startYears: { - startYear: number; - minutesWatched: number; - count: number; - }[]; - }; - manga: { - startYears: { - startYear: number; - chaptersRead: number; - count: number; - }[]; - }; + anime: WrappedMediaFormat; + manga: WrappedMediaFormat; }; activities: { statusCount: number; @@ -104,8 +116,16 @@ export const wrapped = async ( User(name: "${identity.name}") { avatar { large } statistics { - anime { startYears { startYear minutesWatched count } } - manga { startYears { startYear chaptersRead count } } + anime { + startYears { startYear minutesWatched count } + genres(sort: [ MEAN_SCORE_DESC ]) { meanScore minutesWatched chaptersRead genre mediaIds } + tags(sort: [ MEAN_SCORE_DESC ]) { meanScore minutesWatched chaptersRead tag { name } mediaIds } + } + manga { + startYears { startYear chaptersRead count } + genres(sort: [ MEAN_SCORE_DESC ]) { meanScore minutesWatched chaptersRead genre mediaIds } + tags(sort: [ MEAN_SCORE_DESC ]) { meanScore minutesWatched chaptersRead tag { name } mediaIds } + } } } }` -- cgit v1.2.3