aboutsummaryrefslogtreecommitdiff
path: root/lib/anify/getMangaId.ts
diff options
context:
space:
mode:
Diffstat (limited to 'lib/anify/getMangaId.ts')
-rw-r--r--lib/anify/getMangaId.ts61
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 };
+ }
+}