diff --git a/src/Monitor/Service/MediaFiles.php b/src/Base/Service/MediaFiles.php
similarity index 99%
rename from src/Monitor/Service/MediaFiles.php
rename to src/Base/Service/MediaFiles.php
index 841ce06..c8bc847 100644
--- a/src/Monitor/Service/MediaFiles.php
+++ b/src/Base/Service/MediaFiles.php
@@ -1,6 +1,6 @@
getUser()->getUserPreferenceValues();
-
- foreach ($results as $result) {
- if (!in_array($userPreferences['language'], $result->languages)) {
- continue;
- }
-
- if ($result->resolution === $userPreferences['resolution']
- && $result->codec === $userPreferences['codec']
- ) {
- $bestMatches[] = $result;
- }
-
- if ($userPreferences['resolution'] === '2160p'
- && $userPreferences['codec'] === $result->codec
- && $result->resolution === '1080p'
- ) {
- $matches[] = $result;
- }
-
- if ($userPreferences['codec'] === 'h264'
- && $userPreferences['resolution'] === $result->resolution
- && $result->codec === 'h265'
- ) {
- $matches[] = $result;
- }
-
- if (($userPreferences['codec'] === null )
- && ($userPreferences['resolution'] === null )) {
- $matches[] = $result;
- }
- }
-
- $sizeMatches = [];
-
- foreach ($bestMatches as $result) {
- if (str_contains($result->size, 'GB')) {
- $size = (int) trim(str_replace('GB', '', $result->size)) * 1024;
- } else {
- $size = (int) trim(str_replace('MB', '', $result->size));
- }
-
- if ($size > $sizeLow && $size < $sizeHigh) {
- $sizeMatches[] = $result;
- }
- }
-
- if (!empty($sizeMatches)) {
- return Map::from($sizeMatches)->usort(fn($a, $b) => $a->seeders <=> $b->seeders)->last();
- }
-
- foreach ($matches as $result) {
- $size = 0;
- if (str_contains($result->size, 'GB')) {
- $size = (int) trim(str_replace('GB', '', $result->size)) * 1024;
- } else {
- $size = (int) trim(str_replace('MB', '', $result->size));
- }
-
- if ($size > $sizeLow && $size < $sizeHigh) {
- $sizeMatches[] = $result;
- }
- }
-
- if (!empty($sizeMatches)) {
- return Map::from($sizeMatches)->usort(fn($a, $b) => $a->seeders <=> $b->seeders)->last();
- }
-
- return null;
- }
-}
diff --git a/src/Search/Action/Handler/GetMediaInfoHandler.php b/src/Search/Action/Handler/GetMediaInfoHandler.php
index 24ae107..85bf597 100644
--- a/src/Search/Action/Handler/GetMediaInfoHandler.php
+++ b/src/Search/Action/Handler/GetMediaInfoHandler.php
@@ -2,6 +2,7 @@
namespace App\Search\Action\Handler;
+use App\Base\Service\MediaFiles;
use App\Search\Action\Command\GetMediaInfoCommand;
use App\Search\Action\Result\GetMediaInfoResult;
use App\Tmdb\Tmdb;
@@ -14,12 +15,17 @@ class GetMediaInfoHandler implements HandlerInterface
{
public function __construct(
private readonly Tmdb $tmdb,
+ private readonly MediaFiles $mediaFiles
) {}
public function handle(CommandInterface $command): ResultInterface
{
$media = $this->tmdb->mediaDetails($command->imdbId, $command->mediaType);
+ foreach ($media->episodes[$command->season] as $key => $episode) {
+ $media->episodes[$command->season][$key]['file'] = $this->mediaFiles->episodeExists($media->title, $command->season, $episode['episode_number']);
+ }
+
return new GetMediaInfoResult($media, $command->season);
}
}
diff --git a/src/Torrentio/Action/Handler/GetMovieOptionsHandler.php b/src/Torrentio/Action/Handler/GetMovieOptionsHandler.php
index 51b9398..cc69ef1 100644
--- a/src/Torrentio/Action/Handler/GetMovieOptionsHandler.php
+++ b/src/Torrentio/Action/Handler/GetMovieOptionsHandler.php
@@ -2,7 +2,7 @@
namespace App\Torrentio\Action\Handler;
-use App\Monitor\Service\MediaFiles;
+use App\Base\Service\MediaFiles;
use App\Tmdb\Tmdb;
use App\Torrentio\Action\Result\GetMovieOptionsResult;
use App\Torrentio\Client\Torrentio;
diff --git a/src/Torrentio/Action/Handler/GetTvShowOptionsHandler.php b/src/Torrentio/Action/Handler/GetTvShowOptionsHandler.php
index 1ef80a8..825d0e6 100644
--- a/src/Torrentio/Action/Handler/GetTvShowOptionsHandler.php
+++ b/src/Torrentio/Action/Handler/GetTvShowOptionsHandler.php
@@ -2,7 +2,7 @@
namespace App\Torrentio\Action\Handler;
-use App\Monitor\Service\MediaFiles;
+use App\Base\Service\MediaFiles;
use App\Tmdb\Tmdb;
use App\Torrentio\Action\Command\GetTvShowOptionsCommand;
use App\Torrentio\Action\Result\GetTvShowOptionsResult;
diff --git a/src/Twig/Extensions/UtilExtension.php b/src/Twig/Extensions/UtilExtension.php
index fe80928..436b67a 100644
--- a/src/Twig/Extensions/UtilExtension.php
+++ b/src/Twig/Extensions/UtilExtension.php
@@ -2,12 +2,9 @@
namespace App\Twig\Extensions;
-use App\Monitor\Framework\Entity\Monitor;
-use App\Monitor\Service\MediaFiles;
+use App\Base\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;
diff --git a/templates/components/TvEpisodeList.html.twig b/templates/components/TvEpisodeList.html.twig
index ecff6af..e58fde7 100644
--- a/templates/components/TvEpisodeList.html.twig
+++ b/templates/components/TvEpisodeList.html.twig
@@ -39,6 +39,31 @@
{{ episode['air_date']|date(null, 'UTC') }}
+
+ {% if episode['file'] != false %}
+
+
+ Existing file(s) for this episode:
+
+