import { ArchieDoujinAPI } from "../doujin"; import { NhentaiAPISearchBaseURL } from "../utils/const"; import logger from "../utils/logger"; type SearchType = "keyword" | "tag" | "artist" | "character" | "parody"; export const nhentaiSearchAPI = async ( searchType: SearchType, keyword: string, option?: { page?: number; sort?: "recent" | "popular" | "popular-today" | "popular-week"; } ) => { const { page, sort } = option ?? {}; const searchParam = searchType === "keyword" ? keyword : `${searchType}:${keyword}`; const url = `${NhentaiAPISearchBaseURL}query=${searchParam}&sort=${sort ?? "recent"}&page=${page ?? 1}`; //logger.debug(url) const response = await fetch(url); if (!response.ok) { logger.error(`[archieNhnetaiAPI] fetch nehntai search api fail, status: ${response.status}`, response.statusText); throw new Error(`[archieNhnetaiAPI] fetch nehntai search api fail, status: ${response.status}`); } return (await response.json())["result"].map((item: any) => ArchieDoujinAPI.fromSearchResult(item)); };