3559 von 5884 Dateien verschwanden lautlos

Der Scan erfindet keine Serie mehr, wenn weder Ordner noch Dateiname
eine nennen — richtig so. Nur wurde die Datei dann übersprungen, ohne
Zeile, ohne Spur. In der Mediathek standen 58 Serien und niemand konnte
sagen, wo die anderen geblieben sind.

Jetzt bekommt jede solche Datei eine Zeile ohne Zuordnung. Damit ist sie
zählbar, auflistbar und nach einer besseren Regel nachträglich
zuzuordnen. Untersucht wird sie nicht: ffprobe auf 3559 Dateien kostet
eine halbe Stunde für Angaben, die niemand zu sehen bekommt, und sobald
die Zuordnung steht, holt der nächste Lauf es nach.

Dazu ein Abschnitt "Nicht zugeordnet" in der Verwaltung, nach Grund
gebündelt und mit den Pfaden zum Aufklappen. Zwei Gründe gibt es, und
sie verlangen Verschiedenes: fehlt die Folgennummer, muss umbenannt
werden; fehlt der Serienname, genügt ein Ordner darum herum. Die Liste
lässt sich als Datei herunterladen — eine, die man markieren und
kopieren muss, schickt niemand.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Scarriffle
2026-10-04 17:23:36 +02:00
co-authored by Claude Opus 5
parent a8bb98c44c
commit cfb1e71762
8 changed files with 235 additions and 11 deletions
+23 -7
View File
@@ -162,16 +162,25 @@ public sealed class LibraryScanner(
var name = FileNames.ParseEpisode(datei.Path, bibliothek.Path);
if (name is null)
{
// **Nicht raten.** Eine erfundene Staffel 1 landete unter
// einer Serie, zu der die Datei nicht gehört, und dort
// fände sie niemand je wieder.
// **Nicht raten — aber auch nicht verschweigen.**
//
// Eine erfundene Staffel 1 landete unter einer Serie, zu
// der die Datei nicht gehört, und dort fände sie niemand je
// wieder. Die Datei einfach zu überspringen war aber die
// andere Hälfte des Fehlers: 3559 von 5884 Dateien
// verschwanden lautlos, und in der Mediathek stand eine
// Zahl, die keiner erklären konnte.
//
// Jetzt bekommt sie eine Zeile ohne Zuordnung. Damit ist
// sie zählbar, auflistbar und beim nächsten Lauf — oder
// nach einer besseren Regel — nachträglich zuzuordnen.
unerkannt++;
log.LogInformation("Scan: {Pfad} liess sich keiner Serie zuordnen.", datei.Path);
fortschritt?.Report(new Scanschritt(Scanphase.Vermerk,
$"Nicht zugeordnet: {datei.Path} — weder ein Ordner noch der "
+ "Dateiname nennen eine Serie."));
continue;
$"Nicht zugeordnet: {datei.Path} — {FileNames.WarumNicht(datei.Path, bibliothek.Path)}"));
}
if (name is not null)
{
var vorher = serien.Count;
var serie = SerieFinden(serien, libraryId, name.SeriesTitle);
@@ -188,6 +197,7 @@ public sealed class LibraryScanner(
}
folgeId = FolgeFinden(folgen, serie.Id, name).Id;
}
}
MediaFile eintrag;
@@ -264,7 +274,13 @@ public sealed class LibraryScanner(
mussUntersucht = true;
}
if (mussUntersucht && await UntersuchenAsync(eintrag, laufZeit, ct)) untersucht++;
// **Was keiner Serie gehört, wird nicht untersucht.** Ein
// ffprobe-Durchgang kostet rund fünfzig Millisekunden; bei 3559
// unzugeordneten Dateien ist das eine halbe Stunde für Angaben,
// die niemand zu sehen bekommt. Sobald die Zuordnung steht, holt
// der nächste Lauf es nach — `ProbedAt` ist dann noch leer.
var gehoertDazu = filmId is not null || folgeId is not null;
if (gehoertDazu && mussUntersucht && await UntersuchenAsync(eintrag, laufZeit, ct)) untersucht++;
// **Zwischendurch schreiben, nicht erst am Ende.**
//