Merge pull request #44 from WBRK-dev/main
feat: added promotional material, characters and voice actors to `/info`
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -34,6 +34,8 @@ async function scrapeAnimeAboutInfo(
|
||||
type: null,
|
||||
duration: null,
|
||||
},
|
||||
promotionalVideos: [],
|
||||
charactersVoiceActors: [],
|
||||
},
|
||||
moreInfo: {},
|
||||
},
|
||||
@@ -117,6 +119,37 @@ async function scrapeAnimeAboutInfo(
|
||||
?.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(
|
||||
(i, el) => {
|
||||
|
||||
@@ -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>;
|
||||
|
||||
Reference in New Issue
Block a user