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.** //