<%*
const IMAGE_URL_BASE = "https://image.tmdb.org/t/p/w600_and_h900_bestv2";
const API_KEY="APIKEYHERE";
const guessShow = async (showName) => {
const config = {
method: "GET",
url: https://api.themoviedb.org/3/search/tv?api_key=${API_KEY}&language=en-US&page=1&include_adult=true&query=${encodeURIComponent(showName.replace("(Anime)", ""))}
,
throw: true
}
const results = JSON.parse(await request(config));
if ( results.results.length === 0 ){
return 0;
}
return results.results[0].id;
}
const getShowDetails = async (showId) => {
const config = {
method: 'GET',
url: https://api.themoviedb.org/3/tv/${showId} ?api_key=${API_KEY}
,
contentType: "",
throw: true
};
return JSON.parse(await request(config));
}
let tmdbId = await guessShow(tp.file.title);
//Safety!
if ( ! tmdbId ) {
return;
}
let showDetails = await getShowDetails(tmdbId);
let year = moment(showDetails.first_air_date).format( "YYYY" );
let alias = showDetails.original_name
let banner = ${IMAGE_URL_BASE}${showDetails.poster_path}
;
-%>
tags: anime state: <% await tp.system.suggester(["Want To Watch", "Watching", "Watched"], ["seed", "fern", "evergreen"] ) %> anime-tmdb: <% tmdbId %> anime-rating: 0 anime-year: <% year %> banner: <% banner %> aliases:
- <% alias %>
[[220 Anime MOC]]
const API_KEY = "<% API_KEY %>";
const getShowDetails = async (showId) => {
const config = {
method: 'GET',
url: `https://api.themoviedb.org/3/tv/${showId}?api_key=${API_KEY}`,
contentType: "",
throw: true
};
return JSON.parse(await request(config));
}
const IMAGE_URL_BASE = "https://image.tmdb.org/t/p/w600_and_h900_bestv2";
function extractGenres( genres ) {
return genres.map(g => {
return g.name;
})
}
const showId = dv.current()["anime-tmdb"];
if (isNaN(parseInt(showId))) {
return;
}
const show = await getShowDetails(showId) ;
const name = show.name;
const genres = extractGenres( show.genres );
const firstAirDate = show.first_air_date;
const languages = show.languages;
const episodes = show.number_of_episodes;
const seasons = show.number_of_seasons;
const originalName = show.original_name;
const score = show.vote_average;
const inProduction = show.in_production;
const poster = `${IMAGE_URL_BASE}${show.poster_path}`;
const backdrop = `${IMAGE_URL_BASE}${show.backdrop_path}`;
const overview = show.overview.replaceAll("\n","");
const lastEpisode = show.last_episode_to_air
const lastEpisodeStill = `${IMAGE_URL_BASE}${lastEpisode.still_path}`;
// Intentionally higher WIDTH
const stillImg = `<img src='${lastEpisodeStill}' style='height: 350px; width: 500px;'>`;
dv.table(
["First Air Date", "Languages", "Rating", "TMDB"],
[
[`[[${firstAirDate}]]`, languages, score, `[Link](https://www.themoviedb.org/tv/${showId})`]
]
)
dv.span(`**📽️Ongoing: ${inProduction ? "✅" : "❌"}**`);
dv.header(2, "Overview");
dv.span(`**${genres.join(", ")}**`);
dv.span(`> [!info]- Overview\n> ${overview}`);
dv.span(`<img src='${poster}' style='height: 500px; width: 350px;'>`);
dv.span(`<img src='${backdrop}' style='height: 500px; width: 350px;'>`);
dv.header(2, `Latest Episode (${lastEpisode.episode_number}: ${lastEpisode.name})`);
dv.table(
["Rating", "Overview", "Still"],
[
[`${lastEpisode.vote_average}`, lastEpisode.overview, stillImg]
]
);
dv.header(2, "Seasons")
for (const season of show.seasons){
dv.header(3, `${season.name} - Episodes: ${season.episode_count}`);
dv.span(season.overview.replace("\n", ""));
const seasonPoster = `${IMAGE_URL_BASE}${season.poster_path}`;
dv.paragraph(`<img src='${seasonPoster}' style='height: 500px; width: 350px;'>`)
}