diff --git a/Flixy/Views/Home/MediaRow.swift b/Flixy/Views/Home/MediaRow.swift index 013f80e..6ba7684 100644 --- a/Flixy/Views/Home/MediaRow.swift +++ b/Flixy/Views/Home/MediaRow.swift @@ -107,6 +107,10 @@ extension MediaItem { var rowArtworkPath: String? { switch kind { case .episode: thumb ?? seriesThumb + // Eine Staffel hat bei Jellyfin oft gar kein eigenes Bild — sie leiht + // sich das der Serie. Ohne diesen Rückfall blieb „Nachtstreife, + // Staffel 7" eine graue Fläche, obwohl die Serie ein Plakat hat. + case .season: art ?? thumb ?? seriesArt ?? seriesThumb default: art ?? thumb } } @@ -119,6 +123,9 @@ extension MediaItem { var posterArtworkPath: String? { switch kind { case .episode: seriesThumb ?? parentThumb ?? thumb + // Das eigene Staffelplakat zuerst: es zeigt die Staffel. Gibt es + // keines, ist das der Serie allemal besser als nichts. + case .season: thumb ?? seriesThumb default: thumb } } diff --git a/Packages/FlixyKit/Sources/JellyfinKit/JellyfinItem+Media.swift b/Packages/FlixyKit/Sources/JellyfinKit/JellyfinItem+Media.swift index 04a216e..1ccd7b2 100644 --- a/Packages/FlixyKit/Sources/JellyfinKit/JellyfinItem+Media.swift +++ b/Packages/FlixyKit/Sources/JellyfinKit/JellyfinItem+Media.swift @@ -20,7 +20,17 @@ extension JellyfinItem { // Jellyfin führt beide auf einer Zehnerskala, wie Plex auch. rating: criticRating.map { $0 / 10 } ?? communityRating, audienceRating: communityRating, - thumb: imageBase.primary(itemID: id, tag: imageTags?["Primary"]), + // **Nur wenn es auch eines gibt** — dieselbe Vorsicht wie eine + // Zeile tiefer beim Hintergrundbild, die hier gefehlt hat. + // + // Die Adresse entsteht aus der Kennung, nicht aus einer Antwort + // des Servers. Ohne die Prüfung trug jeder Titel ohne eigenes + // Plakat eine Adresse, die mit „nicht gefunden" antwortet — und + // weil ein 404 zu Recht nicht wiederholt wird, blieb die Kachel + // für immer grau. Betroffen waren vor allem Staffeln: die haben + // bei Jellyfin oft kein eigenes Bild, sondern leihen das der + // Serie. Ist hier nichts, darf die Kachel genau das tun. + thumb: imageTags?["Primary"].map { imageBase.primary(itemID: id, tag: $0) }, // Nur wenn es auch eines gibt: die Adresse entsteht aus der // Kennung, nicht aus einer Antwort des Servers — ohne diese // Prüfung stünde hinter jedem Titel ohne Hintergrundbild eine