使用MovieDB通过PHP显示图像海报

时间:2013-08-16 18:51:16

标签: php json api themoviedb-api

我是使用itoviedb JSON api的新手,我现在正在尝试做一些看似简单的事情:显示电影的主要海报。我有一个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'] . "'/>");

任何帮助将不胜感激!

编辑:添加了配置数组,但回送时没有任何内容。打印好的JSON和print_r似乎与json_decode一起使用,我只是不知道为什么我不能从数组中提取任何值

3 个答案:

答案 0 :(得分:6)

您似乎需要向/3/configuration发出额外请求以获取更多信息。

您要查找的参数是base_url,您可以使用它来构建网址。

在此处阅读更多内容:http://docs.themoviedb.apiary.io/#get-%2F3%2Fconfiguration

您可能想知道为什么需要这样做。根据他们的网站,他们这样做,以便他们可以保持自己的API,base_url似乎很少改变(更多请参阅https://www.themoviedb.org/talk/515a72d0760ee3615a0b5256

所以,你可以每X次只做一次这个请求(例如每天一次),然后使用base_url我可能需要做的所有后续请求。


编辑:叹了口气,我以为你只是因为没有base_url而有问题,而不是从json获取数据。

无论如何,只需将最后一行替换为:

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

就是这样。

答案 1 :(得分:0)

你很亲密。您必须从配置中获取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

答案 2 :(得分:0)

以下将打印出海报路径。我想这就是你想要的。

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

如果您的问题是关于如何获得base_url,请查看vadderung的答案。