diff --git a/src/Search/Action/Handler/GetMediaInfoHandler.php b/src/Search/Action/Handler/GetMediaInfoHandler.php index 14a9e40..6ed0395 100644 --- a/src/Search/Action/Handler/GetMediaInfoHandler.php +++ b/src/Search/Action/Handler/GetMediaInfoHandler.php @@ -19,7 +19,8 @@ class GetMediaInfoHandler implements HandlerInterface public function handle(CommandInterface $command): ResultInterface { $media = $this->tmdb->mediaDetails($command->imdbId, $command->mediaType); + $relatedMedia = $this->tmdb->relatedMedia($media->tmdbId, $command->mediaType); - return new GetMediaInfoResult($media, $command->season, $command->episode); + return new GetMediaInfoResult($media, $relatedMedia, $command->season, $command->episode); } } diff --git a/src/Search/Action/Result/GetMediaInfoResult.php b/src/Search/Action/Result/GetMediaInfoResult.php index 02f505d..7004c0f 100644 --- a/src/Search/Action/Result/GetMediaInfoResult.php +++ b/src/Search/Action/Result/GetMediaInfoResult.php @@ -10,6 +10,7 @@ class GetMediaInfoResult implements ResultInterface { public function __construct( public TmdbResult $media, + public array $relatedMedia, public ?int $season, public ?int $episode, ) {} diff --git a/src/Search/Framework/Controller/WebController.php b/src/Search/Framework/Controller/WebController.php index 0b40471..b3c706e 100644 --- a/src/Search/Framework/Controller/WebController.php +++ b/src/Search/Framework/Controller/WebController.php @@ -7,9 +7,6 @@ use App\Search\Action\Handler\SearchHandler; use App\Search\Action\Input\GetMediaInfoInput; use App\Search\Action\Input\SearchInput; use App\Search\Action\Result\RedirectToMediaResult; -use App\Tmdb\TmdbResult; -use App\Torrentio\Action\Command\GetMovieOptionsCommand; -use App\Torrentio\Action\Command\GetTvShowOptionsCommand; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Messenger\MessageBusInterface; diff --git a/src/Tmdb/Tmdb.php b/src/Tmdb/Tmdb.php index 2b3daf8..8f2fc55 100644 --- a/src/Tmdb/Tmdb.php +++ b/src/Tmdb/Tmdb.php @@ -247,6 +247,21 @@ class Tmdb return $series; } + public function relatedMedia(string $tmdbId, string $mediaType, int $maxResults = 6) + { + $repos = [ + 'movies' => $this->movieRepository, + 'tvshows' => $this->tvRepository, + ]; + + $results = $repos[$mediaType]->getRecommendations($tmdbId); + return Map::from(array_values($results->toArray())) + ->slice(0, 6) + ->map(function ($result) use ($mediaType) { + return $this->parseResult($result, $mediaType); + })->toArray(); + } + public function mediaDetails(string $id, string $type) { $id = $this->find($id); diff --git a/templates/search/result.html.twig b/templates/search/result.html.twig index b0351c3..36cefc4 100644 --- a/templates/search/result.html.twig +++ b/templates/search/result.html.twig @@ -2,9 +2,10 @@ {% block title %}{{ results.media.title }} — Download Options — Torsearch{% endblock %} +{% block h2 %}Media Results{% endblock %} + {% block body %}
Results similar to "{{ results.media.title }}" that you may be interested in.
+ +