fix: search by imdb id
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
|
||||
namespace App\Tmdb\Framework\Controller;
|
||||
|
||||
use App\Base\Util\ImdbMatcher;
|
||||
use App\Tmdb\Tmdb;
|
||||
use App\Tmdb\TmdbResult;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
@@ -17,17 +18,28 @@ class ApiController extends AbstractController
|
||||
$results = [];
|
||||
|
||||
$term = $request->query->get('query') ?? null;
|
||||
$term = trim($term);
|
||||
|
||||
if (null !== $term) {
|
||||
$tmdbResults = $tmdb->search($term);
|
||||
|
||||
foreach ($tmdbResults as $tmdbResult) {
|
||||
/** @var TmdbResult $tmdbResult */
|
||||
$results[] = [
|
||||
'data' => $tmdbResult,
|
||||
'text' => $tmdbResult->title,
|
||||
'value' => "$tmdbResult->mediaType|$tmdbResult->imdbId",
|
||||
if (ImdbMatcher::isMatch($term)) {
|
||||
$tmdbResult = $tmdb->findByImdbId($term);
|
||||
$results = [
|
||||
[
|
||||
'data' => $tmdbResult,
|
||||
'text' => $tmdbResult->title,
|
||||
'value' => "$tmdbResult->mediaType|$tmdbResult->imdbId",
|
||||
]
|
||||
];
|
||||
} else {
|
||||
$tmdbResults = $tmdb->search($term);
|
||||
foreach ($tmdbResults as $tmdbResult) {
|
||||
/** @var TmdbResult $tmdbResult */
|
||||
$results[] = [
|
||||
'data' => $tmdbResult,
|
||||
'text' => $tmdbResult->title,
|
||||
'value' => "$tmdbResult->mediaType|$tmdbResult->imdbId",
|
||||
];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -185,6 +185,28 @@ class Tmdb
|
||||
throw new \Exception("No results found for $id");
|
||||
}
|
||||
|
||||
public function findByImdbId(string $imdbId)
|
||||
{
|
||||
$finder = new Find($this->client);
|
||||
$result = $finder->findBy($imdbId, ['external_source' => 'imdb_id']);
|
||||
|
||||
if (count($result['movie_results']) > 0) {
|
||||
$result = $result['movie_results'][0];
|
||||
$mediaType = MediaType::Movie->value;
|
||||
} elseif (count($result['tv_results']) > 0) {
|
||||
$result = $result['tv_results'][0];
|
||||
$mediaType = MediaType::TvShow->value;
|
||||
} elseif (count($result['tv_episode_results']) > 0) {
|
||||
$result = $result['tv_episode_results'][0];
|
||||
$mediaType = MediaType::TvShow->value;
|
||||
}
|
||||
|
||||
$result['media_type'] = $mediaType;
|
||||
$result = $this->mediaDetails($imdbId, $result['media_type']);
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
public function movieDetails(string $id)
|
||||
{
|
||||
$client = new MovieRepository($this->client);
|
||||
|
||||
Reference in New Issue
Block a user