Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9e2c5410ba | ||
|
|
4087543e78 |
@@ -11,6 +11,7 @@ use App\Monitor\Framework\Entity\Monitor;
|
|||||||
use App\Monitor\Framework\Repository\MonitorRepository;
|
use App\Monitor\Framework\Repository\MonitorRepository;
|
||||||
use App\Tmdb\Dto\TmdbEpisodeDto;
|
use App\Tmdb\Dto\TmdbEpisodeDto;
|
||||||
use App\Tmdb\TmdbClient;
|
use App\Tmdb\TmdbClient;
|
||||||
|
use App\Tmdb\TmdbResult;
|
||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
use DateTimeImmutable;
|
use DateTimeImmutable;
|
||||||
use Doctrine\ORM\EntityManagerInterface;
|
use Doctrine\ORM\EntityManagerInterface;
|
||||||
@@ -36,18 +37,14 @@ readonly class MonitorTvShowHandler implements HandlerInterface
|
|||||||
public function handle(CommandInterface $command): ResultInterface
|
public function handle(CommandInterface $command): ResultInterface
|
||||||
{
|
{
|
||||||
$this->logger->info('> [MonitorTvShowHandler] Executing MonitorTvShowHandler');
|
$this->logger->info('> [MonitorTvShowHandler] Executing MonitorTvShowHandler');
|
||||||
|
|
||||||
$monitor = $this->monitorRepository->find($command->monitorId);
|
$monitor = $this->monitorRepository->find($command->monitorId);
|
||||||
$this->refreshData($monitor);
|
$showTmdbData = $this->tmdb->tvshowDetails($monitor->getImdbId());
|
||||||
|
|
||||||
|
$this->refreshData($monitor, $showTmdbData);
|
||||||
|
|
||||||
// Check current episodes
|
// Check current episodes
|
||||||
$downloadedEpisodes = $this->mediaFiles
|
$downloadedEpisodes = $this->getDownloadedEpisodes($monitor->getTitle(), $showTmdbData);
|
||||||
->getEpisodes($monitor->getTitle())
|
|
||||||
->map(fn($episode) => (object)(new PTN())->parse($episode))
|
|
||||||
->filter(fn($episode) => property_exists($episode, 'episode')
|
|
||||||
&& property_exists($episode, 'season')
|
|
||||||
&& null !== $episode->episode
|
|
||||||
&& null !== $episode->season
|
|
||||||
);
|
|
||||||
|
|
||||||
$this->logger->info('> [MonitorTvShowHandler] Found ' . count($downloadedEpisodes) . ' downloaded episodes for title: ' . $monitor->getTitle());
|
$this->logger->info('> [MonitorTvShowHandler] Found ' . count($downloadedEpisodes) . ' downloaded episodes for title: ' . $monitor->getTitle());
|
||||||
|
|
||||||
@@ -130,6 +127,33 @@ readonly class MonitorTvShowHandler implements HandlerInterface
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function getDownloadedEpisodes(string $title, TmdbResult $showTmdbData): Map
|
||||||
|
{
|
||||||
|
// Episodes in folder w/o the year
|
||||||
|
$downloadedEpisodes = $this->mediaFiles
|
||||||
|
->getEpisodes($title)
|
||||||
|
->map(fn($episode) => (object) new PTN()->parse($episode))
|
||||||
|
->filter(fn($episode) =>
|
||||||
|
property_exists($episode, 'episode')
|
||||||
|
&& property_exists($episode, 'season')
|
||||||
|
&& null !== $episode->episode
|
||||||
|
&& null !== $episode->season
|
||||||
|
);
|
||||||
|
|
||||||
|
return $downloadedEpisodes->concat(
|
||||||
|
// Episodes in folder w/ the year
|
||||||
|
$this->mediaFiles
|
||||||
|
->getEpisodes(sprintf("%s (%s)", $title, $showTmdbData->year))
|
||||||
|
->map(fn($episode) => (object) new PTN()->parse($episode))
|
||||||
|
->filter(fn($episode) =>
|
||||||
|
property_exists($episode, 'episode')
|
||||||
|
&& property_exists($episode, 'season')
|
||||||
|
&& null !== $episode->episode
|
||||||
|
&& null !== $episode->season
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
private function episodeReleasedAfterMonitorCreated(
|
private function episodeReleasedAfterMonitorCreated(
|
||||||
string|DateTimeImmutable $monitorStartDate,
|
string|DateTimeImmutable $monitorStartDate,
|
||||||
TmdbEpisodeDto $episodeInShow
|
TmdbEpisodeDto $episodeInShow
|
||||||
@@ -159,11 +183,11 @@ readonly class MonitorTvShowHandler implements HandlerInterface
|
|||||||
]) !== null;
|
]) !== null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private function refreshData(Monitor $monitor)
|
private function refreshData(Monitor $monitor, TmdbResult $showTmdbData)
|
||||||
{
|
{
|
||||||
if (null === $monitor->getPoster()) {
|
if (null === $monitor->getPoster()) {
|
||||||
$this->logger->info('> [MonitorTvShowHandler] Refreshing poster for "' . $monitor->getTitle() . '"');
|
$this->logger->info('> [MonitorTvShowHandler] Refreshing poster for "' . $monitor->getTitle() . '"');
|
||||||
$poster = $this->tmdb->tvshowDetails($monitor->getImdbId())->poster;
|
$poster = $showTmdbData->poster;
|
||||||
if (null !== $poster && "" !== $poster) {
|
if (null !== $poster && "" !== $poster) {
|
||||||
$monitor->setPoster($poster);
|
$monitor->setPoster($poster);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user