Использование 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.