diff options
| author | Fuwn <[email protected]> | 2023-12-22 06:53:35 -0800 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2023-12-22 06:53:35 -0800 |
| commit | 8a8cf810e4a03453b8254eaad56c27529dc107ef (patch) | |
| tree | ef2f83e3bb47f5c0e925d91f33ed592a99611da4 /src/lib/AniList | |
| parent | fix(activity): only show current year (diff) | |
| download | due.moe-8a8cf810e4a03453b8254eaad56c27529dc107ef.tar.xz due.moe-8a8cf810e4a03453b8254eaad56c27529dc107ef.zip | |
feat(wrapped): genres and tags
Diffstat (limited to 'src/lib/AniList')
| -rw-r--r-- | src/lib/AniList/media.ts | 18 | ||||
| -rw-r--r-- | src/lib/AniList/wrapped.ts | 52 |
2 files changed, 54 insertions, 16 deletions
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 } + } } } }` |