fix: prepends episode id to tvshow files that don't include it

This commit is contained in:
2025-07-09 11:47:20 -05:00
parent 5729949774
commit dd52a903f6
6 changed files with 53 additions and 21 deletions

View File

@@ -32,13 +32,6 @@ 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,
@@ -46,10 +39,8 @@ class ApiController extends AbstractController
$input->filename,
$input->imdbId,
$input->mediaType,
"",
$input->episodeId,
);
$this->downloadRepository->getEntityManager()->persist($download);
$this->downloadRepository->getEntityManager()->flush();
$input->downloadId = $download->getId();
$input->userId = $this->getUser()->getId();

View File

@@ -42,7 +42,7 @@ class Download
private ?int $progress = null;
#[ORM\Column(length: 255, nullable: true)]
private ?string $batchId = null;
private ?string $episodeId = null;
#[ORM\ManyToOne(inversedBy: 'downloads')]
private ?User $user = null;
@@ -143,14 +143,14 @@ class Download
return $this;
}
public function getBatchId(): ?string
public function getEpisodeId(): ?string
{
return $this->batchId;
return $this->episodeId;
}
public function setBatchId(?string $batchId): static
public function setEpisodeId(?string $episodeId): static
{
$this->batchId = $batchId;
$this->episodeId = $episodeId;
return $this;
}

View File

@@ -7,6 +7,7 @@ use App\Download\Framework\Entity\Download;
use App\User\Framework\Entity\User;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\Persistence\ManagerRegistry;
use Nihilarr\PTN;
use Symfony\Component\Security\Core\User\UserInterface;
/**
@@ -62,9 +63,15 @@ class DownloadRepository extends ServiceEntityRepository
string $filename,
string $imdbId,
string $mediaType,
string $batchId,
?string $episodeId = null,
string $status = 'New'
): Download {
$ptn = (object) new Ptn()->parse($filename);
if ($mediaType === "tvshows" &&
!property_exists($ptn, 'episode') && !property_exists($ptn, 'season')
) {
$filename = $episodeId . '_' . $filename;
}
/** @var User $user */
$download = (new Download())
->setUser($user)
@@ -73,7 +80,7 @@ class DownloadRepository extends ServiceEntityRepository
->setFilename($filename)
->setImdbId($imdbId)
->setMediaType($mediaType)
->setBatchId($batchId)
->setEpisodeId($episodeId)
->setProgress(0)
->setStatus($status);