Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ea569b480d |
@@ -46,14 +46,14 @@ readonly class DownloadSeasonHandler implements HandlerInterface
|
|||||||
|
|
||||||
$downloadCommands = [];
|
$downloadCommands = [];
|
||||||
foreach ($episodesInSeason as $episode) {
|
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(
|
$results = $this->getTvShowOptionsHandler->handle(
|
||||||
new GetTvShowOptionsCommand(
|
new GetTvShowOptionsCommand(
|
||||||
$series->tmdbId,
|
$series->tmdbId,
|
||||||
$command->imdbId,
|
$command->imdbId,
|
||||||
$command->season,
|
$command->season,
|
||||||
$episode['episode_number']
|
$episode->episodeNumber
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -67,7 +67,7 @@ readonly class DownloadSeasonHandler implements HandlerInterface
|
|||||||
|
|
||||||
if (null !== $result) {
|
if (null !== $result) {
|
||||||
$this->logger->info('> [DownloadTvSeasonHandler] ......Found 1 matching 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(
|
$downloadCommand = new DownloadMediaCommand(
|
||||||
$result->url,
|
$result->url,
|
||||||
$series->title,
|
$series->title,
|
||||||
@@ -99,10 +99,10 @@ readonly class DownloadSeasonHandler implements HandlerInterface
|
|||||||
->filter(fn ($episode) =>
|
->filter(fn ($episode) =>
|
||||||
property_exists($episode, 'episode')
|
property_exists($episode, 'episode')
|
||||||
&& property_exists($episode, 'season')
|
&& property_exists($episode, 'season')
|
||||||
&& null !== $episode->episode
|
&& null !== $episode->episodeNumber
|
||||||
&& null !== $episode->season
|
&& 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());
|
$this->logger->info('> [MonitorTvSeasonHandler] Found ' . count($downloadedEpisodes) . ' downloaded episodes for title: ' . $monitor->getTitle());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
59
src/Download/Action/Handler/MonitorHandlerTrait.php
Normal file
59
src/Download/Action/Handler/MonitorHandlerTrait.php
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Download\Action\Handler;
|
||||||
|
|
||||||
|
use Aimeos\Map;
|
||||||
|
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;
|
||||||
|
use Psr\Log\LoggerInterface;
|
||||||
|
|
||||||
|
trait MonitorHandlerTrait
|
||||||
|
{
|
||||||
|
private MonitorRepository $monitorRepository;
|
||||||
|
private LoggerInterface $logger;
|
||||||
|
private TmdbClient $tmdb;
|
||||||
|
|
||||||
|
private function episodeReleasedAfterMonitorCreated(
|
||||||
|
string|DateTimeImmutable $monitorStartDate,
|
||||||
|
TmdbEpisodeDto $episodeInShow
|
||||||
|
): bool {
|
||||||
|
$monitorStartDate = Carbon::parse($monitorStartDate)->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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user