From bc3a42b5019142594499b45fc8ac34fab9c7c63d Mon Sep 17 00:00:00 2001 From: Dan Jones Date: Sun, 8 Oct 2023 23:30:41 -0500 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20Import=20films?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Data/DataPipes/StructureData.php | 75 ++++++++++++++++++++-------- 1 file changed, 55 insertions(+), 20 deletions(-) diff --git a/app/Data/DataPipes/StructureData.php b/app/Data/DataPipes/StructureData.php index 565d87e..37ce734 100644 --- a/app/Data/DataPipes/StructureData.php +++ b/app/Data/DataPipes/StructureData.php @@ -1,7 +1,10 @@ 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'] = []; + switch ($watch['type']) { + case (Type::Episode->value): + $data = $this->getEp($data, $watch); + break; + case (Type::Movie->value): + $films[] = $this->getFilm($watch); + break; } - - 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 = []; @@ -48,8 +40,51 @@ class StructureData implements DataPipe $show['seasons'] = array_values($show['seasons']); $flat[] = $show; } - $properties['structuredData'] = ['shows' => $flat]; + $properties['structuredData'] = ['shows' => $flat, 'movies' => $films]; return $properties; } + + protected function getEp(array $data, array $watch): array + { + $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, + ]; + + return $data; + } + + protected function getFilm(array $watch): array + { + $filmTmdb = $watch['movieTmdb']; + $filmYear = $watch['movieYear']; + $title = $watch['showTitle']; + $watched = $watch['watched']; + + return [ + 'watched_at' => $watched, + 'title' => $title, + 'year' => $filmYear, + 'ids' => [ + 'tmdb' => $filmTmdb, + ], + ]; + } }