Live-TV: die gebaute Adresse zeigen und die Parameter halbieren
Zwei Dinge, die ich mehrere Runden zu spät tue. Die Adresse steht jetzt in der Spur, mit entferntem Token. Ohne sie diskutiere ich über eine Anfrage, die niemand gesehen hat — und genau das habe ich getan, während ich einzelne Parameter der Reihe nach verdächtigt habe. Und eine Form, die nur das Nötigste enthält: Pfad, Protokoll, hasMDE, Indizes, Sitzung, Token, Gerätekennung. Eine nackte 400 sagt nicht, welche Angabe stört. Drei Formen nebeneinander — voll, ohne Profil, nur das Nötigste — sagen es. Dazu zwei Kleinigkeiten: die Abspielliste wird ein zweites Mal nach zwei Sekunden abgerufen, weil ein Empfänger ein Stück Hardware ist und einen Moment braucht, bis er abgestimmt hat. Und wenn das Belegen klappt, hört die Suche danach auf — die übrigen zwanzig Abfragen sind dann nur noch Lärm im Bericht und Last für den Server. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
3467f0f690
commit
ef9fd676c8
@@ -23,7 +23,8 @@ extension PlexServer {
|
||||
public nonisolated func transcodeURL(
|
||||
for request: TranscodeRequest,
|
||||
includeProfile: Bool = true,
|
||||
keepPathEncoding: Bool = true
|
||||
keepPathEncoding: Bool = true,
|
||||
minimal: Bool = false
|
||||
) -> URL? {
|
||||
guard let baseURL = connection.url,
|
||||
var components = URLComponents(
|
||||
@@ -32,9 +33,24 @@ extension PlexServer {
|
||||
)
|
||||
else { return nil }
|
||||
|
||||
let items = request.queryItems + [
|
||||
URLQueryItem(name: "X-Plex-Token", value: token),
|
||||
] + (includeProfile ? clientProfileItems : []) + identity.queryItems
|
||||
// Das Nötigste, um herauszufinden, an welcher Angabe der Server
|
||||
// Anstoß nimmt. Eine nackte 400 sagt nicht, welcher Parameter ihr
|
||||
// nicht passt — halbieren sagt es.
|
||||
let items = minimal
|
||||
? [
|
||||
URLQueryItem(name: "path", value: request.percentEncodedPath),
|
||||
URLQueryItem(name: "protocol", value: "hls"),
|
||||
URLQueryItem(name: "hasMDE", value: "1"),
|
||||
URLQueryItem(name: "mediaIndex", value: String(request.mediaIndex)),
|
||||
URLQueryItem(name: "partIndex", value: String(request.partIndex)),
|
||||
URLQueryItem(name: "session", value: request.sessionIdentifier),
|
||||
URLQueryItem(name: "X-Plex-Session-Identifier", value: request.sessionIdentifier),
|
||||
URLQueryItem(name: "X-Plex-Token", value: token),
|
||||
URLQueryItem(name: "X-Plex-Client-Identifier", value: identity.clientIdentifier),
|
||||
]
|
||||
: request.queryItems + [
|
||||
URLQueryItem(name: "X-Plex-Token", value: token),
|
||||
] + (includeProfile ? clientProfileItems : []) + identity.queryItems
|
||||
components.queryItems = items
|
||||
|
||||
components.percentEncodedQueryItems = components.percentEncodedQueryItems?.map { item in
|
||||
|
||||
Reference in New Issue
Block a user