aboutsummaryrefslogtreecommitdiff
path: root/src/lib/AniList
diff options
context:
space:
mode:
authorFuwn <[email protected]>2023-12-22 06:53:35 -0800
committerFuwn <[email protected]>2023-12-22 06:53:35 -0800
commit8a8cf810e4a03453b8254eaad56c27529dc107ef (patch)
treeef2f83e3bb47f5c0e925d91f33ed592a99611da4 /src/lib/AniList
parentfix(activity): only show current year (diff)
downloaddue.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.ts18
-rw-r--r--src/lib/AniList/wrapped.ts52
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 }
+ }
}
}
}`