9

我是使用 themoviedb 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,我只是不知道为什么我不能从数组中提取任何值

4

3 回答 3

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在我可能需要执行的所有后续请求中使用 I get there。


编辑:叹息,我认为你只是没有问题base_url,而不是从 json 获取数据。

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

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

就是这样。

于 2013-08-16T19:10:11.040 回答
0

你很近。您必须像对电影查询(http://docs.themoviedb.apiary.io/#configuration)一样从配置中获取 base_url 并将 base_url 添加到您所拥有的内容中,然后您还需要海报或背景尺寸. 它应该是这样的:

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

所以输出应该是这样的: http: //d3gtl9l2a4fn1j.cloudfront.net/t/p/w185/2lECpi35Hnbpa4y46JX0aY3AWTy.jpg

于 2013-08-16T19:10:21.337 回答
0

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

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

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

于 2013-08-16T19:19:47.220 回答