fix: TV xREL - imdb_id aus external_ids, kein Jahresfilter für Serien, separater Cache-Key

This commit is contained in:
2026-06-18 12:07:21 +02:00
parent fe6fa0324f
commit 5f6319c310

View File

@@ -160,7 +160,7 @@ async function xrelFetch(path, params = {}) {
// Einzige Funktion für xREL: benutzt immer die ext_info_id und gibt max 5 deutsche ≤1080p Releases
// Cache-Key: tmdb_id (immer eindeutig, konsistent zwischen Badge und Modal)
async function getXrelData(tmdbId, imdbId, title, originalTitle, movieYear, mediaType='movie') {
const cacheKey = `xrel:tmdb:${tmdbId}`;
const cacheKey = `xrel:${mediaType}:${tmdbId}`;
const cached = cacheGet(cacheKey);
if (cached !== undefined) return cached;
@@ -236,7 +236,8 @@ async function getXrelData(tmdbId, imdbId, title, originalTitle, movieYear, medi
// Alte Filme (< 2015) haben oft Releases die Jahre später erschienen → nicht filtern
const releaseYearOk = (releaseDate) => {
if (!movieYear || !releaseDate) return true;
if (movieYear < 2015) return true; // alte Filme: alles erlaubt
if (movieYear < 2015) return true;
if (mediaType === 'tv') return true; // TV-Serien: kein Jahresfilter (Staffeln erscheinen über Jahre)
const y = parseInt(releaseDate.slice(0,4));
return Math.abs(y - movieYear) <= 3;
};
@@ -364,9 +365,10 @@ router.get('/search', authenticate, async (req, res) => {
// TV-Serie Detail
router.get('/tv/:id', authenticate, async (req, res) => {
try {
const [detail, genreMap] = await Promise.all([
const [detail, genreMap, extIds] = await Promise.all([
tmdb(`/tv/${req.params.id}`, { append_to_response: 'credits,content_ratings' }),
getGenreMap(),
tmdb(`/tv/${req.params.id}/external_ids`).catch(()=>({})),
]);
// FSK aus content_ratings (DE)
let fsk = '';
@@ -387,6 +389,7 @@ router.get('/tv/:id', authenticate, async (req, res) => {
genres: (detail.genres||[]).map(g=>g.name),
fsk,
cast: (detail.credits?.cast||[]).slice(0,8).map(c => c.name),
imdb_id: extIds.imdb_id || '',
number_of_seasons: detail.number_of_seasons,
number_of_episodes: detail.number_of_episodes,
status: detail.status,