has('rawData') || !count($properties->get('rawData'))) { return $properties; } $data = []; foreach ($properties->get('rawData') as $watch) { $showTmdb = $watch['showTmdb']; $season = $watch['season']; $episode = $watch['episode']; $watched = $watch['watched']; if (!array_key_exists($showTmdb, $data)) { $data[$showTmdb] = []; $data[$showTmdb]['ids'] = ['tmdb' => $showTmdb]; $data[$showTmdb]['seasons'] = []; } if (!array_key_exists($season, $data[$showTmdb]['seasons'])) { $data[$showTmdb]['seasons'][$season] = []; $data[$showTmdb]['seasons'][$season]['number'] = $season; $data[$showTmdb]['seasons'][$season]['episodes'] = []; } $data[$showTmdb]['seasons'][$season]['episodes'][] = [ 'number' => $episode, 'watched_at' => $watched, ]; } $flat = []; foreach ($data as $show) { $show['seasons'] = array_values($show['seasons']); $flat[] = $show; } $properties['structuredData'] = ['shows' => $flat]; return $properties; } }