From 724e1d1b642059784e70894fa10647cd1c2b5206 Mon Sep 17 00:00:00 2001 From: Fuwn Date: Thu, 7 Sep 2023 21:05:20 -0700 Subject: feat(media): public media list collection --- src/lib/AniList/media.ts | 32 +++++++ src/lib/List/User/AnimeList.svelte | 186 +++++++++++++++++++++++++++++++++++++ 2 files changed, 218 insertions(+) create mode 100644 src/lib/List/User/AnimeList.svelte (limited to 'src/lib') 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 => { + 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']); +}; diff --git a/src/lib/List/User/AnimeList.svelte b/src/lib/List/User/AnimeList.svelte new file mode 100644 index 00000000..43608fc9 --- /dev/null +++ b/src/lib/List/User/AnimeList.svelte @@ -0,0 +1,186 @@ + + +{#await animeLists} + Anime [...] ...s + + +{:then media} + {@const cleanedMedia = cleanMedia(media, displayUnresolved)} + + Anime [{cleanedMedia.length}] + {endTime / 1000}s + + {#if cleanedMedia.length === 0} + + {/if} + + +{:catch} + Anime [?] 0s + + +{/await} -- cgit v1.2.3