Files
native-app/packages/provider-utils/src/util.ts
2024-02-05 20:51:46 +01:00

54 lines
1.4 KiB
TypeScript

import type { AppendToResponse, MovieDetails, TvShowDetails } from "tmdb-ts";
import type { ScrapeMedia } from "@movie-web/providers";
export function transformSearchResultToScrapeMedia(
type: "tv" | "movie",
result: TvShowDetails | MovieDetails,
season?: number,
episode?: number,
): ScrapeMedia {
if (type === "tv") {
const tvResult = result as AppendToResponse<
TvShowDetails,
"external_ids"[],
"tvShow"
>;
return {
type: "show",
tmdbId: tvResult.id.toString(),
imdbId: tvResult.external_ids.imdb_id,
title: tvResult.name,
releaseYear: new Date(tvResult.first_air_date).getFullYear(),
season: {
number: season ?? tvResult.seasons[0]?.season_number ?? 1,
tmdbId: season
? tvResult.seasons
.find((s) => s.season_number === season)
?.id.toString() ?? ""
: tvResult.seasons[0]?.id.toString() ?? "",
},
episode: {
number: episode ?? 1,
tmdbId: "",
},
};
}
if (type === "movie") {
const movieResult = result as AppendToResponse<
MovieDetails,
"external_ids"[],
"movie"
>;
return {
type: "movie",
tmdbId: movieResult.id.toString(),
imdbId: movieResult.external_ids.imdb_id,
title: movieResult.title,
releaseYear: new Date(movieResult.release_date).getFullYear(),
};
}
throw new Error("Invalid type parameter");
}