diff options
Diffstat (limited to 'lib/anify/getMangaId.ts')
| -rw-r--r-- | lib/anify/getMangaId.ts | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/lib/anify/getMangaId.ts b/lib/anify/getMangaId.ts new file mode 100644 index 0000000..bf7bb71 --- /dev/null +++ b/lib/anify/getMangaId.ts @@ -0,0 +1,61 @@ +import axios, { AxiosResponse } from "axios"; + +interface Manga { + id: string; + title: { + romaji: string; + english: string; + native: string; + }; +} + +interface SearchResult { + results: Manga[]; +} + +export async function fetchInfo( + romaji: string, + english: string, + native: string +): Promise<{ id: string } | null> { + try { + const { data: getManga }: AxiosResponse<SearchResult> = await axios.get( + `https://api.anify.tv/search-advanced?query=${ + english || romaji + }&type=manga` + ); + + const findManga = getManga?.results?.find( + (manga) => + manga.title.romaji === romaji || + manga.title.english === english || + manga.title.native === native + ); + + if (!findManga) { + return null; + } + + return { id: findManga.id }; + } catch (error) { + console.error("Error fetching data:", error); + return null; + } +} + +export default async function getMangaId( + romaji: string, + english: string, + native: string +): Promise<{ id: string } | { message: string } | { error: any }> { + try { + const data = await fetchInfo(romaji, english, native); + if (data && "id" in data) { + return data; + } else { + return { message: "Schedule not found" }; + } + } catch (error) { + return { error }; + } +} |