use external ids endpoint for imdb ids

This commit is contained in:
castdrian 2023-06-16 11:18:32 +02:00
parent d961655186
commit ad26391645
3 changed files with 51 additions and 4 deletions

View File

@ -87,10 +87,8 @@ export async function getMetaFromId(
if (!details) return null; if (!details) return null;
let imdbId; const externalIds = await Tmdb.getExternalIds(id, mediaTypeToTMDB(type));
if (type === MWMediaType.MOVIE) { const imdbId = externalIds.imdb_id ?? undefined;
imdbId = (details as TMDBMovieData).imdb_id ?? undefined;
}
let seasonData: TMDBSeasonMetaResult | undefined; let seasonData: TMDBSeasonMetaResult | undefined;

View File

@ -6,15 +6,18 @@ import {
MWSeasonMeta, MWSeasonMeta,
TMDBContentTypes, TMDBContentTypes,
TMDBEpisodeShort, TMDBEpisodeShort,
TMDBExternalIds,
TMDBMediaResult, TMDBMediaResult,
TMDBMediaStatic, TMDBMediaStatic,
TMDBMovieData, TMDBMovieData,
TMDBMovieExternalIds,
TMDBMovieResponse, TMDBMovieResponse,
TMDBMovieResult, TMDBMovieResult,
TMDBSearchResultStatic, TMDBSearchResultStatic,
TMDBSeason, TMDBSeason,
TMDBSeasonMetaResult, TMDBSeasonMetaResult,
TMDBShowData, TMDBShowData,
TMDBShowExternalIds,
TMDBShowResponse, TMDBShowResponse,
TMDBShowResult, TMDBShowResult,
} from "./types"; } from "./types";
@ -170,6 +173,28 @@ export abstract class Tmdb {
title: e.name, title: e.name,
})); }));
} }
public static async getExternalIds(
id: string,
type: TMDBContentTypes
): Promise<TMDBExternalIds> {
let data;
switch (type) {
case "movie":
data = await Tmdb.get<TMDBMovieExternalIds>(
`/movie/${id}/external_ids`
);
break;
case "show":
data = await Tmdb.get<TMDBShowExternalIds>(`/tv/${id}/external_ids`);
break;
default:
throw new Error("Invalid media type");
}
return data;
}
} }
export async function formatTMDBSearchResult( export async function formatTMDBSearchResult(

View File

@ -379,3 +379,27 @@ export interface TMDBSeason {
poster_path: string | null; poster_path: string | null;
season_number: number; season_number: number;
} }
export interface TMDBShowExternalIds {
id: number;
imdb_id: null | string;
freebase_mid: null | string;
freebase_id: null | string;
tvdb_id: number;
tvrage_id: null | string;
wikidata_id: null | string;
facebook_id: null | string;
instagram_id: null | string;
twitter_id: null | string;
}
export interface TMDBMovieExternalIds {
id: number;
imdb_id: null | string;
wikidata_id: null | string;
facebook_id: null | string;
instagram_id: null | string;
twitter_id: null | string;
}
export type TMDBExternalIds = TMDBShowExternalIds | TMDBMovieExternalIds;