Die Oberfläche weiß nicht mehr, dass es Plex gibt
Keine Datei unter Views/LiveTV importiert noch PlexKit. Sender, Programm und Einschalten laufen über den neutralen Vertrag, und supportsLiveTV fragt endlich die Fähigkeit ab statt "server != nil" — womit die Zusage in JellyfinBackend.capabilities zum ersten Mal stimmt. Der Player holt die laufende Sendung jetzt für genau einen Sender nach. Vorher ging dafür das Raster über alle Sender hinaus, weil der Plex-Weg keinen schmaleren kannte; im neutralen Vertrag ist die Senderliste ein Parameter. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
24765a5afc
commit
eebe9280cb
@@ -122,8 +122,10 @@ final class PlayerModel {
|
||||
/// Programmführer und Tuner sind das Einzige, was hier noch unmittelbar
|
||||
/// mit Plex spricht. Ein Tuner ist ein Stück Hardware, und die fünfhundert
|
||||
/// Zeilen, die es gekostet hat, ihn zu bändigen, gehören in keinen
|
||||
/// gemeinsamen Vertrag. Bei Jellyfin ist er `nil`.
|
||||
private let liveTV: PlexServer?
|
||||
/// gemeinsamen Vertrag — wohl aber in einen **eigenen**. Seit es den
|
||||
/// gibt, steht hier kein Plex-Server mehr, sondern wer auch immer
|
||||
/// Live-TV kann.
|
||||
private let liveTV: (any LiveTVBackend)?
|
||||
private let downloads: DownloadCoordinator
|
||||
private let diagnostics: PlaybackDiagnostics
|
||||
private let policy: PlaybackPolicy
|
||||
@@ -173,7 +175,7 @@ final class PlayerModel {
|
||||
init(
|
||||
request: PlaybackRequest,
|
||||
backend: (any MediaBackend)?,
|
||||
liveTV: PlexServer?,
|
||||
liveTV: (any LiveTVBackend)?,
|
||||
downloads: DownloadCoordinator,
|
||||
diagnostics: PlaybackDiagnostics,
|
||||
policy: PlaybackPolicy,
|
||||
@@ -498,27 +500,27 @@ final class PlayerModel {
|
||||
/// wirklich abgelaufen ist — das Raster über alle Sender zu holen ist
|
||||
/// nichts, was man bei jedem Antippen tun will.
|
||||
func refreshLiveProgrammeIfNeeded() async {
|
||||
guard isLive, let server = liveTV else { return }
|
||||
guard isLive, let liveTV else { return }
|
||||
if let programmeEndsAt, programmeEndsAt > .now { return }
|
||||
|
||||
guard let provider = await server.electronicProgramGuideIdentifier() else { return }
|
||||
let now = Date()
|
||||
let entries = (try? await server.guide(
|
||||
providerIdentifier: provider,
|
||||
// Nur dieser eine Sender. Vorher ging hier das Raster über **alle**
|
||||
// Sender hinaus, weil der Plex-Weg keinen schmaleren kannte — beim
|
||||
// neutralen Vertrag ist die Senderliste ein Parameter.
|
||||
let programs = (try? await liveTV.livePrograms(
|
||||
channelIDs: [request.ratingKey],
|
||||
from: now,
|
||||
to: now.addingTimeInterval(2 * 3_600)
|
||||
)) ?? []
|
||||
)) ?? [:]
|
||||
|
||||
guard let match = entries.first(where: {
|
||||
$0.channel?.id == request.ratingKey && $0.program.isRunning()
|
||||
}) else {
|
||||
guard let match = programs[request.ratingKey]?.first(where: { $0.isRunning() }) else {
|
||||
// Lieber gar nichts als etwas Falsches.
|
||||
subtitle = nil
|
||||
return
|
||||
}
|
||||
|
||||
subtitle = match.program.title
|
||||
programmeEndsAt = match.program.endsAt
|
||||
subtitle = match.title
|
||||
programmeEndsAt = match.endsAt
|
||||
}
|
||||
|
||||
func togglePlayPause() {
|
||||
|
||||
Reference in New Issue
Block a user