181 lines
3.6 KiB
PHP
181 lines
3.6 KiB
PHP
<?php
|
|
|
|
namespace App\Download\Framework\Entity;
|
|
|
|
use App\Download\Framework\Repository\DownloadRepository;
|
|
use App\Torrentio\Result\ResultFactory;
|
|
use App\Torrentio\Result\TorrentioResult;
|
|
use App\User\Framework\Entity\User;
|
|
use Doctrine\ORM\Mapping as ORM;
|
|
use Nihilarr\PTN;
|
|
use Symfony\UX\Turbo\Attribute\Broadcast;
|
|
|
|
#[ORM\Entity(repositoryClass: DownloadRepository::class)]
|
|
#[Broadcast(template: 'broadcast/Download.stream.html.twig')]
|
|
class Download
|
|
{
|
|
#[ORM\Id]
|
|
#[ORM\GeneratedValue]
|
|
#[ORM\Column]
|
|
private ?int $id = null;
|
|
|
|
#[ORM\Column(length: 20, nullable: true)]
|
|
private ?string $imdbId = null;
|
|
|
|
#[ORM\Column(length: 255, nullable: true)]
|
|
private ?string $mediaType = null;
|
|
|
|
#[ORM\Column(length: 255, nullable: true)]
|
|
private ?string $title = null;
|
|
|
|
#[ORM\Column(length: 1024)]
|
|
private ?string $url = null;
|
|
|
|
#[ORM\Column(length: 1024, nullable: true)]
|
|
private ?string $filename = null;
|
|
|
|
#[ORM\Column(length: 255, nullable: true)]
|
|
private ?string $status = null;
|
|
|
|
#[ORM\Column(nullable: true)]
|
|
private ?int $progress = null;
|
|
|
|
#[ORM\Column(length: 255, nullable: true)]
|
|
private ?string $batchId = null;
|
|
|
|
#[ORM\ManyToOne(inversedBy: 'downloads')]
|
|
private ?User $user = null;
|
|
|
|
public function getId(): ?int
|
|
{
|
|
return $this->id;
|
|
}
|
|
|
|
public function setId(int $id): static
|
|
{
|
|
$this->id = $id;
|
|
|
|
return $this;
|
|
}
|
|
|
|
public function getImdbId(): ?string
|
|
{
|
|
return $this->imdbId;
|
|
}
|
|
|
|
public function setImdbId(?string $imdbId): static
|
|
{
|
|
$this->imdbId = $imdbId;
|
|
|
|
return $this;
|
|
}
|
|
|
|
public function getMediaType(): ?string
|
|
{
|
|
return $this->mediaType;
|
|
}
|
|
|
|
public function setMediaType(?string $mediaType): static
|
|
{
|
|
$this->mediaType = $mediaType;
|
|
|
|
return $this;
|
|
}
|
|
|
|
public function getTitle(): ?string
|
|
{
|
|
return $this->title;
|
|
}
|
|
|
|
public function setTitle(?string $title): static
|
|
{
|
|
$this->title = $title;
|
|
|
|
return $this;
|
|
}
|
|
|
|
public function getUrl(): ?string
|
|
{
|
|
return $this->url;
|
|
}
|
|
|
|
public function setUrl(string $url): static
|
|
{
|
|
$this->url = $url;
|
|
|
|
return $this;
|
|
}
|
|
|
|
public function getFilename(): ?string
|
|
{
|
|
return $this->filename;
|
|
}
|
|
|
|
public function setFilename(?string $filename): static
|
|
{
|
|
$this->filename = $filename;
|
|
|
|
return $this;
|
|
}
|
|
|
|
public function getStatus(): ?string
|
|
{
|
|
return $this->status;
|
|
}
|
|
|
|
public function setStatus(?string $status): static
|
|
{
|
|
$this->status = $status;
|
|
|
|
return $this;
|
|
}
|
|
|
|
public function getProgress(): ?int
|
|
{
|
|
return $this->progress;
|
|
}
|
|
|
|
public function setProgress(?int $progress): static
|
|
{
|
|
$this->progress = $progress;
|
|
|
|
return $this;
|
|
}
|
|
|
|
public function getBatchId(): ?string
|
|
{
|
|
return $this->batchId;
|
|
}
|
|
|
|
public function setBatchId(?string $batchId): static
|
|
{
|
|
$this->batchId = $batchId;
|
|
|
|
return $this;
|
|
}
|
|
|
|
public function getUser(): ?User
|
|
{
|
|
return $this->user;
|
|
}
|
|
|
|
public function setUser(?User $user): static
|
|
{
|
|
$this->user = $user;
|
|
|
|
return $this;
|
|
}
|
|
|
|
public function getPtn(): object
|
|
{
|
|
$ptn = (object) (new PTN())->parse($this->filename);
|
|
|
|
if ($this->mediaType === "tvshows") {
|
|
$ptn->season = str_pad($ptn->season, 2, "0", STR_PAD_LEFT);
|
|
$ptn->episode = str_pad($ptn->episode, 2, "0", STR_PAD_LEFT);
|
|
}
|
|
|
|
return $ptn;
|
|
}
|
|
}
|