Skip to content

Instantly share code, notes, and snippets.

@Michaelpalacce
Last active November 3, 2022 21:27
Show Gist options
  • Save Michaelpalacce/2f961848252bedcab6c4dc782537bd85 to your computer and use it in GitHub Desktop.
Save Michaelpalacce/2f961848252bedcab6c4dc782537bd85 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;'>`)
}
@Michaelpalacce
Copy link
Author

Put your API_KEY on top from the movie database... Just register!

@Michaelpalacce
Copy link
Author

Also I usually add (Anime) to my notes so there is some logic to remove that...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment