diff options
| author | Ritesh Ghosh <[email protected]> | 2023-08-07 14:48:48 +0530 |
|---|---|---|
| committer | Ritesh Ghosh <[email protected]> | 2023-08-07 14:48:48 +0530 |
| commit | 53af5cbc253b318e28898c4be77b2580eb88c7b9 (patch) | |
| tree | 1bb636259280e7271e8133cc66e26cda74f2546e /src | |
| parent | d40a977bd688a8aba5c0258f089e63630e38ac36 (diff) | |
| download | aniwatch-api-53af5cbc253b318e28898c4be77b2580eb88c7b9.tar.xz aniwatch-api-53af5cbc253b318e28898c4be77b2580eb88c7b9.zip | |
chore(utils): refactored utils exports
Diffstat (limited to 'src')
| -rw-r--r-- | src/utils/index.ts | 214 |
1 files changed, 26 insertions, 188 deletions
diff --git a/src/utils/index.ts b/src/utils/index.ts index f92870b..da9dabb 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -1,190 +1,28 @@ -import { config } from "dotenv"; -import createHttpError, { HttpError } from "http-errors"; -import { CheerioAPI, SelectorType } from "cheerio"; import { - Anime, - Top10Anime, - Top10AnimeTimePeriod, - MostPopularAnime, -} from "../models"; + SRC_AJAX_URL, + SRC_HOME_URL, + SRC_BASE_URL, + ACCEPT_HEADER, + SRC_SEARCH_URL, + USER_AGENT_HEADER, + ACCEPT_ENCODING_HEADER, +} from "./constants"; -config(); - -export const USER_AGENT_HEADER = process.env.APP_SRC_USER_AGENT; -export const ACCEPT_HEADER = process.env.APP_SRC_ACCEPT_HEADER; -export const ACCEPT_ENCODING_HEADER = process.env.APP_SRC_ACCEPT_HEADER; - -export const SRC_BASE_URL = process.env.APP_SRC_BASE_URL; -export const SRC_AJAX_URL = process.env.APP_SRC_AJAX_URL; -export const SRC_HOME_URL = process.env.APP_SRC_HOME_URL; -export const SRC_SEARCH_URL = process.env.APP_SRC_SEARCH_URL; - -export function extractAnimes( - $: CheerioAPI, - selector: SelectorType -): Array<Anime> | HttpError { - try { - const animes: Array<Anime> = []; - - $(selector).each((i, el) => { - const animeId = - $(el) - .find(".film-detail .film-name .dynamic-name") - ?.attr("href") - ?.slice(1) - .split("?ref=search")[0] || null; - - animes.push({ - id: animeId, - name: $(el) - .find(".film-detail .film-name .dynamic-name") - ?.text() - ?.trim(), - poster: - $(el) - .find(".film-poster .film-poster-img") - ?.attr("data-src") - ?.trim() || null, - duration: $(el) - .find(".film-detail .fd-infor .fdi-item.fdi-duration") - ?.text() - ?.trim(), - type: $(el) - .find(".film-detail .fd-infor .fdi-item:nth-of-type(1)") - ?.text() - ?.trim(), - rating: $(el).find(".film-poster .tick-rate")?.text()?.trim() || null, - episodes: { - sub: - Number( - $(el) - .find(".film-poster .tick-sub") - ?.text() - ?.trim() - .split(" ") - .pop() - ) || null, - dub: - Number( - $(el) - .find(".film-poster .tick-dub") - ?.text() - ?.trim() - .split(" ") - .pop() - ) || null, - }, - }); - }); - - return animes; - } catch (err: any) { - throw createHttpError.InternalServerError( - err?.message || "Something went wrong" - ); - } -} - -export function extractTop10Animes( - $: CheerioAPI, - period: Top10AnimeTimePeriod -): Array<Top10Anime> | HttpError { - try { - const animes: Array<Top10Anime> = []; - const selector = `#top-viewed-${period} ul li`; - - $(selector).each((i, el) => { - animes.push({ - id: - $(el) - .find(".film-detail .dynamic-name") - ?.attr("href") - ?.slice(1) - .trim() || null, - rank: Number($(el).find(".film-number span")?.text()?.trim()) || null, - name: $(el).find(".film-detail .dynamic-name")?.text()?.trim() || null, - poster: - $(el) - .find(".film-poster .film-poster-img") - ?.attr("data-src") - ?.trim() || null, - episodes: { - sub: - Number( - $(el) - .find(".film-detail .fd-infor .tick-item.tick-sub") - ?.text() - ?.trim() - ) || null, - dub: - Number( - $(el) - .find(".film-detail .fd-infor .tick-item.tick-dub") - ?.text() - ?.trim() - ) || null, - }, - }); - }); - - return animes; - } catch (err: any) { - throw createHttpError.InternalServerError( - err?.message || "Something went wrong" - ); - } -} - -export function extractMostPopularAnimes( - $: CheerioAPI, - selector: SelectorType -): Array<MostPopularAnime> | HttpError { - try { - const animes: Array<MostPopularAnime> = []; - - $(selector).each((i, el) => { - animes.push({ - id: - $(el) - .find(".film-detail .dynamic-name") - ?.attr("href") - ?.slice(1) - .trim() || null, - name: $(el).find(".film-detail .dynamic-name")?.text()?.trim() || null, - poster: - $(el) - .find(".film-poster .film-poster-img") - ?.attr("data-src") - ?.trim() || null, - jname: - $(el) - .find(".film-detail .film-name .dynamic-name") - .attr("data-jname") - ?.trim() || null, - - episodes: { - sub: - Number($(el)?.find(".fd-infor .tick .tick-sub")?.text()?.trim()) || - null, - dub: - Number($(el)?.find(".fd-infor .tick .tick-dub")?.text()?.trim()) || - null, - }, - type: - $(el) - ?.find(".fd-infor .tick") - ?.text() - ?.trim() - ?.replace(/[\s\n]+/g, " ") - ?.split(" ") - ?.pop() || null, - }); - }); - - return animes; - } catch (err: any) { - throw createHttpError.InternalServerError( - err?.message || "Something went wrong" - ); - } -} +import { + extractAnimes, + extractTop10Animes, + extractMostPopularAnimes, +} from "./methods"; + +export { + SRC_AJAX_URL, + SRC_HOME_URL, + SRC_BASE_URL, + ACCEPT_HEADER, + SRC_SEARCH_URL, + USER_AGENT_HEADER, + ACCEPT_ENCODING_HEADER, + extractAnimes, + extractTop10Animes, + extractMostPopularAnimes, +}; |
