diff options
| author | Ritesh Ghosh <[email protected]> | 2024-04-28 15:47:29 +0530 |
|---|---|---|
| committer | GitHub <[email protected]> | 2024-04-28 15:47:29 +0530 |
| commit | b35ac1b3c15cd5d0a9700a6ee3971636e71919c9 (patch) | |
| tree | 3b748ae2f2e78f5892fd8bd692cac011f0fb0f0b | |
| parent | 3722ab13e1f66e668c618962ee36483e841c8901 (diff) | |
| parent | e03cf5564ae60187a3e1fab400ed004ebf8068fa (diff) | |
| download | aniwatch-api-b35ac1b3c15cd5d0a9700a6ee3971636e71919c9.tar.xz aniwatch-api-b35ac1b3c15cd5d0a9700a6ee3971636e71919c9.zip | |
Merge pull request #44 from WBRK-dev/main
feat: added promotional material, characters and voice actors to `/info`
| -rw-r--r-- | README.md | 27 | ||||
| -rw-r--r-- | src/parsers/animeAboutInfo.ts | 33 | ||||
| -rw-r--r-- | src/types/anime.ts | 20 |
3 files changed, 79 insertions, 1 deletions
@@ -326,7 +326,32 @@ console.log(data); }, type: string, duration: string - } + }, + promotionalVideos: [ + { + title: string | undefined, + source: string | undefined, + thumbnail: string | undefined + }, + {...}, + ], + characterVoiceActor: [ + { + character: { + id: string, + poster: string, + name: string, + cast: string + }, + voiceActor: { + id: string, + poster: string, + name: string, + cast: string + } + }, + {...}, + ] } moreInfo: { aired: string, diff --git a/src/parsers/animeAboutInfo.ts b/src/parsers/animeAboutInfo.ts index 54af57f..f92b0fc 100644 --- a/src/parsers/animeAboutInfo.ts +++ b/src/parsers/animeAboutInfo.ts @@ -34,6 +34,8 @@ async function scrapeAnimeAboutInfo( type: null, duration: null, }, + promotionalVideos: [], + charactersVoiceActors: [], }, moreInfo: {}, }, @@ -116,6 +118,37 @@ async function scrapeAnimeAboutInfo( ?.replace(/[\s\n]+/g, " ") ?.split(" ") ?.pop() || null; + + // get promotional videos + $(".block_area.block_area-promotions .block_area-promotions-list .screen-items .item").each( + (_, el) => { + res.anime.info.promotionalVideos.push({ + title: $(el).attr("data-title"), + source: $(el).attr("data-src"), + thumbnail: $(el).find("img").attr("src"), + }); + } + ); + + // 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( diff --git a/src/types/anime.ts b/src/types/anime.ts index 9af00bc..c23acaa 100644 --- a/src/types/anime.ts +++ b/src/types/anime.ts @@ -48,6 +48,8 @@ export interface AnimeGeneralAboutInfo stats: { quality: string | null; } & Pick<Anime, "duration" | "episodes" | "rating" | "type">; + promotionalVideos: AnimePromotionalVideo[]; + charactersVoiceActors: AnimeCharactersAndVoiceActors[]; } export interface RecommendedAnime extends Anime {} @@ -59,6 +61,24 @@ export interface Season extends Pick<Anime, CommonAnimeProps> { title: string | null; } +export interface AnimePromotionalVideo { + title: string | undefined; + source: string | undefined; + 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<MostPopularAnime, "episodes" | "type"> { moreInfo: Array<string>; |
