aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRitesh Ghosh <[email protected]>2023-08-07 14:48:48 +0530
committerRitesh Ghosh <[email protected]>2023-08-07 14:48:48 +0530
commit53af5cbc253b318e28898c4be77b2580eb88c7b9 (patch)
tree1bb636259280e7271e8133cc66e26cda74f2546e /src
parentd40a977bd688a8aba5c0258f089e63630e38ac36 (diff)
downloadaniwatch-api-53af5cbc253b318e28898c4be77b2580eb88c7b9.tar.xz
aniwatch-api-53af5cbc253b318e28898c4be77b2580eb88c7b9.zip
chore(utils): refactored utils exports
Diffstat (limited to 'src')
-rw-r--r--src/utils/index.ts214
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,
+};