Files
website/src/lib/media/stored.ts
T

29 lines
863 B
TypeScript

import mediaDetailsData from '#data/mediaDetails.json';
import type { MediaDetails } from './types';
interface StoredMediaDetails extends MediaDetails {
title?: string | null;
posterSource?: string | null;
}
const imdbIdPattern = /tt\d+/;
const storedDetails = mediaDetailsData as Record<string, StoredMediaDetails>;
function toMediaDetails(stored: StoredMediaDetails): MediaDetails {
return {
poster: stored.poster ?? null,
year: stored.year ?? null,
genre: stored.genre ?? null,
runtime: stored.runtime ?? null,
plot: stored.plot ?? null
};
}
export function storedDetailsFor(urls: string[]): Record<string, MediaDetails> {
const entries = urls.flatMap((url) => {
const stored = storedDetails[url.match(imdbIdPattern)?.[0] ?? ''];
return stored ? [[url, toMediaDetails(stored)] as const] : [];
});
return Object.fromEntries(entries);
}