Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 1 addition & 50 deletions Posterizarr.ps1

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion Release.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
2.2.13
2.2.14
8 changes: 4 additions & 4 deletions webui/backend/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -922,9 +922,9 @@ def determine_media_type(filename: str, library_folder: str = None) -> str:
# Guess from folder name if DB lookup failed
if library_folder:
folder_lower = library_folder.lower()
if any(k in folder_lower for k in ["show", "series", "tv", "serien", "anime"]):
if any(k in folder_lower for k in ["show", "series", "tv", "serien"]):
return "Show Background"
if any(k in folder_lower for k in ["movie", "film", "kino", "4k"]):
if any(k in folder_lower for k in ["movie", "film", "kino"]):
return "Movie Background"

return "Background"
Expand All @@ -941,9 +941,9 @@ def determine_media_type(filename: str, library_folder: str = None) -> str:
# Guess from folder name if DB lookup failed
if library_folder:
folder_lower = library_folder.lower()
if any(k in folder_lower for k in ["show", "series", "tv", "serien", "anime"]):
if any(k in folder_lower for k in ["show", "series", "tv", "serien"]):
return "Show"
if any(k in folder_lower for k in ["movie", "film", "kino", "4k"]):
if any(k in folder_lower for k in ["movie", "film", "kino"]):
return "Movie"

# Default to Movie for unrecognized images
Expand Down
25 changes: 18 additions & 7 deletions webui/frontend/src/components/AssetReplacer.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ function AssetReplacer({ asset, onClose, onSuccess }) {
// Find library name - usually the top-level folder like "4K" or "TV"
for (let i = 0; i < pathSegments.length; i++) {
// Common library folder names
if (pathSegments[i].match(/^(4K|TV|Movies|Series|anime)$/i)) {
if (pathSegments[i].match(/^(4K|TV|Movies|Series|Anime)$/i)) {
libraryName = pathSegments[i];
console.log(`Found library name: ${libraryName}`);
break;
Expand Down Expand Up @@ -265,11 +265,20 @@ function AssetReplacer({ asset, onClose, onSuccess }) {
// Determine mediaType
const backendAssetType = (asset.type || "").toLowerCase();
const dbType = (dbData?.Type || "").toLowerCase();
const libName = (libraryName || "").toLowerCase();
let mediaType = "movie"; // Default
const libName = (libraryName || "").toLowerCase(); // Corrected variable name

if (
dbType.includes("show") ||
let mediaType = "movie"; // Default fallback

// 1. STRICT DATABASE CHECK (Primary Source of Trust)
if (dbType.includes("movie")) {
mediaType = "movie";
console.log("MediaType strictly determined by DB: movie");
} else if (dbType.includes("show") || dbType.includes("series")) {
mediaType = "tv";
console.log("MediaType strictly determined by DB: tv");
}
// 2. HEURISTIC FALLBACK (Only used if DB data is missing/inconclusive)
else if (
backendAssetType.includes("show") ||
backendAssetType.includes("season") ||
backendAssetType.includes("episode") ||
Expand All @@ -278,10 +287,12 @@ function AssetReplacer({ asset, onClose, onSuccess }) {
libName.includes("tv") ||
libName.includes("show") ||
libName.includes("series") ||
libName.includes("serier") ||
libName.includes("anime")
libName.includes("serier")
) {
mediaType = "tv";
console.log(`MediaType determined by fallback heuristics: ${mediaType}`);
} else {
console.log(`Defaulting to: ${mediaType}`);
}

console.log(`Backend asset.type: '${backendAssetType}'`);
Expand Down
242 changes: 110 additions & 132 deletions webui/frontend/src/components/Dashboard.jsx

Large diffs are not rendered by default.

27 changes: 20 additions & 7 deletions webui/frontend/src/components/RecentAssets.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -351,13 +351,26 @@ function RecentAssets({ refreshTrigger = 0 }) {
</h2>

<div className="flex items-center gap-3">
<CompactImageSizeSlider
value={assetCount}
onChange={handleAssetCountChange}
storageKey="recent-assets-count"
min={5}
max={10}
/>
{/* Enhanced Slider with Badge */}
<div className="flex flex-col items-center mr-2 relative group">
<div className="flex items-center gap-2 mb-1">
<span className="text-[10px] font-bold text-theme-muted uppercase tracking-tighter">
{t("dashboard.assets")}
</span>
{/* Dynamic Badge */}
<span className="flex items-center justify-center min-w-[20px] h-5 px-1.5 rounded-md bg-theme-primary text-white text-[10px] font-black shadow-sm shadow-theme-primary/20">
{assetCount}
</span>
</div>

<CompactImageSizeSlider
value={assetCount}
onChange={handleAssetCountChange}
storageKey="recent-assets-count"
min={5}
max={10}
/>
</div>

<button
onClick={() => fetchRecentAssets()}
Expand Down
8 changes: 7 additions & 1 deletion webui/frontend/src/locales/de/translation.json
Original file line number Diff line number Diff line change
Expand Up @@ -581,7 +581,12 @@
"missing": "Fehlt",
"versionAbbr": "Ver.",
"editConfig": "Konfig. bearbeiten",
"createConfig": "Konfig. erstellen"
"createConfig": "Konfig. erstellen",
"completed": "Abgeschlossen",
"upcoming": "Anstehend",
"ofDay": "des Tages",
"start": "Start",
"end": "Ende"
},
"banners": {
"executionInProgress": "Skriptausführung läuft",
Expand Down Expand Up @@ -672,6 +677,7 @@
"noSchedulesRegistered": "Keine Zeitpläne registriert",
"run": "Starten",
"stopSuccess": "Skript wird gestoppt...",
"assets": "Anzuzeigende Assets",
"cores": "Kerne",
"free": "Frei"
},
Expand Down
8 changes: 7 additions & 1 deletion webui/frontend/src/locales/en/translation.json
Original file line number Diff line number Diff line change
Expand Up @@ -581,7 +581,12 @@
"missing": "Missing",
"versionAbbr": "Ver.",
"editConfig": "Edit Config",
"createConfig": "Create Config"
"createConfig": "Create Config",
"completed": "Completed",
"upcoming": "Upcoming",
"ofDay": "of Day",
"start": "Start",
"end": "End"
},
"banners": {
"executionInProgress": "Script Execution in Progress",
Expand Down Expand Up @@ -672,6 +677,7 @@
"noSchedulesRegistered": "No schedules registered",
"run": "Run",
"stopSuccess": "Script stopping...",
"assets": "Assets to Display",
"cores": "Cores",
"free": "Free"
},
Expand Down
8 changes: 7 additions & 1 deletion webui/frontend/src/locales/fr/translation.json
Original file line number Diff line number Diff line change
Expand Up @@ -581,7 +581,12 @@
"missing": "Manquant",
"versionAbbr": "Ver.",
"editConfig": "Modifier Config",
"createConfig": "Créer Config"
"createConfig": "Créer Config",
"completed": "Terminé",
"upcoming": "À venir",
"ofDay": "de la journée",
"start": "Début",
"end": "Fin"
},
"banners": {
"executionInProgress": "Exécution du Script en Cours",
Expand Down Expand Up @@ -620,6 +625,7 @@
"noSchedulesRegistered": "Aucun horaire enregistré",
"run": "Lancer",
"stopSuccess": "Arrêt du script...",
"assets": "Actifs à Afficher",
"scriptFile": "Fichier script",
"configFile": "Fichier de config",
"cores": "Cœurs",
Expand Down
8 changes: 7 additions & 1 deletion webui/frontend/src/locales/it/translation.json
Original file line number Diff line number Diff line change
Expand Up @@ -581,7 +581,12 @@
"missing": "Mancante",
"versionAbbr": "Ver.",
"editConfig": "Modifica Config",
"createConfig": "Crea Config"
"createConfig": "Crea Config",
"completed": "Completato",
"upcoming": "In arrivo",
"ofDay": "del giorno",
"start": "Inizio",
"end": "Fine"
},
"banners": {
"executionInProgress": "Esecuzione Script in Corso",
Expand Down Expand Up @@ -620,6 +625,7 @@
"noSchedulesRegistered": "Nessun orario registrato",
"run": "Avvia",
"stopSuccess": "Arresto dello script...",
"assets": "Asset da Visualizzare",
"scriptFile": "File script",
"configFile": "File di configurazione",
"cores": "Core",
Expand Down
8 changes: 7 additions & 1 deletion webui/frontend/src/locales/pt/translation.json
Original file line number Diff line number Diff line change
Expand Up @@ -581,7 +581,12 @@
"missing": "Em Falta",
"versionAbbr": "Ver.",
"editConfig": "Editar Config",
"createConfig": "Criar Config"
"createConfig": "Criar Config",
"completed": "Concluído",
"upcoming": "Próximo",
"ofDay": "do dia",
"start": "Início",
"end": "Fim"
},
"banners": {
"executionInProgress": "Execução de Script em Progresso",
Expand Down Expand Up @@ -620,6 +625,7 @@
"noSchedulesRegistered": "Nenhum horário registrado",
"run": "Iniciar",
"stopSuccess": "Parando o script...",
"assets": "Ativos a Exibir",
"scriptFile": "Arquivo do script",
"configFile": "Arquivo de configuração",
"cores": "Núcleos",
Expand Down