mirror of
https://github.com/agregarr/agregarr.git
synced 2026-05-08 03:41:02 -05:00
fix(posters): revert null poster fallback for TMDB
now tries selected language and immedaitely falls back to default poster re #144
This commit is contained in:
+50
-54
@@ -273,45 +273,43 @@ export async function cleanupReleasedPlaceholders(
|
||||
language,
|
||||
});
|
||||
|
||||
// Find poster in selected language, fallback to null language, then English
|
||||
let poster = images.posters.find(
|
||||
// Find poster in selected language, fallback to main poster from movie details
|
||||
const poster = images.posters.find(
|
||||
(p) => p.iso_639_1 === language
|
||||
);
|
||||
if (!poster) {
|
||||
poster = images.posters.find((p) => p.iso_639_1 === null);
|
||||
}
|
||||
if (!poster && language !== 'en') {
|
||||
poster = images.posters.find((p) => p.iso_639_1 === 'en');
|
||||
}
|
||||
if (!poster && images.posters.length > 0) {
|
||||
poster = images.posters[0];
|
||||
}
|
||||
|
||||
posterUrl = poster
|
||||
? `https://image.tmdb.org/t/p/original${poster.file_path}`
|
||||
: undefined;
|
||||
if (poster) {
|
||||
posterUrl = `https://image.tmdb.org/t/p/original${poster.file_path}`;
|
||||
} else {
|
||||
// Fallback to main poster from movie details
|
||||
const movie = await tmdbClient.getMovie({
|
||||
movieId: placeholder.tmdbId,
|
||||
});
|
||||
posterUrl = movie.poster_path
|
||||
? `https://image.tmdb.org/t/p/original${movie.poster_path}`
|
||||
: undefined;
|
||||
}
|
||||
} else {
|
||||
const images = await tmdbClient.getTvShowImages({
|
||||
tvId: placeholder.tmdbId,
|
||||
language,
|
||||
});
|
||||
|
||||
let poster = images.posters.find(
|
||||
const poster = images.posters.find(
|
||||
(p) => p.iso_639_1 === language
|
||||
);
|
||||
if (!poster) {
|
||||
poster = images.posters.find((p) => p.iso_639_1 === null);
|
||||
}
|
||||
if (!poster && language !== 'en') {
|
||||
poster = images.posters.find((p) => p.iso_639_1 === 'en');
|
||||
}
|
||||
if (!poster && images.posters.length > 0) {
|
||||
poster = images.posters[0];
|
||||
}
|
||||
|
||||
posterUrl = poster
|
||||
? `https://image.tmdb.org/t/p/original${poster.file_path}`
|
||||
: undefined;
|
||||
if (poster) {
|
||||
posterUrl = `https://image.tmdb.org/t/p/original${poster.file_path}`;
|
||||
} else {
|
||||
// Fallback to main poster from TV show details
|
||||
const tvShow = await tmdbClient.getTvShow({
|
||||
tvId: placeholder.tmdbId,
|
||||
});
|
||||
posterUrl = tvShow.poster_path
|
||||
? `https://image.tmdb.org/t/p/original${tvShow.poster_path}`
|
||||
: undefined;
|
||||
}
|
||||
}
|
||||
|
||||
if (posterUrl) {
|
||||
@@ -581,45 +579,43 @@ export async function cleanupReleasedPlaceholders(
|
||||
language,
|
||||
});
|
||||
|
||||
// Find poster in selected language, fallback to null language, then English
|
||||
let poster = images.posters.find(
|
||||
// Find poster in selected language, fallback to main poster from movie details
|
||||
const poster = images.posters.find(
|
||||
(p) => p.iso_639_1 === language
|
||||
);
|
||||
if (!poster) {
|
||||
poster = images.posters.find((p) => p.iso_639_1 === null);
|
||||
}
|
||||
if (!poster && language !== 'en') {
|
||||
poster = images.posters.find((p) => p.iso_639_1 === 'en');
|
||||
}
|
||||
if (!poster && images.posters.length > 0) {
|
||||
poster = images.posters[0];
|
||||
}
|
||||
|
||||
posterUrl = poster
|
||||
? `https://image.tmdb.org/t/p/original${poster.file_path}`
|
||||
: undefined;
|
||||
if (poster) {
|
||||
posterUrl = `https://image.tmdb.org/t/p/original${poster.file_path}`;
|
||||
} else {
|
||||
// Fallback to main poster from movie details
|
||||
const movie = await tmdbClient.getMovie({
|
||||
movieId: placeholder.tmdbId,
|
||||
});
|
||||
posterUrl = movie.poster_path
|
||||
? `https://image.tmdb.org/t/p/original${movie.poster_path}`
|
||||
: undefined;
|
||||
}
|
||||
} else {
|
||||
const images = await tmdbClient.getTvShowImages({
|
||||
tvId: placeholder.tmdbId,
|
||||
language,
|
||||
});
|
||||
|
||||
let poster = images.posters.find(
|
||||
const poster = images.posters.find(
|
||||
(p) => p.iso_639_1 === language
|
||||
);
|
||||
if (!poster) {
|
||||
poster = images.posters.find((p) => p.iso_639_1 === null);
|
||||
}
|
||||
if (!poster && language !== 'en') {
|
||||
poster = images.posters.find((p) => p.iso_639_1 === 'en');
|
||||
}
|
||||
if (!poster && images.posters.length > 0) {
|
||||
poster = images.posters[0];
|
||||
}
|
||||
|
||||
posterUrl = poster
|
||||
? `https://image.tmdb.org/t/p/original${poster.file_path}`
|
||||
: undefined;
|
||||
if (poster) {
|
||||
posterUrl = `https://image.tmdb.org/t/p/original${poster.file_path}`;
|
||||
} else {
|
||||
// Fallback to main poster from TV show details
|
||||
const tvShow = await tmdbClient.getTvShow({
|
||||
tvId: placeholder.tmdbId,
|
||||
});
|
||||
posterUrl = tvShow.poster_path
|
||||
? `https://image.tmdb.org/t/p/original${tvShow.poster_path}`
|
||||
: undefined;
|
||||
}
|
||||
}
|
||||
|
||||
if (posterUrl) {
|
||||
|
||||
@@ -203,27 +203,25 @@ async function fetchTMDbPosterUrls(
|
||||
language,
|
||||
});
|
||||
|
||||
// Find poster in selected language, fallback to null language (universal), then English
|
||||
let poster = images.posters.find((p) => p.iso_639_1 === language);
|
||||
if (!poster) {
|
||||
poster = images.posters.find((p) => p.iso_639_1 === null);
|
||||
}
|
||||
if (!poster && language !== 'en') {
|
||||
poster = images.posters.find((p) => p.iso_639_1 === 'en');
|
||||
}
|
||||
if (!poster && images.posters.length > 0) {
|
||||
poster = images.posters[0]; // Use first available poster
|
||||
}
|
||||
// Find poster in selected language, fallback to main poster from movie details
|
||||
const poster = images.posters.find((p) => p.iso_639_1 === language);
|
||||
|
||||
if (poster) {
|
||||
posterUrl = `https://image.tmdb.org/t/p/w300${poster.file_path}`;
|
||||
logger.debug(
|
||||
`Found movie poster for ${item.title} (language: ${
|
||||
poster.iso_639_1 || 'null'
|
||||
}): ${posterUrl}`
|
||||
`Found movie poster for ${item.title} (language: ${poster.iso_639_1}): ${posterUrl}`
|
||||
);
|
||||
} else {
|
||||
logger.debug(`No poster found for movie ${item.title}`);
|
||||
// Fallback to main poster from movie details
|
||||
const movie = await tmdb.getMovie({ movieId: item.tmdbId });
|
||||
if (movie.poster_path) {
|
||||
posterUrl = `https://image.tmdb.org/t/p/w300${movie.poster_path}`;
|
||||
logger.debug(
|
||||
`Using default movie poster for ${item.title}: ${posterUrl}`
|
||||
);
|
||||
} else {
|
||||
logger.debug(`No poster found for movie ${item.title}`);
|
||||
}
|
||||
}
|
||||
} else if (item.type === 'tv') {
|
||||
// Check if this is an episode with season info and show TMDB ID
|
||||
@@ -235,26 +233,26 @@ async function fetchTMDbPosterUrls(
|
||||
language,
|
||||
});
|
||||
|
||||
let poster = images.posters.find((p) => p.iso_639_1 === language);
|
||||
if (!poster) {
|
||||
poster = images.posters.find((p) => p.iso_639_1 === null);
|
||||
}
|
||||
if (!poster && language !== 'en') {
|
||||
poster = images.posters.find((p) => p.iso_639_1 === 'en');
|
||||
}
|
||||
if (!poster && images.posters.length > 0) {
|
||||
poster = images.posters[0];
|
||||
}
|
||||
const poster = images.posters.find((p) => p.iso_639_1 === language);
|
||||
|
||||
if (poster) {
|
||||
posterUrl = `https://image.tmdb.org/t/p/w300${poster.file_path}`;
|
||||
logger.debug(
|
||||
`Found show poster for episode ${item.title} (language: ${
|
||||
poster.iso_639_1 || 'null'
|
||||
}): ${posterUrl}`
|
||||
`Found show poster for episode ${item.title} (language: ${poster.iso_639_1}): ${posterUrl}`
|
||||
);
|
||||
} else {
|
||||
logger.debug(`No poster found for episode ${item.title}`);
|
||||
// Fallback to main poster from TV show details
|
||||
const tvShow = await tmdb.getTvShow({
|
||||
tvId: item.metadata.showTmdbId,
|
||||
});
|
||||
if (tvShow.poster_path) {
|
||||
posterUrl = `https://image.tmdb.org/t/p/w300${tvShow.poster_path}`;
|
||||
logger.debug(
|
||||
`Using default show poster for episode ${item.title}: ${posterUrl}`
|
||||
);
|
||||
} else {
|
||||
logger.debug(`No poster found for episode ${item.title}`);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// This is a regular TV show (not an episode)
|
||||
@@ -263,26 +261,24 @@ async function fetchTMDbPosterUrls(
|
||||
language,
|
||||
});
|
||||
|
||||
let poster = images.posters.find((p) => p.iso_639_1 === language);
|
||||
if (!poster) {
|
||||
poster = images.posters.find((p) => p.iso_639_1 === null);
|
||||
}
|
||||
if (!poster && language !== 'en') {
|
||||
poster = images.posters.find((p) => p.iso_639_1 === 'en');
|
||||
}
|
||||
if (!poster && images.posters.length > 0) {
|
||||
poster = images.posters[0];
|
||||
}
|
||||
const poster = images.posters.find((p) => p.iso_639_1 === language);
|
||||
|
||||
if (poster) {
|
||||
posterUrl = `https://image.tmdb.org/t/p/w300${poster.file_path}`;
|
||||
logger.debug(
|
||||
`Found TV poster for ${item.title} (language: ${
|
||||
poster.iso_639_1 || 'null'
|
||||
}): ${posterUrl}`
|
||||
`Found TV poster for ${item.title} (language: ${poster.iso_639_1}): ${posterUrl}`
|
||||
);
|
||||
} else {
|
||||
logger.debug(`No poster found for TV show ${item.title}`);
|
||||
// Fallback to main poster from TV show details
|
||||
const tvShow = await tmdb.getTvShow({ tvId: item.tmdbId });
|
||||
if (tvShow.poster_path) {
|
||||
posterUrl = `https://image.tmdb.org/t/p/w300${tvShow.poster_path}`;
|
||||
logger.debug(
|
||||
`Using default TV poster for ${item.title}: ${posterUrl}`
|
||||
);
|
||||
} else {
|
||||
logger.debug(`No poster found for TV show ${item.title}`);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -700,21 +700,14 @@ async function processMultiSourcePreview(
|
||||
language,
|
||||
});
|
||||
|
||||
// Find poster in selected language with fallback
|
||||
let poster = images.posters.find((p) => p.iso_639_1 === language);
|
||||
if (!poster) {
|
||||
poster = images.posters.find((p) => p.iso_639_1 === null);
|
||||
}
|
||||
if (!poster && language !== 'en') {
|
||||
poster = images.posters.find((p) => p.iso_639_1 === 'en');
|
||||
}
|
||||
if (!poster && images.posters.length > 0) {
|
||||
poster = images.posters[0];
|
||||
}
|
||||
// Find poster in selected language, fallback to main poster from movie details
|
||||
const poster = images.posters.find((p) => p.iso_639_1 === language);
|
||||
|
||||
return {
|
||||
posterUrl: poster
|
||||
? `https://image.tmdb.org/t/p/w300_and_h450_face${poster.file_path}`
|
||||
: movie.poster_path
|
||||
? `https://image.tmdb.org/t/p/w300_and_h450_face${movie.poster_path}`
|
||||
: '',
|
||||
backdropPath: movie.backdrop_path || undefined,
|
||||
title: movie.title || fallbackTitle,
|
||||
@@ -732,20 +725,13 @@ async function processMultiSourcePreview(
|
||||
language,
|
||||
});
|
||||
|
||||
let poster = images.posters.find((p) => p.iso_639_1 === language);
|
||||
if (!poster) {
|
||||
poster = images.posters.find((p) => p.iso_639_1 === null);
|
||||
}
|
||||
if (!poster && language !== 'en') {
|
||||
poster = images.posters.find((p) => p.iso_639_1 === 'en');
|
||||
}
|
||||
if (!poster && images.posters.length > 0) {
|
||||
poster = images.posters[0];
|
||||
}
|
||||
const poster = images.posters.find((p) => p.iso_639_1 === language);
|
||||
|
||||
return {
|
||||
posterUrl: poster
|
||||
? `https://image.tmdb.org/t/p/w300_and_h450_face${poster.file_path}`
|
||||
: show.poster_path
|
||||
? `https://image.tmdb.org/t/p/w300_and_h450_face${show.poster_path}`
|
||||
: '',
|
||||
backdropPath: show.backdrop_path || undefined,
|
||||
title: show.name || fallbackTitle,
|
||||
@@ -1290,21 +1276,14 @@ async function processPreviewAsync(
|
||||
language,
|
||||
});
|
||||
|
||||
// Find poster in selected language with fallback
|
||||
let poster = images.posters.find((p) => p.iso_639_1 === language);
|
||||
if (!poster) {
|
||||
poster = images.posters.find((p) => p.iso_639_1 === null);
|
||||
}
|
||||
if (!poster && language !== 'en') {
|
||||
poster = images.posters.find((p) => p.iso_639_1 === 'en');
|
||||
}
|
||||
if (!poster && images.posters.length > 0) {
|
||||
poster = images.posters[0];
|
||||
}
|
||||
// Find poster in selected language, fallback to main poster from movie details
|
||||
const poster = images.posters.find((p) => p.iso_639_1 === language);
|
||||
|
||||
return {
|
||||
posterUrl: poster
|
||||
? `https://image.tmdb.org/t/p/w300_and_h450_face${poster.file_path}`
|
||||
: movie.poster_path
|
||||
? `https://image.tmdb.org/t/p/w300_and_h450_face${movie.poster_path}`
|
||||
: '',
|
||||
backdropPath: movie.backdrop_path || undefined,
|
||||
title: movie.title || fallbackTitle,
|
||||
@@ -1322,20 +1301,13 @@ async function processPreviewAsync(
|
||||
language,
|
||||
});
|
||||
|
||||
let poster = images.posters.find((p) => p.iso_639_1 === language);
|
||||
if (!poster) {
|
||||
poster = images.posters.find((p) => p.iso_639_1 === null);
|
||||
}
|
||||
if (!poster && language !== 'en') {
|
||||
poster = images.posters.find((p) => p.iso_639_1 === 'en');
|
||||
}
|
||||
if (!poster && images.posters.length > 0) {
|
||||
poster = images.posters[0];
|
||||
}
|
||||
const poster = images.posters.find((p) => p.iso_639_1 === language);
|
||||
|
||||
return {
|
||||
posterUrl: poster
|
||||
? `https://image.tmdb.org/t/p/w300_and_h450_face${poster.file_path}`
|
||||
: show.poster_path
|
||||
? `https://image.tmdb.org/t/p/w300_and_h450_face${show.poster_path}`
|
||||
: '',
|
||||
backdropPath: show.backdrop_path || undefined,
|
||||
title: show.name || fallbackTitle,
|
||||
|
||||
Reference in New Issue
Block a user