Import films

This commit is contained in:
Dan Jones 2023-10-08 23:30:41 -05:00
commit bc3a42b501

View file

@ -1,7 +1,10 @@
<?php <?php
declare(strict_types=1);
namespace App\Data\DataPipes; namespace App\Data\DataPipes;
use App\Data\Enums\Type;
use App\Data\FileData; use App\Data\FileData;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
use Spatie\LaravelData\DataPipes\DataPipe; use Spatie\LaravelData\DataPipes\DataPipe;
@ -20,27 +23,16 @@ class StructureData implements DataPipe
} }
$data = []; $data = [];
$films = [];
foreach ($properties->get('rawData') as $watch) { foreach ($properties->get('rawData') as $watch) {
$showTmdb = $watch['showTmdb']; switch ($watch['type']) {
$season = $watch['season']; case (Type::Episode->value):
$episode = $watch['episode']; $data = $this->getEp($data, $watch);
$watched = $watch['watched']; break;
if (!array_key_exists($showTmdb, $data)) { case (Type::Movie->value):
$data[$showTmdb] = []; $films[] = $this->getFilm($watch);
$data[$showTmdb]['ids'] = ['tmdb' => $showTmdb]; break;
$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 = []; $flat = [];
@ -48,8 +40,51 @@ class StructureData implements DataPipe
$show['seasons'] = array_values($show['seasons']); $show['seasons'] = array_values($show['seasons']);
$flat[] = $show; $flat[] = $show;
} }
$properties['structuredData'] = ['shows' => $flat]; $properties['structuredData'] = ['shows' => $flat, 'movies' => $films];
return $properties; 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,
],
];
}
} }