Browse Source

reduce code duplication

pull/364/head
castdrian 2 years ago
parent
commit
545ac8bb7b
  1. 19
      src/backend/metadata/getmeta.ts
  2. 25
      src/backend/metadata/tmdb.ts

19
src/backend/metadata/getmeta.ts

@ -1,8 +1,8 @@ @@ -1,8 +1,8 @@
import { FetchError } from "ofetch";
import slugify from "slugify";
import { formatJWMeta, mediaTypeToJW } from "./justwatch";
import {
TMDBIdToUrlId,
TMDBMediaToMediaType,
formatTMDBMeta,
getEpisodes,
@ -187,17 +187,12 @@ export async function convertLegacyUrl( @@ -187,17 +187,12 @@ export async function convertLegacyUrl(
// movies always have an imdb id on tmdb
if (imdbId && mediaType === MWMediaType.MOVIE) {
const movieId = await getMovieFromExternalId(imdbId);
if (movieId)
return `/media/tmdb-movie-${movieId}-${slugify(meta.meta.title, {
lower: true,
strict: true,
})}`;
}
if (movieId) {
return `/media/${TMDBIdToUrlId(mediaType, movieId, meta.meta.title)}`;
}
if (tmdbId) {
return `/media/tmdb-${type}-${tmdbId}-${slugify(meta.meta.title, {
lower: true,
strict: true,
})}`;
if (tmdbId) {
return `/media/${TMDBIdToUrlId(mediaType, tmdbId, meta.meta.title)}`;
}
}
}

25
src/backend/metadata/tmdb.ts

@ -79,15 +79,23 @@ export function formatTMDBMeta( @@ -79,15 +79,23 @@ export function formatTMDBMeta(
};
}
export function TMDBMediaToId(media: MWMediaMeta): string {
export function TMDBIdToUrlId(
type: MWMediaType,
tmdbId: string,
title: string
) {
return [
"tmdb",
mediaTypeToTMDB(media.type),
media.id,
slugify(media.title, { lower: true, strict: true }),
mediaTypeToTMDB(type),
tmdbId,
slugify(title, { lower: true, strict: true }),
].join("-");
}
export function TMDBMediaToId(media: MWMediaMeta): string {
return TMDBIdToUrlId(media.type, media.id, media.title);
}
export function decodeTMDBId(
paramId: string
): { id: string; type: MWMediaType } | null {
@ -178,10 +186,11 @@ export async function generateQuickSearchMediaUrl( @@ -178,10 +186,11 @@ export async function generateQuickSearchMediaUrl(
const type = result.media_type === "movie" ? "movie" : "show";
const title = result.media_type === "movie" ? result.title : result.name;
return `/media/tmdb-${type}-${result.id}-${slugify(title, {
lower: true,
strict: true,
})}`;
return `/media/${TMDBIdToUrlId(
TMDBMediaToMediaType(type),
result.id.toString(),
title
)}`;
}
// Conditional type which for inferring the return type based on the content type

Loading…
Cancel
Save