fix: TV xREL - imdb_id aus external_ids, kein Jahresfilter für Serien, separater Cache-Key
This commit is contained in:
@@ -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
|
// 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)
|
// Cache-Key: tmdb_id (immer eindeutig, konsistent zwischen Badge und Modal)
|
||||||
async function getXrelData(tmdbId, imdbId, title, originalTitle, movieYear, mediaType='movie') {
|
async function getXrelData(tmdbId, imdbId, title, originalTitle, movieYear, mediaType='movie') {
|
||||||
const cacheKey = `xrel:tmdb:${tmdbId}`;
|
const cacheKey = `xrel:${mediaType}:${tmdbId}`;
|
||||||
const cached = cacheGet(cacheKey);
|
const cached = cacheGet(cacheKey);
|
||||||
if (cached !== undefined) return cached;
|
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
|
// Alte Filme (< 2015) haben oft Releases die Jahre später erschienen → nicht filtern
|
||||||
const releaseYearOk = (releaseDate) => {
|
const releaseYearOk = (releaseDate) => {
|
||||||
if (!movieYear || !releaseDate) return true;
|
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));
|
const y = parseInt(releaseDate.slice(0,4));
|
||||||
return Math.abs(y - movieYear) <= 3;
|
return Math.abs(y - movieYear) <= 3;
|
||||||
};
|
};
|
||||||
@@ -364,9 +365,10 @@ router.get('/search', authenticate, async (req, res) => {
|
|||||||
// TV-Serie Detail
|
// TV-Serie Detail
|
||||||
router.get('/tv/:id', authenticate, async (req, res) => {
|
router.get('/tv/:id', authenticate, async (req, res) => {
|
||||||
try {
|
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' }),
|
tmdb(`/tv/${req.params.id}`, { append_to_response: 'credits,content_ratings' }),
|
||||||
getGenreMap(),
|
getGenreMap(),
|
||||||
|
tmdb(`/tv/${req.params.id}/external_ids`).catch(()=>({})),
|
||||||
]);
|
]);
|
||||||
// FSK aus content_ratings (DE)
|
// FSK aus content_ratings (DE)
|
||||||
let fsk = '';
|
let fsk = '';
|
||||||
@@ -387,6 +389,7 @@ router.get('/tv/:id', authenticate, async (req, res) => {
|
|||||||
genres: (detail.genres||[]).map(g=>g.name),
|
genres: (detail.genres||[]).map(g=>g.name),
|
||||||
fsk,
|
fsk,
|
||||||
cast: (detail.credits?.cast||[]).slice(0,8).map(c => c.name),
|
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_seasons: detail.number_of_seasons,
|
||||||
number_of_episodes: detail.number_of_episodes,
|
number_of_episodes: detail.number_of_episodes,
|
||||||
status: detail.status,
|
status: detail.status,
|
||||||
|
|||||||
Reference in New Issue
Block a user