import type { Media } from '$lib/AniList/media'; import { chapterDatabase } from './chapterDatabase'; export const chapterCount = async (manga: Media): Promise => { const chapters = await chapterDatabase.chapters.get(manga.id); if (chapters !== undefined) { return chapters.chapters === -1 ? null : chapters.chapters; } console.log( `Caching ${manga.id} (${manga.title.english || manga.title.romaji || manga.title.native})` ); let mangadexData = await ( await fetch( `https://api.mangadex.org/manga?title=${encodeURIComponent( manga.title.english || manga.title.romaji || manga.title.native )}&year=${manga.startDate.year}` ) ).json(); if (mangadexData['data'] === undefined || mangadexData['data'].length === 0) { mangadexData = await ( await fetch( `https://api.mangadex.org/manga?title=${encodeURIComponent(manga.title.native)}&year=${ manga.startDate.year }` ) ).json(); } if (mangadexData['data'] === undefined || mangadexData['data'].length === 0) { await chapterDatabase.chapters.put({ id: manga.id, chapters: -1 }); return null; } const lastChapterData = await ( await fetch( `https://api.mangadex.org/manga/${mangadexData['data'][0]['id']}/feed?order[chapter]=desc` ) ).json(); if (lastChapterData['data'] === undefined || lastChapterData['data'].length === 0) { await chapterDatabase.chapters.put({ id: manga.id, chapters: -1 }); return null; } let lastChapter = lastChapterData['data'][0]['attributes']['chapter']; if (lastChapter === 0) { lastChapter = null; } await chapterDatabase.chapters.put({ id: manga.id, chapters: lastChapter }); return lastChapter; };