diff --git a/src/Download/Action/Handler/DownloadSeasonHandler.php b/src/Download/Action/Handler/DownloadSeasonHandler.php index 7ca722b..0cb0fca 100644 --- a/src/Download/Action/Handler/DownloadSeasonHandler.php +++ b/src/Download/Action/Handler/DownloadSeasonHandler.php @@ -46,14 +46,14 @@ readonly class DownloadSeasonHandler implements HandlerInterface $downloadCommands = []; foreach ($episodesInSeason as $episode) { - $this->logger->info('> [DownloadTvSeasonHandler] ...Evaluating episode ' . $episode['episode_number']); + $this->logger->info('> [DownloadTvSeasonHandler] ...Evaluating episode ' . $episode->episodeNumber); $results = $this->getTvShowOptionsHandler->handle( new GetTvShowOptionsCommand( $series->tmdbId, $command->imdbId, $command->season, - $episode['episode_number'] + $episode->episodeNumber ) ); @@ -67,7 +67,7 @@ readonly class DownloadSeasonHandler implements HandlerInterface if (null !== $result) { $this->logger->info('> [DownloadTvSeasonHandler] ......Found 1 matching result'); - $this->logger->info('> [DownloadTvSeasonHandler] ......Dispatching DownloadMediaCommand for "' . $series->title . '" season ' . $command->season . ' episode ' . $episode['episode_number']); + $this->logger->info('> [DownloadTvSeasonHandler] ......Dispatching DownloadMediaCommand for "' . $series->title . '" season ' . $command->season . ' episode ' . $episode->episodeNumber); $downloadCommand = new DownloadMediaCommand( $result->url, $series->title, @@ -99,10 +99,10 @@ readonly class DownloadSeasonHandler implements HandlerInterface ->filter(fn ($episode) => property_exists($episode, 'episode') && property_exists($episode, 'season') - && null !== $episode->episode + && null !== $episode->episodeNumber && null !== $episode->season ) - ->rekey(fn($episode) => $episode->episode); + ->rekey(fn($episode) => $episode->episodeNumber); $this->logger->info('> [MonitorTvSeasonHandler] Found ' . count($downloadedEpisodes) . ' downloaded episodes for title: ' . $monitor->getTitle()); } } diff --git a/src/Download/Action/Handler/MonitorHandlerTrait.php b/src/Download/Action/Handler/MonitorHandlerTrait.php new file mode 100644 index 0000000..b291293 --- /dev/null +++ b/src/Download/Action/Handler/MonitorHandlerTrait.php @@ -0,0 +1,59 @@ +setTime(0, 0); + $episodeAirDate = Carbon::parse($episodeInShow->airDate); + return $episodeAirDate >= $monitorStartDate; + } + + private function episodeExists(TmdbEpisodeDto $episodeInShow, Map $downloadedEpisodes): bool + { + return $downloadedEpisodes->filter( + fn(object $episode) => $episode->episode === $episodeInShow->episodeNumber + && $episode->season === $episodeInShow->seasonNumber + )->count() > 0; + } + + private function monitorExists(Monitor $monitor, TmdbEpisodeDto $episode): bool + { + return $this->monitorRepository->findOneBy([ + 'imdbId' => $monitor->getImdbId(), + 'title' => $monitor->getTitle(), + 'monitorType' => 'tvepisode', + 'season' => $episode->seasonNumber, + 'episode' => $episode->episodeNumber, + 'status' => ['New', 'Active', 'In Progress'] + ]) !== null; + } + + private function refreshData(Monitor $monitor) + { + if (null === $monitor->getPoster()) { + $this->logger->info('> [MonitorTvShowHandler] Refreshing poster for "' . $monitor->getTitle() . '"'); + $poster = $this->tmdb->tvshowDetails($monitor->getImdbId())->poster; + if (null !== $poster && "" !== $poster) { + $monitor->setPoster($poster); + } + } + } +}