fix
This commit is contained in:
parent
ed6cb69add
commit
4dc6a89cfe
@ -17,7 +17,7 @@
|
||||
"navRecommendations": { "message": "Empfehlungen" },
|
||||
"navMusic": { "message": "Musik" },
|
||||
"navM3uGenerator": { "message": "M3U-Generator" },
|
||||
"heroWelcome": { "message": "Willkommen bei CinePlex" },
|
||||
"heroWelcome": { "message": "" },
|
||||
"heroSubtitle": { "message": "Entdecken Sie Tausende von Filmen und Serien." },
|
||||
"addStream": { "message": "Stream hinzufügen" },
|
||||
"moreInfo": { "message": "Mehr Info" },
|
||||
@ -261,8 +261,13 @@
|
||||
"episodesCount": {"message": "$count$ Episoden", "placeholders": {"count": {"content": "$1"}}},
|
||||
"seasonsCount": {"message": "$count$ Staffeln", "placeholders": {"count": {"content": "$1"}}},
|
||||
"runtimeMinutes": {"message": "$count$ min", "placeholders": {"count": {"content": "$1"}}},
|
||||
"noTrailerFound": {"message": "Kein Trailer für diesen Titel gefunden."},n "fatalInitError": {"message": "Fataler Initialisierungsfehler"},
|
||||
"fatalInitErrorSub": {"message": "Die Anwendung konnte nicht geladen werden."},n "invalidStreamInfo": {"message": "Ungültige Informationen."},n "dbUnavailableForStreams": {"message": "Lokale Datenbank nicht verfügbar."},n "noPlexServersForStreams": {"message": "Keine Plex-Server."},n "notFoundOnServers": {"message": "\"$query$\" auf Plex-Servern nicht gefunden.", "placeholders": {"query": {"content": "$1"}}},
|
||||
"noTrailerFound": {"message": "Kein Trailer für diesen Titel gefunden."},
|
||||
"fatalInitError": {"message": "Fataler Initialisierungsfehler"},
|
||||
"fatalInitErrorSub": {"message": "Die Anwendung konnte nicht geladen werden."},
|
||||
"invalidStreamInfo": {"message": "Ungültige Informationen."},
|
||||
"dbUnavailableForStreams": {"message": "Lokale Datenbank nicht verfügbar."},
|
||||
"noPlexServersForStreams": {"message": "Keine Plex-Server."},
|
||||
"notFoundOnServers": {"message": "\"$query$\" auf Plex-Servern nicht gefunden.", "placeholders": {"query": {"content": "$1"}}},
|
||||
"relativeTime_justNow": { "message": "Gerade eben" },
|
||||
"relativeTime_minutesAgo": { "message": "Vor $count$ Minuten", "placeholders": { "count": { "content": "$1" } } },
|
||||
"relativeTime_hoursAgo": { "message": "Vor $count$ Stunden", "placeholders": { "count": { "content": "$1" } } },
|
||||
|
@ -17,7 +17,7 @@
|
||||
"navRecommendations": { "message": "Recommendations" },
|
||||
"navMusic": { "message": "Music" },
|
||||
"navM3uGenerator": { "message": "M3U Generator" },
|
||||
"heroWelcome": { "message": "Welcome to CinePlex" },
|
||||
"heroWelcome": { "message": "" },
|
||||
"heroSubtitle": { "message": "Explore thousands of movies and series." },
|
||||
"addStream": { "message": "Add Stream" },
|
||||
"moreInfo": { "message": "More info" },
|
||||
|
@ -440,7 +440,7 @@
|
||||
"tokenAddedSuccessfully": { "message": "Token añadido correctamente." },
|
||||
"noStreamsFoundForSelection": { "message": "No se encontraron streams para la selección." },
|
||||
"autoplayBlocked": { "message": "Reproducción automática bloqueada." },
|
||||
"welcomeToCinePlex": { "message": "Bienvenido a CinePlex" },
|
||||
"welcomeToCinePlex": { "message": "" },
|
||||
"page": { "message": "Página" },
|
||||
"all": { "message": "Todo" },
|
||||
"userScore": { "message": "Puntuación" },
|
||||
|
@ -17,7 +17,7 @@
|
||||
"navRecommendations": { "message": "Recommandations" },
|
||||
"navMusic": { "message": "Musique" },
|
||||
"navM3uGenerator": { "message": "Générateur M3U" },
|
||||
"heroWelcome": { "message": "Bienvenue sur CinePlex" },
|
||||
"heroWelcome": { "message": "" },
|
||||
"heroSubtitle": { "message": "Explorez des milliers de films et de séries." },
|
||||
"addStream": { "message": "Ajouter un flux" },
|
||||
"moreInfo": { "message": "Plus d'infos" },
|
||||
|
@ -17,7 +17,7 @@
|
||||
"navRecommendations": { "message": "Raccomandazioni" },
|
||||
"navMusic": { "message": "Musica" },
|
||||
"navM3uGenerator": { "message": "Generatore M3U" },
|
||||
"heroWelcome": { "message": "Benvenuto in CinePlex" },
|
||||
"heroWelcome": { "message": "" },
|
||||
"heroSubtitle": { "message": "Esplora migliaia di film e serie." },
|
||||
"addStream": { "message": "Aggiungi streaming" },
|
||||
"moreInfo": { "message": "Più informazioni" },
|
||||
|
@ -17,7 +17,7 @@
|
||||
"navRecommendations": { "message": "Recomendações" },
|
||||
"navMusic": { "message": "Música" },
|
||||
"navM3uGenerator": { "message": "Gerador de M3U" },
|
||||
"heroWelcome": { "message": "Bem-vindo ao CinePlex" },
|
||||
"heroWelcome": { "message": "" },
|
||||
"heroSubtitle": { "message": "Explore milhares de filmes e séries." },
|
||||
"addStream": { "message": "Adicionar stream" },
|
||||
"moreInfo": { "message": "Mais informações" },
|
||||
|
@ -1453,7 +1453,7 @@ body.sidebar-collapsed #main-container {
|
||||
color: var(--text-secondary);
|
||||
}
|
||||
|
||||
.similar-items-grid {
|
||||
.similar-items-grid, .filmography-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
|
||||
gap: 1.5rem;
|
||||
@ -1715,7 +1715,7 @@ body.sidebar-collapsed #main-container {
|
||||
gap: 1.5rem;
|
||||
}
|
||||
|
||||
.similar-items-grid {
|
||||
.similar-items-grid, .filmography-grid {
|
||||
grid-template-columns: repeat(auto-fill, minmax(130px, 1fr));
|
||||
gap: 1rem;
|
||||
}
|
||||
@ -1778,7 +1778,7 @@ body.sidebar-collapsed #main-container {
|
||||
height: 80px;
|
||||
}
|
||||
|
||||
.similar-items-grid {
|
||||
.similar-items-grid, .filmography-grid {
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 1rem;
|
||||
}
|
||||
|
40
js/ui.js
40
js/ui.js
@ -43,7 +43,7 @@ export function initializeUserData() {
|
||||
const savedPrefs = localStorage.getItem('cineplex_userPreferences');
|
||||
state.userPreferences = savedPrefs ? JSON.parse(savedPrefs) : { genres: {}, keywords: {}, ratings: [], cast: {}, crew: {} };
|
||||
} catch {
|
||||
state.userPreferences = { genres: {}, keywords: {}, ratings: [], cast: {}, crew: {} };
|
||||
state.userPreferences = { genres: {}, keywords: {}, ratings: {}, cast: {}, crew: {} };
|
||||
}
|
||||
}
|
||||
|
||||
@ -1393,8 +1393,8 @@ export async function initializeHeroSection() {
|
||||
if (!bg1 || !bg2 || !content) return;
|
||||
const heroButtons = content.querySelector('.hero-buttons');
|
||||
|
||||
content.querySelector('.hero-title').textContent = _('heroWelcome');
|
||||
content.querySelector('.hero-subtitle').textContent = _('heroSubtitle');
|
||||
content.querySelector('.hero-title').textContent = _('welcomeToCinePlex');
|
||||
content.querySelector('.hero-subtitle').textContent = _('welcomeSubtitle');
|
||||
content.querySelector('#hero-rating').innerHTML = '';
|
||||
content.querySelector('#hero-year').innerHTML = '';
|
||||
content.querySelector('#hero-extra').innerHTML = '';
|
||||
@ -2219,8 +2219,31 @@ async function renderActorDetails(actor) {
|
||||
const biography = actor.biography || _('noBiography');
|
||||
const imdbId = actor.external_ids?.imdb_id;
|
||||
|
||||
const actorNameLower = actor.name.toLowerCase();
|
||||
|
||||
const MIN_MAIN_ROLE_ORDER = 10;
|
||||
|
||||
const filmography = actor.combined_credits.cast
|
||||
.filter(item => (item.media_type === 'movie' || item.media_type === 'tv') && item.poster_path)
|
||||
.filter(item => {
|
||||
if (item.media_type !== 'movie' || !item.poster_path) {
|
||||
return false;
|
||||
}
|
||||
|
||||
const characterNameLower = (item.character || '').toLowerCase();
|
||||
if (characterNameLower.includes('himself') ||
|
||||
characterNameLower.includes('herself') ||
|
||||
characterNameLower === 'self' ||
|
||||
characterNameLower.includes(actorNameLower)
|
||||
) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (item.order !== undefined && item.order > MIN_MAIN_ROLE_ORDER) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
})
|
||||
.sort((a, b) => (b.popularity || 0) - (a.popularity || 0))
|
||||
.slice(0, 16);
|
||||
|
||||
@ -2244,12 +2267,11 @@ async function renderActorDetails(actor) {
|
||||
</div>
|
||||
|
||||
<div class="item-details-section">
|
||||
<h3 class="section-subtitle">${_('filmography')}</h3>
|
||||
<div class="similar-items-grid">
|
||||
<h3 class="section-subtitle">${_('moviesByActor')}</h3>
|
||||
<div class="filmography-grid">
|
||||
${filmography.map(item => {
|
||||
const isMovie = item.media_type === 'movie';
|
||||
const title = isMovie ? item.title : item.name;
|
||||
const year = (isMovie ? item.release_date : item.first_air_date)?.slice(0, 4) || 'N/A';
|
||||
const title = item.title;
|
||||
const year = (item.release_date || '').slice(0, 4) || 'N/A';
|
||||
const poster = item.poster_path ? `https://image.tmdb.org/t/p/w300${item.poster_path}` : 'img/no-poster.png';
|
||||
return `
|
||||
<div class="similar-item-card" data-id="${item.id}" data-type="${item.media_type}">
|
||||
|
Loading…
x
Reference in New Issue
Block a user