Использование theMovieDB для отображения плаката изображения с PHP

Я новичок в использовании api themoviedb JSON, и в настоящее время я пытаюсь сделать то, что кажется простым: отобразить главный плакат фильма. У меня есть ключ API, и вот код / ответ, который я использую.

$ca = curl_init();
curl_setopt($ca, CURLOPT_URL, "http://api.themoviedb.org/3/configuration?api_key=MYAPIKEY");
curl_setopt($ca, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ca, CURLOPT_HEADER, FALSE);
curl_setopt($ca, CURLOPT_HTTPHEADER, array("Accept: application/json"));
$response = curl_exec($ca);
curl_close($ca);
//var_dump($response);
$config = json_decode($response, true);
//print_r($config);
//$base = $config['base_url'];
//echo($base);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://api.themoviedb.org/3/search/movie?query=Monsters+University&api_key=MYAPIKEY");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Accept: application/json"));
$response = curl_exec($ch);
curl_close($ch);
$result = json_decode($response, true);
//print_r($result);
//var_dump($response);
echo("<img src='" . $config[0]['base_url'] . $config[0]['poster_sizes'][2] . $result[0]['poster_path'] . "'/>");

мой единственный вопрос сейчас в том, что я пытаюсь повторить тег для отображения плаката, но я не уверен, какой правильный код будет, будет ли это что-то вроде этого?

$responsePHP = json_decode($response);
echo("<img src='" . $responsePHP['poster_path'] . "'/>");

любая помощь будет оценили!

Edit: добавлена конфигурационный массив, но это эхо возвращается ни с чем. JSON для обоих распечатать штраф и print_r Кажется, работает с json_decode, Я просто не знаю, почему я не могу вытащить все значения из массивов

3 ответов


кажется, вам нужно сделать дополнительный запрос к /3/configuration чтобы получить дополнительную информацию.

параметр, который вы ищете является base_url который вы можете использовать для создания URL-адресов.

подробнее здесь:http://docs.themoviedb.apiary.io/#get-%2F3%2Fconfiguration

вам может быть интересно, почему это требуется. Согласно их сайту, они сделали это, чтобы они могли сохранить свой API light, и кажется base_url редко меняется (см. https://www.themoviedb.org/talk/515a72d0760ee3615a0b5256 для более)

таким образом, вы можете сделать этот запрос только один раз каждый раз X (например, один раз в день), а затем использовать base_url Я вам там на все последующие запросы надо делать.


EDIT: вздох, я думал, у тебя проблемы только из-за того, что у тебя нет base_url, не с получением данных от json.

в любом случае, просто замените последнюю строку на это:

echo("<img src='" . $config['images']['base_url'] . $config['images']['poster_sizes'][2] . $result['results'][0]['poster_path'] . "'/>");

и это все.


вы близки. вы должны захватить base_url из конфигурации так же, как вы сделали для запроса фильма (http://docs.themoviedb.apiary.io/#configuration) и добавьте base_url к тому, что у вас есть, а затем вам также нужен размер плаката или фона. это должно быть что-то вроде этого:

echo("<img src='" . $config['base_url'] . $config['poster_sizes'][2] . $responsePHP['poster_path'] . "'/>");

таким образом, выход должен быть чем-то вроде: http://d3gtl9l2a4fn1j.cloudfront.net/t/p/w185/2lECpi35Hnbpa4y46JX0aY3AWTy.jpg


ниже будет распечатан путь плаката. Я думаю, это то, чего ты хочешь.

$responsePHP = json_decode($response);
$movies = $responsePHP->results;
$firstMovie = $movies[0];
echo $firstMovie->poster_path;

Если ваш вопрос о том, как получить base_url, то посмотрите на ответ vadderung.