diff --git a/src/Monitor/Action/Handler/MonitorTvEpisodeHandler.php b/src/Monitor/Action/Handler/MonitorTvEpisodeHandler.php index d1e9ed9..e139164 100644 --- a/src/Monitor/Action/Handler/MonitorTvEpisodeHandler.php +++ b/src/Monitor/Action/Handler/MonitorTvEpisodeHandler.php @@ -42,7 +42,7 @@ readonly class MonitorTvEpisodeHandler implements HandlerInterface $monitor = $this->monitorRepository->find($command->movieMonitorId); $this->logger->info('> [MonitorTvEpisodeHandler] Executing MonitorTvEpisodeHandler for ' . $monitor->getTitle() . ' season ' . $monitor->getSeason() . ' episode ' . $monitor->getEpisode()); - $episodeData = $this->tmdb->episodeDetails($monitor->getTmdbId(), $monitor->getSeason(), $monitor->getEpisode()); + $episodeData = $this->tmdb->tvEpisodeDetails($monitor->getTmdbId(), $monitor->getSeason(), $monitor->getEpisode()); if (null === $monitor->getAirDate() && null !== $episodeData->episodeAirDate && "" !== $episodeData->episodeAirDate) { $monitor->setAirDate(Carbon::parse($episodeData->episodeAirDate)); diff --git a/src/Monitor/Action/Handler/MonitorTvShowHandler.php b/src/Monitor/Action/Handler/MonitorTvShowHandler.php index 3263597..17e14f1 100644 --- a/src/Monitor/Action/Handler/MonitorTvShowHandler.php +++ b/src/Monitor/Action/Handler/MonitorTvShowHandler.php @@ -9,6 +9,7 @@ use App\Monitor\Action\Command\MonitorTvEpisodeCommand; use App\Monitor\Action\Result\MonitorTvShowResult; use App\Monitor\Framework\Entity\Monitor; use App\Monitor\Framework\Repository\MonitorRepository; +use App\Tmdb\Dto\TmdbEpisodeDto; use App\Tmdb\TmdbClient; use Carbon\Carbon; use DateTimeImmutable; @@ -61,8 +62,9 @@ readonly class MonitorTvShowHandler implements HandlerInterface if ($downloadedEpisodes->count() !== $episodesInShow->count()) { // Dispatch Episode commands for each missing Episode foreach ($episodesInShow as $episode) { + /** @var TmdbEpisodeDto $episode */ // Only monitor future episodes - $this->logger->info('> [MonitorTvShowHandler] Evaluating "' . $monitor->getTitle() . '", season "' . $episode['season_number'] . '" episode "' . $episode['episode_number'] . '"'); + $this->logger->info('> [MonitorTvShowHandler] Evaluating "' . $monitor->getTitle() . '", season "' . $episode->seasonNumber . '" episode "' . $episode->episodeNumber . '"'); $episodeInFuture = $this->episodeReleasedAfterMonitorCreated($monitor->getCreatedAt(), $episode); $this->logger->info('> [MonitorTvShowHandler] ...Released after monitor started? ' . (true === $episodeInFuture ? 'YES' : 'NO')); if (false === $episodeInFuture) { @@ -94,9 +96,9 @@ readonly class MonitorTvShowHandler implements HandlerInterface ->setImdbId($monitor->getImdbId()) ->setTitle($monitor->getTitle()) ->setMonitorType('tvepisode') - ->setSeason($episode['season_number']) - ->setEpisode($episode['episode_number']) - ->setAirDate($episode['air_date'] !== null && $episode['air_date'] !== "" ? Carbon::parse($episode['air_date']) : null) + ->setSeason($episode->seasonNumber) + ->setEpisode($episode->episodeNumber) + ->setAirDate($episode->airDate !== null && $episode->airDate !== "" ? Carbon::parse($episode->airDate) : null) ->setCreatedAt(new DateTimeImmutable()) ->setSearchCount(0) ->setStatus('New'); @@ -128,29 +130,29 @@ readonly class MonitorTvShowHandler implements HandlerInterface ); } - private function episodeReleasedAfterMonitorCreated(string|DateTimeImmutable $monitorStartDate, array $episodeInShow): bool + private function episodeReleasedAfterMonitorCreated(string|DateTimeImmutable $monitorStartDate, TmdbEpisodeDto $episodeInShow): bool { $monitorStartDate = Carbon::parse($monitorStartDate)->setTime(0, 0); - $episodeAirDate = Carbon::parse($episodeInShow['air_date']); + $episodeAirDate = Carbon::parse($episodeInShow->airDate); return $episodeAirDate >= $monitorStartDate; } - private function episodeExists(array $episodeInShow, Map $downloadedEpisodes): bool + private function episodeExists(TmdbEpisodeDto $episodeInShow, Map $downloadedEpisodes): bool { return $downloadedEpisodes->filter( - fn (object $episode) => $episode->episode === $episodeInShow['episode_number'] - && $episode->season === $episodeInShow['season_number'] + fn (object $episode) => $episode->episode === $episodeInShow->episodeNumber + && $episode->season === $episodeInShow->seasonNumber )->count() > 0; } - private function monitorExists(Monitor $monitor, array $episode): bool + private function monitorExists(Monitor $monitor, TmdbEpisodeDto $episode): bool { return $this->monitorRepository->findOneBy([ 'imdbId' => $monitor->getImdbId(), 'title' => $monitor->getTitle(), 'monitorType' => 'tvepisode', - 'season' => $episode['season_number'], - 'episode' => $episode['episode_number'], + 'season' => $episode->seasonNumber, + 'episode' => $episode->episodeNumber, 'status' => ['New', 'Active', 'In Progress'] ]) !== null; }