Vierundzwanzig Bilder, und der Weg dorthin fehlte sowieso

Zwei Dinge, die zusammengehören.

**Den Bilderdialog gab es nur an der Kachel.** Wer auf der Seite eines
Films stand und sah, dass das Plakat falsch ist, stand genau dort, wo er
nichts dagegen tun konnte — der Weg führte zurück in die Liste und über
das Dreipunktmenü. Jetzt steht „Bearbeiten" in der Knopfreihe der
Detailseite, bei Filmen wie bei Serien, und nur im Kopf: dieselbe Reihe
steht auch über jeder Fassung und jeder Folge.

**Und es waren vierundzwanzig, weil dort vierundzwanzig stand.** Bei
„365 Tage" hat TMDB neunundsechzig Plakate. Dazu ein zweiter, leiserer
Filter: gefragt wurden nur drei Sprachen. Fürs automatische Holen ist
das richtig — dort wird eines genommen, und es soll passen. Wer von Hand
wählt, will sehen, was es gibt; sortiert wird ohnehin nach Sprache, also
steht das Passende weiterhin oben.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Scarriffle
2026-10-12 20:49:37 +02:00
co-authored by Claude Opus 5
parent 78e347c58d
commit bfe263d495
3 changed files with 94 additions and 7 deletions
+19 -3
View File
@@ -420,6 +420,9 @@ public sealed class TmdbClient(
/// Schriftzug weggeworfen. Die Auswahl kostet also keine zusätzliche
/// Anfrage.
/// </remarks>
/// <summary>Wie viele Bilder je Art höchstens zur Wahl stehen.</summary>
private const int HöchstensBilderJeArt = 200;
public async Task<IReadOnlyList<Bildkandidat>> BilderAsync(
int providerId, bool serie, CancellationToken ct = default)
{
@@ -428,9 +431,16 @@ public sealed class TmdbClient(
var sprache = Sprachkürzel(einstellung.Language);
var weg = serie ? "tv" : "movie";
// <b>Ohne Sprachfilter.</b> Hier stand
// <c>include_image_language={sprache},en,null</c> — drei von
// vierzig Sprachen, und alles andere kam gar nicht erst an. Für das
// automatische Holen ist das richtig: dort wird eines genommen, und
// es soll das passende sein. Hier wählt ein Mensch, und der will
// sehen, was es gibt. Die Reihenfolge sortiert ohnehin nach
// Sprache, also steht das Passende weiterhin oben.
var antwort = await HolenAsync<TmdbBilderAntwort>(
$"{weg}/{providerId}/images?include_image_language={Uri.EscapeDataString(sprache)},en,null",
einstellung, ct);
$"{weg}/{providerId}/images", einstellung, ct);
if (antwort is null) return [];
@@ -448,7 +458,13 @@ public sealed class TmdbClient(
foreach (var b in (bilder ?? []).Where(b => !string.IsNullOrWhiteSpace(b.FilePath))
.OrderBy(b => Sprachrang(b.Language, sprache))
.ThenByDescending(b => b.VoteAverage ?? 0)
.Take(24))
// <b>Nicht vierundzwanzig.</b> Bei „365 Tage" hat
// TMDB neunundsechzig Plakate, und die Liste war
// nach vierundzwanzig zu Ende — ohne dass irgendwo
// stünde, dass da noch mehr ist. Die Grenze bleibt
// als Schutz vor einer Seite mit tausend Bildern,
// liegt aber dort, wo sie niemanden mehr behindert.
.Take(HöchstensBilderJeArt))
{
liste.Add(new Bildkandidat(
art, Bild(b.FilePath, groesse)!.Url,