fix: prepends episode/season number to filename if doesn't exist. should fix monitors repeatedly downloading episodes
This commit is contained in:
@@ -26,6 +26,9 @@ class DownloadMediaInput implements InputInterface
|
||||
#[SourceRequest('imdbId')]
|
||||
public string $imdbId,
|
||||
|
||||
#[SourceRequest('episodeId', nullify: true)]
|
||||
public ?string $episodeId = null,
|
||||
|
||||
public ?int $userId = null,
|
||||
|
||||
public ?int $downloadId = null,
|
||||
|
||||
@@ -11,6 +11,7 @@ use App\Download\Action\Input\PauseDownloadInput;
|
||||
use App\Download\Action\Input\ResumeDownloadInput;
|
||||
use App\Download\Framework\Repository\DownloadRepository;
|
||||
use App\Util\Broadcaster;
|
||||
use Nihilarr\PTN;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\Messenger\MessageBusInterface;
|
||||
@@ -28,6 +29,13 @@ class ApiController extends AbstractController
|
||||
public function download(
|
||||
DownloadMediaInput $input,
|
||||
): Response {
|
||||
$ptn = (object) new Ptn()->parse($input->filename);
|
||||
if ($input->mediaType === "tvshows" &&
|
||||
!property_exists($ptn, 'episode') && !property_exists($ptn, 'season')
|
||||
) {
|
||||
$input->filename = $input->episodeId . '_' . $input->filename;
|
||||
}
|
||||
|
||||
$download = $this->downloadRepository->insert(
|
||||
$this->getUser(),
|
||||
$input->url,
|
||||
|
||||
@@ -4,7 +4,10 @@ namespace App\Twig\Extensions;
|
||||
|
||||
use App\Monitor\Framework\Entity\Monitor;
|
||||
use App\Monitor\Service\MediaFiles;
|
||||
use App\Torrentio\Action\Result\GetTvShowOptionsResult;
|
||||
use App\Torrentio\Result\TorrentioResult;
|
||||
use ChrisUllyott\FileSize;
|
||||
use Tmdb\Model\Tv\Episode;
|
||||
use Twig\Attribute\AsTwigFilter;
|
||||
use Twig\Attribute\AsTwigFunction;
|
||||
|
||||
@@ -45,4 +48,15 @@ class UtilExtension
|
||||
$path
|
||||
);
|
||||
}
|
||||
|
||||
#[AsTwigFilter('episode_id_from_results')]
|
||||
public function episodeId($result): ?string
|
||||
{
|
||||
if (!$result instanceof GetTvShowOptionsResult) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return "S". str_pad($result->season, 2, "0", STR_PAD_LEFT) .
|
||||
"E". str_pad($result->episode, 2, "0", STR_PAD_LEFT);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user