mirror of
https://github.com/movie-web/movie-web.git
synced 2024-12-27 08:21:51 +01:00
reduce code duplication
This commit is contained in:
parent
e5be04f5ae
commit
545ac8bb7b
@ -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(
|
||||
// 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,
|
||||
})}`;
|
||||
return `/media/${TMDBIdToUrlId(mediaType, tmdbId, meta.meta.title)}`;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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(
|
||||
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…
Reference in New Issue
Block a user