Skip to content

Instantly share code, notes, and snippets.

@dogskool
Forked from Michaelpalacce/TV.md
Created November 3, 2022 12:17
Show Gist options
  • Save dogskool/3e49b29ce8badc42f758849d8960b160 to your computer and use it in GitHub Desktop.
Save dogskool/3e49b29ce8badc42f758849d8960b160 to your computer and use it in GitHub Desktop.

<%* 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]]

Notes

Data

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;'>`)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment