aboutsummaryrefslogtreecommitdiff
path: root/lib/anilist/aniAdvanceSearch.js
diff options
context:
space:
mode:
authorFactiven <[email protected]>2023-12-24 13:03:54 +0700
committerFactiven <[email protected]>2023-12-24 13:03:54 +0700
commit50a0f0240d7fef133eb5acc1bea2b1168b08e9db (patch)
tree307e09e505580415a58d64b5fc3580e9235869f1 /lib/anilist/aniAdvanceSearch.js
parentUpdate README.md (#104) (diff)
downloadmoopa-50a0f0240d7fef133eb5acc1bea2b1168b08e9db.tar.xz
moopa-50a0f0240d7fef133eb5acc1bea2b1168b08e9db.zip
migrate to typescript
Diffstat (limited to 'lib/anilist/aniAdvanceSearch.js')
-rw-r--r--lib/anilist/aniAdvanceSearch.js131
1 files changed, 0 insertions, 131 deletions
diff --git a/lib/anilist/aniAdvanceSearch.js b/lib/anilist/aniAdvanceSearch.js
deleted file mode 100644
index ccfbd27..0000000
--- a/lib/anilist/aniAdvanceSearch.js
+++ /dev/null
@@ -1,131 +0,0 @@
-import { advanceSearchQuery } from "../graphql/query";
-
-export async function aniAdvanceSearch({
- search,
- type,
- genres,
- page,
- sort,
- format,
- season,
- seasonYear,
- perPage,
-}) {
- const categorizedGenres = genres?.reduce((result, item) => {
- const existingEntry = result[item.type];
-
- if (existingEntry) {
- existingEntry.push(item.value);
- } else {
- result[item.type] = [item.value];
- }
-
- return result;
- }, {});
-
- if (type === "MANGA") {
- const controller = new AbortController();
- const signal = controller.signal;
-
- const response = await fetch("https://api.anify.tv/search-advanced", {
- method: "POST",
- signal: signal,
- body: JSON.stringify({
- sort: "averageRating",
- sortDirection: "DESC",
- ...(categorizedGenres && { ...categorizedGenres }),
- ...(search && { query: search }),
- ...(page && { page: page }),
- ...(perPage && { perPage: perPage }),
- ...(format && { format: [format] }),
- ...(seasonYear && { year: Number(seasonYear) }),
- ...(type && { type: format === "NOVEL" ? "novel" : type }),
- }),
- });
-
- const data = await response.json();
- return {
- pageInfo: {
- hasNextPage: page < data.total,
- currentPage: page,
- lastPage: Math.ceil(data.lastPage),
- perPage: perPage ?? 20,
- total: data.total,
- },
- media: data.results?.map((item) => ({
- averageScore: item.averageRating,
- bannerImage: item.bannerImage,
- chapters: item.totalChapters,
- coverImage: {
- color: item.color,
- extraLarge: item.coverImage,
- large: item.coverImage,
- },
- description: item.description,
- duration: item.duration ?? null,
- endDate: {
- day: null,
- month: null,
- year: null,
- },
- mappings: item.mappings,
- format: item.format,
- genres: item.genres,
- id: item.id,
- isAdult: false,
- mediaListEntry: null,
- nextAiringEpisode: null,
- popularity: item.averagePopularity,
- season: null,
- seasonYear: item.year,
- startDate: {
- day: null,
- month: null,
- year: item.year,
- },
- status: item.status,
- studios: { edges: [] },
- title: {
- userPreferred:
- item.title.english ?? item.title.romaji ?? item.title.native,
- },
- type: item.type,
- volumes: item.totalVolumes ?? null,
- })),
- };
- } else {
- const response = await fetch("https://graphql.anilist.co/", {
- method: "POST",
- headers: {
- "Content-Type": "application/json",
- },
- body: JSON.stringify({
- query: advanceSearchQuery,
- variables: {
- ...(search && {
- search: search,
- ...(!sort && { sort: "SEARCH_MATCH" }),
- }),
- ...(type && { type: type }),
- ...(seasonYear && { seasonYear: seasonYear }),
- ...(season && {
- season: season,
- ...(!seasonYear && { seasonYear: new Date().getFullYear() }),
- }),
- ...(categorizedGenres && { ...categorizedGenres }),
- ...(format && { format: format }),
- // ...(genres && { genres: genres }),
- // ...(tags && { tags: tags }),
- ...(perPage && { perPage: perPage }),
- ...(sort && { sort: sort }),
- ...(page && { page: page }),
- },
- }),
- });
-
- const datas = await response.json();
- // console.log(datas);
- const data = datas.data.Page;
- return data;
- }
-}