[ 'name' => 'Serien-ID', 'type' => 'text', 'title' => 'ID der Serie (z.B. pokemon-horizonte-die-serie-vse292)', 'required' => true ] ] ]; public function collectData() { $series_id = $this->getInput('series_id'); if (empty($series_id)) { return; } $url = 'https://production-n.toggo.de/api/assetstore/vod/asset/' . $series_id . '?filter=rootParentTypes[not|hidden]&availableAs=fvod,catchup'; $json = getContents($url); $data = json_decode($json, true); if (!$data || !isset($data['data']['episodes'])) { return; } $episodes = $data['data']['episodes']; // Sortiere nach Startdatum absteigend (neueste zuerst) usort($episodes, function($a, $b) { return ($b['earliest_start_date'] ?? 0) <=> ($a['earliest_start_date'] ?? 0); }); foreach ($episodes as $episode) { $series_title = $episode['series_title'] ?? ''; $season_no = $episode['season_no'] ?? ''; $episode_no = $episode['episode_no'] ?? ''; $title = $episode['title'] ?? ''; $desc = $episode['description'] ?? ''; $img = $episode['images']['Thumbnail'] ?? ''; $date = $episode['earliest_start_date'] ?? null; $u_name = $episode['u_name'] ?? ''; $series_uname = $episode['series_uname'] ?? $series_id; $forwardWorld = $episode['forwardWorld'] ?? ($episode['characters'][0]['forwardWorld'] ?? null); $item = []; $item['title'] = sprintf('%s S%02dE%02d %s', $series_title, $season_no, $episode_no, $title); $item['content'] = '
' . htmlspecialchars($desc) . '
'; if ($img) { $item['content'] .= '