From ab3e1c975ebc5aa77ca140a34997bdceac74c2e3 Mon Sep 17 00:00:00 2001 From: Scarriffle Date: Sat, 12 Sep 2026 16:01:25 +0200 Subject: [PATCH] =?UTF-8?q?Probe:=20den=20Server=20nach=20seinen=20eigenen?= =?UTF-8?q?=20F=C3=A4higkeiten=20fragen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Der Befund wird deutlicher: ping und stop antworten mit 404, start.m3u8 und decision mit 400. Die einen Routen gibt es nicht, die anderen lehnen ab. Und die Mediathek antwortet normal — an der Verbindung liegt es nicht. In jeder Antwort der Wurzel stehen Felder, deren Werte ich nie angesehen habe: transcoderVideo, transcoderActiveVideoSessions, transcoderVideoBitrates. Steht dort `transcoderVideo: false`, kann dieser Server kein Video umrechnen — und dann suche ich seit Tagen nach einer Fähigkeit, die es auf diesem Gerät nicht gibt. Das ist dieselbe Art Annahme wie „der Transcoder tut es schon": etwas Vorausgesetztes, das nie jemand nachgesehen hat. Nachsehen kostet eine Zeile. Co-Authored-By: Claude Opus 5 --- .../PlexKit/Endpoints/PlexServer+LiveTV.swift | 26 +++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/Packages/FlixyKit/Sources/PlexKit/Endpoints/PlexServer+LiveTV.swift b/Packages/FlixyKit/Sources/PlexKit/Endpoints/PlexServer+LiveTV.swift index 3adbd43..7152490 100644 --- a/Packages/FlixyKit/Sources/PlexKit/Endpoints/PlexServer+LiveTV.swift +++ b/Packages/FlixyKit/Sources/PlexKit/Endpoints/PlexServer+LiveTV.swift @@ -1569,11 +1569,33 @@ extension PlexServer { // Und zur Gegenkontrolle etwas, von dem wir wissen, dass es geht: // die Bilder kommen über denselben `/:/`-Aufbau. - lines.append(" Bild-Transcoder: \(await rawResponse(forPath: "/photo/:/transcode", limit: 120))") - lines.append(" Mediathek: \(await rawResponse(forPath: "/library/sections", limit: 120))") + lines.append(" Mediathek: \(await rawResponse(forPath: "/library/sections", limit: 90))") + lines.append(" Server sagt über sich: \(await capabilities())") return lines } + /// Was der Server über seine eigenen Fähigkeiten sagt. + /// + /// Die Felder stehen in jeder Antwort der Wurzel, und ihre Werte habe ich + /// nie angesehen. Steht dort `transcoderVideo: false`, kann dieser Server + /// kein Video umrechnen — und dann war die ganze Suche der letzten Tage + /// die Suche nach einer Fähigkeit, die es nicht gibt. + public func capabilities() async -> String { + guard let data = try? await client.send(PlexRequest(path: "/", timeout: .seconds(15))), + let root = try? JSONSerialization.jsonObject(with: data) as? [String: Any], + let container = root["MediaContainer"] as? [String: Any] + else { return "keine Antwort" } + + let interesting = [ + "transcoderVideo", "transcoderAudio", "transcoderSubtitles", + "transcoderActiveVideoSessions", "transcoderVideoBitrates", + "offlineTranscode", "allowSync", "version", "platform", + ] + return interesting + .compactMap { key in container[key].map { "\(key)=\($0)" } } + .joined(separator: ", ") + } + private func probe(items: [URLQueryItem], endpoint: String) async -> String { guard let baseURL = connection.url, var components = URLComponents(