diff --git a/server/src/Flaro.Api/Markenerkennung.cs b/server/src/Flaro.Api/Markenerkennung.cs index 395f9fb..ac08109 100644 --- a/server/src/Flaro.Api/Markenerkennung.cs +++ b/server/src/Flaro.Api/Markenerkennung.cs @@ -343,7 +343,6 @@ public sealed class Markenerkennung( foreach (var staffel in folgen.GroupBy(f => f.SeasonNumber).OrderBy(g => g.Key)) { var geordnet = staffel.OrderBy(f => f.EpisodeNumber).ToList(); - if (geordnet.Count < 2) continue; // **Einmal lesen, zweimal schneiden.** fpcalc kann nicht // springen — es liest immer von vorn. Also die ganze Spur je @@ -357,15 +356,26 @@ public sealed class Markenerkennung( .ToList(); if (fehlt.Count == 0) continue; + // **Der Tonabgleich braucht etwas zum Vergleichen.** Eine + // Staffel mit einer einzigen Folge — eine laufende Serie, von + // der erst die Premiere da ist — hat das nicht. Früher wurde + // sie hier übersprungen, und zwar ganz; seit es den Bildweg + // gibt, ist das zu früh: der braucht keine zweite Folge. var ganze = new Dictionary>(); - foreach (var folge in geordnet) + if (geordnet.Count >= 2) { - var abdruck = await leser.LesenAsync(folge.Path, ct); - if (abdruck.Count > 0) ganze[folge.Id] = abdruck; + foreach (var folge in geordnet) + { + var abdruck = await leser.LesenAsync(folge.Path, ct); + if (abdruck.Count > 0) ganze[folge.Id] = abdruck; + } } - if (ganze.Count < 2) continue; - foreach (var art in fehlt) + // Ohne zwei Abdrücke gibt es nichts abzugleichen; der Bildweg + // unten läuft trotzdem. + var tonarten = ganze.Count >= 2 ? fehlt : []; + + foreach (var art in tonarten) { var abdruecke = new List<(Guid Schlüssel, IReadOnlyList Abdruck)>(); var fensteranfang = new Dictionary(); @@ -410,6 +420,11 @@ public sealed class Markenerkennung( if (!fehlt.Contains(Markenart.Abspann)) continue; + // Auch wenn der Tonabgleich gar nicht erst lief: gesucht wurde, + // und ohne Vermerk liefe der Bildweg bei jedem Scan von Neuem. + await VermerkenAsync(db, serieId, staffel.Key, Markenart.Abspann, + geordnet.Count, ct); + // **Was der Ton nicht fand, sucht das Bild.** // // Der Abgleich lebt davon, dass der Abspann in jeder Folge