Die Mediathek hörte bei I auf, und jede Folge stand doppelt

Zwei Befunde aus dem laufenden Betrieb.

Die Liste holte genau eine Seite. Der Server gibt höchstens 200 Einträge
je Zug — das ist richtig so —, nur fragte die Oberfläche nie nach der
zweiten. Bei 455 Filmen endete die Mediathek mitten im Alphabet, ohne
Hinweis, dass da noch etwas kommt. Jetzt wird beim Scrollen nachgeladen,
und die Zahl sagt „200 von 455" statt einer Behauptung, die man beim
Scrollen widerlegt.

Dabei kam heraus, dass ein IntersectionObserver eine Seite braucht, die
auch gezeichnet wird: im Fenster im Hintergrund löst er nicht aus, und
beim Prüfen blieb die Liste genau deshalb bei 200 stehen. Daneben steht
jetzt eine Prüfung am Scrollereignis, die überall greift.

Der zweite Befund: jede Folge zeigte zwei gleich aussehende Knopfreihen.
Es sind zwei Dateien — Plex' „Optimized for Mobile"-Kopien. Flaro kannte
„optimized", aber nicht „Optimized for Mobile", und sah ohnehin nur den
unmittelbaren Elternordner; Plex legt die Fassung aber als
`Plex Versions/Optimized for Mobile/<Serie>/<Staffel>/…` ab. Jetzt wird
drei Ebenen hoch gesucht, die Schublade `Plex Versions` benennt keine
Serie mehr, und an der Folge steht „Mobil" statt einer zweiten,
unerklärten Reihe.

Nicht um Plex zu bedienen — die Dateien liegen nun einmal so auf der
Platte.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Scarriffle
2026-10-04 18:45:07 +02:00
co-authored by Claude Opus 5
parent 960cca3dae
commit 8809b9f46f
8 changed files with 246 additions and 32 deletions
@@ -352,3 +352,64 @@ public class EchteBenennungen
Does.Contain("keine Folgennummer"));
}
}
/// <summary>Was Plex als zweite Fassung ablegt, ist keine zweite Folge.</summary>
///
/// <remarks>
/// <b>Aus dem echten Bestand.</b> In der Folgenliste stand jede Folge mit zwei
/// gleich aussehenden Knopfreihen untereinander — zwei Dateien, kein Hinweis
/// worauf. Es sind Plex' „Optimized for Mobile"-Kopien. Erkannt heissen sie
/// „Mobil" und stehen als Fassung an derselben Folge; unerkannt sehen sie aus
/// wie ein Fehler.
/// </remarks>
public class PlexFassungen
{
private const string Wurzel = "/media/Serien";
[Test]
public void Optimiert_fuers_Telefon_heisst_Mobil()
{
Assert.That(
FileNames.Fassung($"{Wurzel}/Plex Versions/Optimized for Mobile/Dark/S01/Dark - S01E01.mkv"),
Is.EqualTo("Mobil"));
}
[Test]
public void Die_Schublade_ist_keine_Serie()
{
var name = FileNames.ParseEpisode(
$"{Wurzel}/Plex Versions/Optimized for Mobile/Dark/S01/Dark - S01E01.mkv", Wurzel);
Assert.That(name, Is.Not.Null);
Assert.That(name!.SeriesTitle, Is.EqualTo("Dark"),
"Ohne das hiesse die Serie „Plex Versions“.");
Assert.That(name.Season, Is.EqualTo(1));
Assert.That(name.Episode, Is.EqualTo(1));
}
/// <summary>Beide Wege führen zur selben Folge — nur mit anderer Fassung.</summary>
[Test]
public void Original_und_Kopie_sind_dieselbe_Folge()
{
var original = FileNames.ParseEpisode($"{Wurzel}/Dark/S01/Dark - S01E01.mkv", Wurzel);
var mobil = FileNames.ParseEpisode(
$"{Wurzel}/Plex Versions/Optimized for Mobile/Dark/S01/Dark - S01E01.mkv", Wurzel);
Assert.That(mobil!.SeriesTitle, Is.EqualTo(original!.SeriesTitle));
Assert.That(mobil.Season, Is.EqualTo(original.Season));
Assert.That(mobil.Episode, Is.EqualTo(original.Episode));
Assert.That(FileNames.Fassung($"{Wurzel}/Dark/S01/Dark - S01E01.mkv"), Is.Null);
Assert.That(FileNames.Fassung(
$"{Wurzel}/Plex Versions/Optimized for Mobile/Dark/S01/Dark - S01E01.mkv"),
Is.EqualTo("Mobil"));
}
/// <summary>Ein Staffelordner zwischendrin ändert nichts.</summary>
[Test]
public void Staffelordner_benennt_weiterhin_keine_Serie()
{
var name = FileNames.ParseEpisode($"{Wurzel}/Dark/Staffel 2/Dark - S02E05.mkv", Wurzel);
Assert.That(name!.SeriesTitle, Is.EqualTo("Dark"));
}
}