From c334fca66527612f594e8afc156dc4802aec6e7f Mon Sep 17 00:00:00 2001 From: Scarriffle Date: Sun, 27 Sep 2026 18:16:40 +0200 Subject: [PATCH] =?UTF-8?q?Den=20gr=C3=B6ssten=20Titel=20messen,=20und=20d?= =?UTF-8?q?ie=20Quelle=20dazusagen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Die Reihe lieferte viermal dasselbe — 480p bei 1,1 Mbit, gleichgültig ob mit `videoResolution` oder mit 20 Mbit. Das sieht nach einem Fehler in der Anfrage aus und ist wahrscheinlich keiner: gemessen wurde „2 Fast 2 Furious", der erste Titel im Alphabet, und vermutlich ein 540p-Rip. Plex rechnet nichts hoch. Damit misst die Reihe die **Datei** statt die Einstellungen — und aus einer Messung, die immer dasselbe sagt, liest man leicht das Falsche heraus. Die Probe nimmt jetzt den Titel mit der höchsten Bitrate aus einer Stichprobe von sechzig und druckt die Quelle dazu: Auflösung, Bitrate, Codec. Damit ist auf einen Blick zu sehen, ob eine kleine Antwort eine kleine Quelle ist oder ein echter Deckel. Co-Authored-By: Claude Opus 5 --- .../FlixyKit/Sources/FlixyProbe/main.swift | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/Packages/FlixyKit/Sources/FlixyProbe/main.swift b/Packages/FlixyKit/Sources/FlixyProbe/main.swift index b1176c3..03b4eff 100644 --- a/Packages/FlixyKit/Sources/FlixyProbe/main.swift +++ b/Packages/FlixyKit/Sources/FlixyProbe/main.swift @@ -150,6 +150,20 @@ let firstMovie = await { () async -> PlexItem? in return try? await server.items(inLibrary: movieLibrary, limit: 1).items.first }() +/// Der **größte** Titel aus einer Stichprobe — nicht der erste im Alphabet. +/// +/// Für die Frage „wie gross liefert der Server" taugt eine kleine Datei +/// nicht: Plex rechnet nichts hoch, und dann misst man die Quelle statt die +/// Einstellungen. Genau daran ist eine Messung schon gescheitert — „2 Fast 2 +/// Furious" steht alphabetisch vorn und ist ein 540p-Rip. +let biggestMovie = await { () async -> PlexItem? in + guard let movieLibrary else { return nil } + let stichprobe = (try? await server.items(inLibrary: movieLibrary, limit: 60).items) ?? [] + return stichprobe.max { links, rechts in + (links.media.first?.bitrate ?? 0) < (rechts.media.first?.bitrate ?? 0) + } +}() + // MARK: - Die Leiter bei Plex // Dieselbe Frage wie bei Jellyfin, und aus demselben Grund gestellt: bei Plex @@ -157,11 +171,18 @@ let firstMovie = await { () async -> PlexItem? in // mehrere Stufen liefert, war nie geprüft. Eine ungeprüfte Annahme über // Serververhalten hat uns bei Jellyfin vier Runden gekostet. if CommandLine.arguments.contains("--leiter") { - guard let movie = firstMovie else { + guard let movie = biggestMovie ?? firstMovie else { print("Keine Datei zum Prüfen gefunden.") exit(0) } - print("Leiter-Probe mit: \(movie.title)\n") + + // **Die Quelle zuerst nennen.** Ohne sie misst man womöglich die Datei + // statt die Einstellungen: Plex rechnet nichts hoch, und eine kleine + // Quelle liefert klein, ganz gleich was man anfragt. + let quelle = movie.media.first + print("Leiter-Probe mit: \(movie.title)") + print(" Quelle: \(quelle?.width ?? 0)x\(quelle?.height ?? 0), " + + "\((quelle?.bitrate ?? 0)) kbit, \(quelle?.videoCodec ?? "–")\n") // **Zwei getrennte Sitzungen, und das ist der Kern des Vergleichs.** //