1
0

Joyn: Bevorzuge kostenlose Folgen & füge Serierntitel zur Überschrift hinzu

This commit is contained in:
Akamaru
2025-07-15 12:41:52 +02:00
parent 576a5c1503
commit 218fc86875

View File

@@ -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'] = '<p>Neue Folge verfügbar';
if ($isPlus) {
$item['content'] .= ' <span style="color:red;font-weight:bold">Joyn PLUS+ (Abo benötigt)</span>';