Compare commits
1 Commits
v0.18.20
...
9714cf1749
| Author | SHA1 | Date | |
|---|---|---|---|
| 9714cf1749 |
@@ -12,7 +12,6 @@ export default class extends Controller {
|
|||||||
filename: String,
|
filename: String,
|
||||||
mediaType: String,
|
mediaType: String,
|
||||||
imdbId: String,
|
imdbId: String,
|
||||||
episodeId: String
|
|
||||||
}
|
}
|
||||||
|
|
||||||
download() {
|
download() {
|
||||||
@@ -28,7 +27,6 @@ export default class extends Controller {
|
|||||||
filename: this.filenameValue,
|
filename: this.filenameValue,
|
||||||
mediaType: this.mediaTypeValue,
|
mediaType: this.mediaTypeValue,
|
||||||
imdbId: this.imdbIdValue,
|
imdbId: this.imdbIdValue,
|
||||||
episodeId: this.episodeIdValue
|
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
.then(res => res.json())
|
.then(res => res.json())
|
||||||
|
|||||||
@@ -26,9 +26,6 @@ class DownloadMediaInput implements InputInterface
|
|||||||
#[SourceRequest('imdbId')]
|
#[SourceRequest('imdbId')]
|
||||||
public string $imdbId,
|
public string $imdbId,
|
||||||
|
|
||||||
#[SourceRequest('episodeId', nullify: true)]
|
|
||||||
public ?string $episodeId = null,
|
|
||||||
|
|
||||||
public ?int $userId = null,
|
public ?int $userId = null,
|
||||||
|
|
||||||
public ?int $downloadId = null,
|
public ?int $downloadId = null,
|
||||||
|
|||||||
@@ -11,7 +11,6 @@ use App\Download\Action\Input\PauseDownloadInput;
|
|||||||
use App\Download\Action\Input\ResumeDownloadInput;
|
use App\Download\Action\Input\ResumeDownloadInput;
|
||||||
use App\Download\Framework\Repository\DownloadRepository;
|
use App\Download\Framework\Repository\DownloadRepository;
|
||||||
use App\Util\Broadcaster;
|
use App\Util\Broadcaster;
|
||||||
use Nihilarr\PTN;
|
|
||||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||||
use Symfony\Component\HttpFoundation\Response;
|
use Symfony\Component\HttpFoundation\Response;
|
||||||
use Symfony\Component\Messenger\MessageBusInterface;
|
use Symfony\Component\Messenger\MessageBusInterface;
|
||||||
@@ -29,13 +28,6 @@ class ApiController extends AbstractController
|
|||||||
public function download(
|
public function download(
|
||||||
DownloadMediaInput $input,
|
DownloadMediaInput $input,
|
||||||
): Response {
|
): 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(
|
$download = $this->downloadRepository->insert(
|
||||||
$this->getUser(),
|
$this->getUser(),
|
||||||
$input->url,
|
$input->url,
|
||||||
|
|||||||
@@ -4,10 +4,7 @@ namespace App\Twig\Extensions;
|
|||||||
|
|
||||||
use App\Monitor\Framework\Entity\Monitor;
|
use App\Monitor\Framework\Entity\Monitor;
|
||||||
use App\Monitor\Service\MediaFiles;
|
use App\Monitor\Service\MediaFiles;
|
||||||
use App\Torrentio\Action\Result\GetTvShowOptionsResult;
|
|
||||||
use App\Torrentio\Result\TorrentioResult;
|
|
||||||
use ChrisUllyott\FileSize;
|
use ChrisUllyott\FileSize;
|
||||||
use Tmdb\Model\Tv\Episode;
|
|
||||||
use Twig\Attribute\AsTwigFilter;
|
use Twig\Attribute\AsTwigFilter;
|
||||||
use Twig\Attribute\AsTwigFunction;
|
use Twig\Attribute\AsTwigFunction;
|
||||||
|
|
||||||
@@ -48,15 +45,4 @@ class UtilExtension
|
|||||||
$path
|
$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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,7 +19,12 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="col-span-5 h-screen overflow-y-scroll">
|
<div class="col-span-5 h-screen overflow-y-scroll">
|
||||||
<twig:Header />
|
<twig:Header />
|
||||||
<h2 class="px-4 my-2 text-3xl font-bold text-gray-50">{% block h2 %}{% endblock %}</h2>
|
<div class="px-4 mt-3 flex flex-row justify-between">
|
||||||
|
<h2 class="text-3xl font-bold text-gray-50">{% block h2 %}{% endblock %}</h2>
|
||||||
|
<div class="flex flex-row gap-1 align-end justify-end items-end">
|
||||||
|
{% block action_buttons %}{% endblock %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
{% block body %}{% endblock %}
|
{% block body %}{% endblock %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -15,5 +15,11 @@
|
|||||||
</twig:Card>
|
</twig:Card>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="p-2">
|
||||||
|
<twig:Card title="Upcoming Episodes" >
|
||||||
|
<twig:UpcomingEpisodes />
|
||||||
|
</twig:Card>
|
||||||
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@@ -34,7 +34,7 @@
|
|||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
{% for result in results.results %}
|
{% for result in results.results %}
|
||||||
<tr class="bg-white border-b dark:bg-slate-700 dark:border-gray-600 border-gray-200" data-provider="{{ result.provider }}" data-languages="{{ result.languages|json_encode }}" {% if "tvshows" == results.media.mediaType %} data-season="{{ results.season }}"{% endif %}>
|
<tr class="bg-white border-b dark:bg-slate-700 dark:border-gray-600 border-gray-200" data-provider="{{ result.provider }}" data-languages="{{ result.languages|json_encode }}" {% if "tvshows" == results.media.mediaType %} data-season="{{ results.season }} {% endif %}">
|
||||||
<td id="size" class="px-6 py-4 whitespace-nowrap text-sm font-medium text-gray-800 dark:text-gray-50">
|
<td id="size" class="px-6 py-4 whitespace-nowrap text-sm font-medium text-gray-800 dark:text-gray-50">
|
||||||
{{ result.size }}
|
{{ result.size }}
|
||||||
</td>
|
</td>
|
||||||
@@ -60,8 +60,7 @@
|
|||||||
title: results.media.title,
|
title: results.media.title,
|
||||||
filename: result.filename,
|
filename: result.filename,
|
||||||
mediaType: results.media.mediaType,
|
mediaType: results.media.mediaType,
|
||||||
imdbId: results.media.imdbId,
|
imdbId: results.media.imdbId
|
||||||
episodeId: results|episode_id_from_results
|
|
||||||
}) }}
|
}) }}
|
||||||
{{ stimulus_action('download_button', 'download', 'click') }}
|
{{ stimulus_action('download_button', 'download', 'click') }}
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -2,6 +2,14 @@
|
|||||||
{% block title %}Preferences{% endblock %}
|
{% block title %}Preferences{% endblock %}
|
||||||
{% block h2 %}Preferences{% endblock %}
|
{% block h2 %}Preferences{% endblock %}
|
||||||
|
|
||||||
|
{% block action_buttons %}
|
||||||
|
<button
|
||||||
|
class="px-1.5 py-1 my-2 text-white text-sm bg-blue-950 hover:bg-black/80 border-2 border-blue-500/90 rounded-md inline-block"
|
||||||
|
>
|
||||||
|
Clear Cache
|
||||||
|
</button>
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
{% block body %}
|
{% block body %}
|
||||||
<div class="p-4 flex flex-row gap-2">
|
<div class="p-4 flex flex-row gap-2">
|
||||||
<twig:Card title="Media Preferences" class="w-full">
|
<twig:Card title="Media Preferences" class="w-full">
|
||||||
|
|||||||
Reference in New Issue
Block a user