Live-TV: die Sender waren da, zwei eigene Fehler haben sie verschluckt

Der Abzug vom Server zeigt beides schwarz auf weiß.

Erstens: /media/grabbers/devices/1/channels antwortet mit 278 Sendern —
unter dem Sammelnamen `DeviceChannel`. Die Hülle kannte nur `Channel` und
hat die vollständige Liste als leer verworfen.

Zweitens: das Programmraster antwortet, aber nicht auf `type=1`. Die 1
steht bei Plex für Film, und im Programm laufen auch Folgen, Sport und
Nachrichten — der Filter hat das Raster geleert. Ohne ihn kommen die
Sendungen samt Sendername, Nummer, Logo und Kennung.

Das Raster hat jetzt Vorrang vor der Tunerliste, auch wenn beide
antworten: nur dort gehören Sender und Programm zusammen, es enthält
ohnehin nur die eingeschalteten Sender, und die Tunerliste führt alle 278.

Einschalten läuft über die Adresse der laufenden Sendung beim
Programmanbieter — Plex behandelt eine laufende Sendung wie einen Film.
Die Adresse wird einmal entpackt, bevor sie in die Anfrage geht: sonst
kodiert URLComponents ein zweites Mal, und aus %3A wird %253A.

Die Tests stehen jetzt auf den echten Antworten aus dem Abzug, nicht auf
erfundenen: DeviceChannel mit `name` und `key`, Rastereinträge mit
channelVcn, channelID und einer Folge neben einem Film.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Scarriffle
2026-09-12 13:08:15 +02:00
co-authored by Claude Opus 5
parent 7e36f37506
commit 2362865ba9
9 changed files with 2726 additions and 2578 deletions
@@ -3,47 +3,53 @@
"size": 3,
"Metadata": [
{
"ratingKey": "epg://1",
"title": "Tagesschau",
"summary": "Nachrichten",
"ratingKey": "5f1",
"key": "/tv.plex.providers.epg.cloud:2/metadata/plex%3A%2F%2Fmovie%2F6254592919e23c64f6c5605d",
"title": "Endlich Witwer",
"summary": "Komödie",
"type": "movie",
"beginsAt": 1757682000,
"endsAt": 1757682900,
"endsAt": 1757685600,
"Media": [
{
"channelIdentifier": "6228f7f2364e02fa5ec8e51c-11",
"channelTitle": "SRF 1 HD",
"channelCallSign": "SRF1",
"channelThumb": "/library/metadata/11/thumb",
"channelVcn": "1",
"Part": [{ "key": "/livetv/channels/11" }]
"channelCallSign": "ZDFGERH",
"channelID": 5,
"channelIdentifier": "6228f7f2364e02fa5ec8e51c-5fc705f9c8d56d002e06f849",
"channelThumb": "/library/metadata/5/thumb",
"channelTitle": "006 ZDFGERH (ZDF HD)",
"channelVcn": "006",
"onAir": true
}
]
},
{
"ratingKey": "epg://2",
"title": "Meteo",
"beginsAt": 1757682900,
"endsAt": 1757683200,
"ratingKey": "5f2",
"key": "/tv.plex.providers.epg.cloud:2/metadata/plex%3A%2F%2Fepisode%2Fabc",
"title": "heute journal",
"type": "episode",
"beginsAt": 1757685600,
"endsAt": 1757687400,
"Media": [
{
"channelIdentifier": "6228f7f2364e02fa5ec8e51c-11",
"channelTitle": "SRF 1 HD",
"channelVcn": 1,
"Part": [{ "key": "/livetv/channels/11" }]
"channelID": 5,
"channelIdentifier": "6228f7f2364e02fa5ec8e51c-5fc705f9c8d56d002e06f849",
"channelTitle": "006 ZDFGERH (ZDF HD)",
"channelVcn": "006"
}
]
},
{
"ratingKey": "epg://3",
"ratingKey": "5f3",
"key": "/tv.plex.providers.epg.cloud:2/metadata/plex%3A%2F%2Fshow%2Fxyz",
"title": "Sport aktuell",
"beginsAt": 1757682000,
"endsAt": 1757685600,
"Media": [
{
"channelIdentifier": "6228f7f2364e02fa5ec8e51c-12",
"channelCallSign": "SRF2",
"channelVcn": "2",
"Part": [{ "key": "/livetv/channels/12" }]
"channelID": 12,
"channelIdentifier": "6228f7f2364e02fa5ec8e51c-12",
"channelVcn": "002"
}
]
}