Files
Flaro/Tools/JellyfinStub
ScarriffleandClaude Opus 5 0a59b8e82b Die Attrappe unterscheidet die Mediatheken — und der Aufmacher sagt, wenn eine Auswahl ins Leere greift
Gemessen, weil „es tut nichts" und „es tut etwas anderes" von aussen
gleich aussehen. Gegen die Attrappe, mit laufendem Mitschnitt:

    Auswahl ["lib-shows","lib-movies"] → übrig [latest.lib-movies, latest.lib-shows]
    Auswahl ["lib-shows"]              → übrig [latest.lib-shows]

Und der Aufmacher wechselte dabei **sofort** von „Nachtzug nach Genf"
(Film) zu „Küstenwache" (Serie) — ohne Neustart, mit offener App. Der
Weg stimmt also; was gemeldet wurde, muss eine andere Ursache haben.

Zwei Dinge, die diese Messung erst möglich gemacht haben:

**Die Attrappe hatte in jeder Mediathek dasselbe stehen.** „Neu in Filme",
„Neu in Serien" und „Neu in Gemischtes" lieferten dieselben Titel — damit
sieht ein wirkungsloser Filter genauso aus wie ein wirksamer. Jetzt gibt
es zwei Titel, die es **nur** in „Gemischtes" gibt, und jede Mediathek
führt, was zu ihr gehört.

**Ein Zwischenergebnis, das ich fast für den Fehler gehalten hätte:** ein
Neuinstallieren über `simctl install` löscht die Voreinstellungen nicht.
Die vermeintlich frische Auswahl war in Wahrheit die alte plus die neue —
zwei Messungen lang.

**Und der Punkt, der dem gemeldeten Verhalten am nächsten kommt:** trifft
die Auswahl keine einzige Reihe, gilt sie seit gestern als wirkungslos und
der Aufmacher zeigt alles. Das verhindert einen leeren Aufmacher, sieht
aber genau aus wie ein Schalter, der nichts tut. Jetzt steht es dort, wo
man es einstellt: ein Hinweis unter der Auswahl, sobald für die
angehakten Mediatheken keine eigene Reihe auf der Startseite existiert.

Welche Mediatheken überhaupt eine Reihe stellen, wird dafür aus den
geladenen Reihen gelesen, nicht angenommen.

iOS und tvOS bauen, 469 Tests grün.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-10-01 10:18:53 +02:00
..

Jellyfin-Attrappe

Ein Server, der so tut, als wäre er Jellyfin — gerade so viel, dass die App sich anmelden und stöbern kann. Gedacht fürs Ansehen der Oberfläche, nicht fürs Prüfen der Protokollschicht; dafür gibt es Tests mit aufgezeichneten Antworten.

python3 Tools/JellyfinStub/server.py

Dann in der App Mit Jellyfin anmelden → 127.0.0.1 eintragen. Quick Connect bestätigt sich nach drei Abfragen von selbst, damit der Bildschirm mit dem Code sichtbar wird und die Anmeldung trotzdem durchläuft.

Die Bilder sind einfarbige Flächen, deren Farbe aus der Kennung des Titels entsteht. Das ist Absicht: so lässt sich auf einen Blick erkennen, ob der Aufmacher tatsächlich weiterwandert und ob eine Kachel das Bild zeigt, das zu ihr gehört.

Abgespielt wird sample.mp4 — zehn Sekunden Farbverlauf, mit einem kleinen Swift-Programm erzeugt. Der Server beantwortet Bereichsanfragen, weil der Systemplayer eine Datei nie am Stück holt.

Was hereinkommt, steht unter http://127.0.0.1:8096/__reports: jede Wiedergabemeldung mit ihrem Anfragekörper. Damit lässt sich prüfen, ob die App den Beginn meldet, ob der Fortschritt in Ticks ankommt und ob am Ende abgeräumt wird.

Die Benutzerdaten sind echt: /UserItems/{id}/UserData und der ältere Weg /Users/{id}/Items/{id}/UserData lesen und schreiben ein Blatt je Titel, und „Weiterschauen" führt nur, was eine gemerkte Stelle grösser null hat. Unter http://127.0.0.1:8096/__userdata steht, was geschrieben wurde und über welchen der beiden Pfade — daran ist ablesbar, ob „Aus Weiterschauen entfernen" wirklich etwas tut.

Mit --unanalysed melden die Quellen keine Spuren. Dann entscheidet die App wie bei einem Server, der eine Datei noch nicht untersucht hat.

Mit --vlc melden sie DTS-Ton. AVFoundation kann das nicht, also läuft die Wiedergabe über VLCKit — der einzige Weg, diesen Zweig mit der Beispieldatei überhaupt zu erreichen. Die Datei bleibt dieselbe; VLC spielt sie ebenso, und geprüft wird der Weg, nicht der Ton.

Kein echter Server wird dabei angefasst, und es gehen keine Zugangsdaten über die Leitung.