From f6261199f8e83fd52714055023d033afbc09e53f Mon Sep 17 00:00:00 2001 From: WBRK-dev Date: Sun, 28 Apr 2024 11:44:26 +0200 Subject: [PATCH] feat: added characters and voice actors to `/info` endpoint response --- README.md | 17 +++++++++++++++++ src/parsers/animeAboutInfo.ts | 21 +++++++++++++++++++++ src/types/anime.ts | 13 +++++++++++++ 3 files changed, 51 insertions(+) diff --git a/README.md b/README.md index 07c6e54..df3fd80 100644 --- a/README.md +++ b/README.md @@ -334,6 +334,23 @@ console.log(data); thumbnail: string | undefined }, {...}, + ], + characterVoiceActor: [ + { + character: { + id: string, + poster: string, + name: string, + cast: string + }, + voiceActor: { + id: string, + poster: string, + name: string, + cast: string + } + }, + {...}, ] } moreInfo: { diff --git a/src/parsers/animeAboutInfo.ts b/src/parsers/animeAboutInfo.ts index 7b2e422..2467aed 100644 --- a/src/parsers/animeAboutInfo.ts +++ b/src/parsers/animeAboutInfo.ts @@ -37,6 +37,7 @@ async function scrapeAnimeAboutInfo( duration: null, }, promotionalVideos: [], + charactersVoiceActors: [], }, moreInfo: {}, }, @@ -133,6 +134,26 @@ async function scrapeAnimeAboutInfo( } ); + // get characters and voice actors + $(".block_area.block_area-actors .block-actors-content .bac-list-wrap .bac-item").each( + (_, el) => { + res.anime.info.charactersVoiceActors.push({ + character: { + id: $(el).find($(".per-info.ltr .pi-avatar")).attr("href")?.split("/")[2] || "", + poster: $(el).find($(".per-info.ltr .pi-avatar img")).attr("data-src") || "", + name: $(el).find($(".per-info.ltr .pi-detail a")).text(), + cast: $(el).find($(".per-info.ltr .pi-detail .pi-cast")).text(), + }, + voiceActor: { + id: $(el).find($(".per-info.rtl .pi-avatar")).attr("href")?.split("/")[2] || "", + poster: $(el).find($(".per-info.rtl .pi-avatar img")).attr("data-src") || "", + name: $(el).find($(".per-info.rtl .pi-detail a")).text(), + cast: $(el).find($(".per-info.rtl .pi-detail .pi-cast")).text(), + }, + }); + } + ); + // more information $(`${selector} .anisc-info-wrap .anisc-info .item:not(.w-hide)`).each( (i, el) => { diff --git a/src/types/anime.ts b/src/types/anime.ts index cbb80c5..c23acaa 100644 --- a/src/types/anime.ts +++ b/src/types/anime.ts @@ -49,6 +49,7 @@ export interface AnimeGeneralAboutInfo quality: string | null; } & Pick; promotionalVideos: AnimePromotionalVideo[]; + charactersVoiceActors: AnimeCharactersAndVoiceActors[]; } export interface RecommendedAnime extends Anime {} @@ -66,6 +67,18 @@ export interface AnimePromotionalVideo { thumbnail: string | undefined; } +export interface AnimeCharactersAndVoiceActors { + character: AnimeCharacter; + voiceActor: AnimeCharacter; +} + +export interface AnimeCharacter { + id: string; + poster: string; + name: string; + cast: string; +} + export interface AnimeSearchSuggestion extends Omit { moreInfo: Array;