aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRitesh Ghosh <[email protected]>2024-04-28 15:47:29 +0530
committerGitHub <[email protected]>2024-04-28 15:47:29 +0530
commitb35ac1b3c15cd5d0a9700a6ee3971636e71919c9 (patch)
tree3b748ae2f2e78f5892fd8bd692cac011f0fb0f0b
parent3722ab13e1f66e668c618962ee36483e841c8901 (diff)
parente03cf5564ae60187a3e1fab400ed004ebf8068fa (diff)
downloadaniwatch-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.md27
-rw-r--r--src/parsers/animeAboutInfo.ts33
-rw-r--r--src/types/anime.ts20
3 files changed, 79 insertions, 1 deletions
diff --git a/README.md b/README.md
index 0c58fc2..df3fd80 100644
--- a/README.md
+++ b/README.md
@@ -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>;