memorium/lib/tmdb.ts

50 lines
1.3 KiB
TypeScript
Raw Normal View History

2023-07-31 17:21:17 +02:00
import * as cache from "@lib/cache/cache.ts";
2023-07-31 04:19:04 +02:00
import { MovieDb } from "https://esm.sh/moviedb-promise@3.4.1";
const moviedb = new MovieDb(Deno.env.get("TMDB_API_KEY") || "");
export function searchMovie(query: string) {
return moviedb.searchMovie({ query });
}
2023-08-07 14:44:04 +02:00
export function searchTVShow(query: string) {
return moviedb.searchTv({ query });
}
2023-07-31 04:19:04 +02:00
export function getMovie(id: number) {
return moviedb.movieInfo({ id });
}
2023-08-08 21:50:23 +02:00
export function getSeries(id: number) {
return moviedb.tvInfo({ id });
}
2023-07-31 04:19:04 +02:00
export function getMovieCredits(id: number) {
return moviedb.movieCredits(id);
}
2023-07-31 17:21:17 +02:00
2023-08-08 21:50:23 +02:00
export function getSeriesCredits(id: number) {
return moviedb.tvCredits(id);
}
export async function getMovieGenre(id: number) {
const genres = await cache.get("/genres/movies");
return moviedb.genreTvList();
}
export async function getSeriesGenre(id: number) {
const genres = await cache.get("/genres/series");
}
2023-07-31 17:21:17 +02:00
export async function getMoviePoster(id: string): Promise<ArrayBuffer> {
2023-08-04 22:35:25 +02:00
const cachedPoster = await cache.get("posters:" + id);
2023-07-31 17:21:17 +02:00
if (cachedPoster) return cachedPoster as ArrayBuffer;
const posterUrl = `https://image.tmdb.org/t/p/original/${id}`;
const response = await fetch(posterUrl);
const poster = await response.arrayBuffer();
2023-08-04 22:35:25 +02:00
cache.set(`posters:${id}`, new Uint8Array());
2023-07-31 17:21:17 +02:00
return poster;
}