From 218fc868753bf5f21f3c121482f11da57f466d41 Mon Sep 17 00:00:00 2001 From: Akamaru Date: Tue, 15 Jul 2025 12:41:52 +0200 Subject: [PATCH] =?UTF-8?q?Joyn:=20Bevorzuge=20kostenlose=20Folgen=20&=20f?= =?UTF-8?q?=C3=BCge=20Serierntitel=20zur=20=C3=9Cberschrift=20hinzu?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- JoynBridge.php | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/JoynBridge.php b/JoynBridge.php index a8675a6..0c7d22e 100644 --- a/JoynBridge.php +++ b/JoynBridge.php @@ -46,6 +46,7 @@ class JoynBridge extends BridgeAbstract { } $episodeMap = []; + // Zuerst freeSeasons (werden bevorzugt) if (isset($series['freeSeasons'])) { foreach ($series['freeSeasons'] as $season) { if (isset($season['episodes'])) { @@ -57,15 +58,16 @@ class JoynBridge extends BridgeAbstract { } } } - // Joyn Plus (svodSeasons) ergänzen + // Dann svodSeasons, aber nur wenn die Episode noch nicht existiert if (isset($series['svodSeasons'])) { foreach ($series['svodSeasons'] as $season) { if (isset($season['episodes'])) { foreach ($season['episodes'] as $episode) { - $episode['seasonNumber'] = $season['number']; - $episode['__plus__'] = true; - // Überschreibe ggf. free-Episode mit PLUS-Version - $episodeMap[$episode['id']] = $episode; + if (!isset($episodeMap[$episode['id']])) { + $episode['seasonNumber'] = $season['number']; + $episode['__plus__'] = true; + $episodeMap[$episode['id']] = $episode; + } } } } @@ -79,6 +81,7 @@ class JoynBridge extends BridgeAbstract { } return ($b['number'] ?? 0) <=> ($a['number'] ?? 0); }); + $seriesTitle = $series['title'] ?? ''; foreach ($allEpisodes as $episode) { $seasonNumber = $episode['seasonNumber'] ?? 1; $episodeNumber = $episode['number'] ?? 1; @@ -88,7 +91,10 @@ class JoynBridge extends BridgeAbstract { $primaryImage = $episode['primaryImage']['url'] ?? ''; $isPlus = !empty($episode['__plus__']); $item = []; - $item['title'] = sprintf('%sS%02dE%02d "%s"', $isPlus ? '[Joyn PLUS+] ' : '', $seasonNumber, $episodeNumber, $title); + $seasonNum = str_pad($seasonNumber, 2, '0', STR_PAD_LEFT); + $epNum = str_pad($episodeNumber, 2, '0', STR_PAD_LEFT); + $epCode = 'S' . $seasonNum . 'E' . $epNum; + $item['title'] = sprintf('%s%s %s "%s"', $isPlus ? '[Joyn PLUS+] ' : '', $seriesTitle, $epCode, $title); $item['content'] = '

Neue Folge verfügbar'; if ($isPlus) { $item['content'] .= ' Joyn PLUS+ (Abo benötigt)';