FlixyProbe kann die Leiter zählen
Die Frage, von der alles Weitere abhängt, ist eine Tatsachenfrage: Liefert der Server eine HLS-Liste mit mehreren Stufen oder mit einer? Sie über einen Build aufs Gerät zu beantworten kostet einen halben Tag; über HTTP kostet sie Sekunden. Genau dafür gibt es dieses Werkzeug. `--playlist <adresse>` holt eine Playlist und zählt die `EXT-X-STREAM-INF`-Zeilen mitsamt Bandbreite und Auflösung. Es unterscheidet dabei die drei Fälle, die man auseinanderhalten muss: eine Master-Playlist mit mehreren Stufen, eine mit genau einer — und eine Varianten-Playlist, die gar keine Stufen führt, sondern Schnipsel. Die letzte Verwechslung ist die naheliegende: `main.m3u8` sieht aus wie eine Playlist und ist die falsche. `--jellyfin <host>` meldet sich an, holt einen Film, lässt den Server eine Transcode-Adresse aushandeln und prüft sie dreimal: unverändert, als `master.m3u8`, und als `master.m3u8` mit `enableAdaptiveBitrateStreaming=true`. Damit steht danach fest, ob der Umbau in JellyfinBackend überhaupt etwas bringen kann. Das Passwort wird eingetippt statt übergeben, ohne Echo und ohne Ablage. Gedruckt werden Pfad und die **Namen** der Abfragewerte, nie die vollständige Adresse mit Schlüssel — dieselbe Regel, nach der das Werkzeug schon vorher gebaut war. Beide Modi laufen vor der Plex-Anmeldung: die eine Frage hat mit Plex nichts zu tun, die andere bringt ihre eigene Anmeldung mit. Der Leser selbst ist gegen drei erfundene Playlists geprüft — mehrstufig, einstufig, und eine Schnipselliste. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
903bfe5f63
commit
afab93f53a
@@ -14,6 +14,25 @@ import PlexKit
|
||||
// dieses Rechners. Er steht nirgends in der Ausgabe: gedruckt werden Pfade,
|
||||
// Kennungen und Antworten, keine vollständigen Adressen.
|
||||
|
||||
// MARK: - Die Leiter-Frage
|
||||
//
|
||||
// Beide Modi laufen **vor** der Plex-Anmeldung: die eine Frage hat mit Plex
|
||||
// nichts zu tun, die andere bringt ihre eigene Anmeldung mit.
|
||||
|
||||
if let index = CommandLine.arguments.firstIndex(of: "--playlist"),
|
||||
let roh = CommandLine.arguments.dropFirst(index + 1).first,
|
||||
let url = URL(string: roh) {
|
||||
print("=== \(url.lastPathComponent) ===")
|
||||
print(await prüfePlaylist(url))
|
||||
exit(0)
|
||||
}
|
||||
|
||||
if let index = CommandLine.arguments.firstIndex(of: "--jellyfin"),
|
||||
let host = CommandLine.arguments.dropFirst(index + 1).first {
|
||||
await jellyfinLeiter(host: host)
|
||||
exit(0)
|
||||
}
|
||||
|
||||
let identity = PlexClientIdentity(
|
||||
product: "Flixy-Probe",
|
||||
version: "1.0",
|
||||
|
||||
Reference in New Issue
Block a user