diff options
| author | WBRK-dev <[email protected]> | 2024-07-21 10:18:05 +0200 |
|---|---|---|
| committer | WBRK-dev <[email protected]> | 2024-07-21 10:18:05 +0200 |
| commit | 5d929461ce918006b9c3977e5af5f76799e820b3 (patch) | |
| tree | 39c624d91029959ad0d4f2af8e1dd8b911d6f728 | |
| parent | 62fa83a56d5e5ea4cc5e7b38b478208b0c5e6a72 (diff) | |
| download | aniwatch-api-5d929461ce918006b9c3977e5af5f76799e820b3.tar.xz aniwatch-api-5d929461ce918006b9c3977e5af5f76799e820b3.zip | |
feat: added `mostPopular`, `mostFavorite` and `latestCompleted` to the home route response
| -rw-r--r-- | README.md | 41 | ||||
| -rw-r--r-- | src/parsers/homePage.ts | 6 | ||||
| -rw-r--r-- | src/types/anime.ts | 2 | ||||
| -rw-r--r-- | src/types/parsers/homePage.ts | 6 | ||||
| -rw-r--r-- | test/homePage.test.ts | 3 |
5 files changed, 56 insertions, 2 deletions
@@ -182,9 +182,7 @@ console.log(data); id: string, name: string, poster: string, - duration: string, type: string, - rating: string, episodes: { sub: number, dub: number, @@ -258,6 +256,45 @@ console.log(data); }, {...}, ], + mostPopularAnimes: [ + { + id: string, + name: string, + poster: string, + type: string, + episodes: { + sub: number, + dub: number, + } + }, + {...}, + ], + mostFavoriteAnimes: [ + { + id: string, + name: string, + poster: string, + type: string, + episodes: { + sub: number, + dub: number, + } + }, + {...}, + ], + latestCompletedAnimes: [ + { + id: string, + name: string, + poster: string, + type: string, + episodes: { + sub: number, + dub: number, + } + }, + {...}, + ], } ``` diff --git a/src/parsers/homePage.ts b/src/parsers/homePage.ts index b03b94e..1409a09 100644 --- a/src/parsers/homePage.ts +++ b/src/parsers/homePage.ts @@ -25,6 +25,9 @@ async function scrapeHomePage(): Promise<ScrapedHomePage | HttpError> { month: [], }, topAiringAnimes: [], + mostPopularAnimes: [], + mostFavoriteAnimes: [], + latestCompletedAnimes: [], genres: [], }; @@ -160,6 +163,9 @@ async function scrapeHomePage(): Promise<ScrapedHomePage | HttpError> { }); res.topAiringAnimes = extractMostPopularAnimes($, "#anime-featured .row div:nth-of-type(1) .anif-block-ul ul li"); + res.mostPopularAnimes = extractMostPopularAnimes($, "#anime-featured .row div:nth-of-type(2) .anif-block-ul ul li"); + res.mostFavoriteAnimes = extractMostPopularAnimes($, "#anime-featured .row div:nth-of-type(3) .anif-block-ul ul li"); + res.latestCompletedAnimes = extractMostPopularAnimes($, "#anime-featured .row div:nth-of-type(4) .anif-block-ul ul li"); return res; } catch (err: any) { diff --git a/src/types/anime.ts b/src/types/anime.ts index 52bf13a..0d32382 100644 --- a/src/types/anime.ts +++ b/src/types/anime.ts @@ -39,6 +39,8 @@ export interface LatestEpisodeAnime extends Anime {} export interface TopUpcomingAnime extends Anime {} export interface TopAiringAnime extends MostPopularAnime {} +export interface MostFavoriteAnime extends MostPopularAnime {} +export interface LatestCompletedAnime extends MostPopularAnime {} export interface AnimeGeneralAboutInfo extends Pick<Anime, CommonAnimeProps>, diff --git a/src/types/parsers/homePage.ts b/src/types/parsers/homePage.ts index 5641a9a..23f6284 100644 --- a/src/types/parsers/homePage.ts +++ b/src/types/parsers/homePage.ts @@ -4,6 +4,9 @@ import type { TopAiringAnime, TopUpcomingAnime, LatestEpisodeAnime, + MostFavoriteAnime, + MostPopularAnime, + LatestCompletedAnime, } from "../anime.js"; import type { HttpError } from "http-errors"; import type { ScrapedAnimeCategory } from "./animeCategory.js"; @@ -15,4 +18,7 @@ export interface ScrapedHomePage latestEpisodeAnimes: Array<LatestEpisodeAnime> | HttpError; topUpcomingAnimes: Array<TopUpcomingAnime> | HttpError; topAiringAnimes: Array<TopAiringAnime> | HttpError; + mostPopularAnimes: Array<MostPopularAnime> | HttpError; + mostFavoriteAnimes: Array<MostFavoriteAnime> | HttpError; + latestCompletedAnimes: Array<LatestCompletedAnime> | HttpError; } diff --git a/test/homePage.test.ts b/test/homePage.test.ts index 192a060..25b409c 100644 --- a/test/homePage.test.ts +++ b/test/homePage.test.ts @@ -9,6 +9,9 @@ test("returns anime information present in homepage", async () => { expect(data.latestEpisodeAnimes).not.toEqual([]); expect(data.topUpcomingAnimes).not.toEqual([]); expect(data.topAiringAnimes).not.toEqual([]); + expect(data.mostPopularAnimes).not.toEqual([]); + expect(data.mostFavoriteAnimes).not.toEqual([]); + expect(data.latestCompletedAnimes).not.toEqual([]); expect(data.genres).not.toEqual([]); expect(data.top10Animes.today).not.toEqual([]); |
