aboutsummaryrefslogtreecommitdiff
path: root/src/lib/AniList
diff options
context:
space:
mode:
authorFuwn <[email protected]>2023-09-07 21:05:20 -0700
committerFuwn <[email protected]>2023-09-07 21:05:20 -0700
commit724e1d1b642059784e70894fa10647cd1c2b5206 (patch)
tree52fe2b02c6c4087192bbd495accf9f2e4f0291d9 /src/lib/AniList
parentfeat(routes): profile page (diff)
downloaddue.moe-724e1d1b642059784e70894fa10647cd1c2b5206.tar.xz
due.moe-724e1d1b642059784e70894fa10647cd1c2b5206.zip
feat(media): public media list collection
Diffstat (limited to 'src/lib/AniList')
-rw-r--r--src/lib/AniList/media.ts32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/lib/AniList/media.ts b/src/lib/AniList/media.ts
index 1fddbbe5..341e09a4 100644
--- a/src/lib/AniList/media.ts
+++ b/src/lib/AniList/media.ts
@@ -138,3 +138,35 @@ export const mediaListCollection = async (
return flattenLists(userIdResponse['data']['MediaListCollection']['lists']);
};
+
+export const publicMediaListCollection = async (userId: number, type: Type): Promise<Media[]> => {
+ const userIdResponse = await (
+ await fetch('https://graphql.anilist.co', {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json',
+ Accept: 'application/json'
+ },
+ body: JSON.stringify({
+ query: `{ MediaListCollection(userId: ${userId}, type: ${
+ type === Type.Anime ? 'ANIME' : 'MANGA'
+ }, status_not_in: [ COMPLETED ]) {
+ lists { entries { media {
+ id
+ status
+ type
+ episodes
+ format
+ title { romaji english native }
+ nextAiringEpisode { episode timeUntilAiring }
+ mediaListEntry { progress status }
+ startDate { year }
+ } } }
+ }
+ }`
+ })
+ })
+ ).json();
+
+ return flattenLists(userIdResponse['data']['MediaListCollection']['lists']);
+};