1

我正在尝试使用现有的 api 从 wikimedia 检索图像,但似乎没有什么可行和不可行的逻辑。

这是我正在做/尝试过的事情:

我正在从这个 url 获取图像查询。

http://en.wikipedia.org/w/api.php?action=query&list=allimages&aiprop=url&format=xml&ailimit=10&aifrom=jura

这将返回一个 xml 提要,我从中获取图像名称和 url:

<img name="Jura.PNG" url="http://upload.wikimedia.org/wikipedia/en/a/ad/Jura.PNG" descriptionurl="http://en.wikipedia.org/wiki/File:Jura.PNG"/>

然后,为了获取上传者和许可证等信息,我使用了这个工具,链接在 wikimedia 上:

http://toolserver.org/~magnus/commonsapi.php

它需要参数?image=,后跟文件名。Jura.PNG从 xml 示例中,工作正常。但是,我尝试的大多数其他人只是返回<error>File does not exist</error>。我测试过,文件确实存在。我无法弄清楚为什么一个文件有效,而另一个文件无效。

对于测试,另一个有效的是Calumma_tarzan_01.jpg.

有谁知道我做错了什么?


不工作的例子:

Jurassic.jpg
Juramento_de_la_Primera_Junta.jpg
JuraDolois_logo.jpg

使用的php代码:

$xml_link = "http://en.wikipedia.org/w/api.php?action=query&list=allimages&aiprop=url&format=xml&ailimit=10&aifrom=".$search_term;
$xml = simplexml_load_file( $xml_link );
$xml_link_data = "http://toolserver.org/~magnus/commonsapi.php?image=".$imgname;
$xml_data = simplexml_load_file( $xml_link_data );
var_dump($xml_data->licenses->license);

例如Jura.PNG,正确的对象被转储,但由于其他 url 没有许可证部分,结果显然是NULL. 但是,我认为问题不在这里,因为在浏览器中手动输入 url 也不会返回结果。

4

1 回答 1

1

Wikimedia Commons是 Wikipedia 使用的免费图像存储库。它主要用于在维基百科的国家突变之间共享图像。

英语维基百科上的许多图像都是在合理使用的情况下使用的。这些不是免费的,所以它们不能放在 Commons 上。

The tool you have found works only on images from Commons (as its name suggests), so it can't be used for images that are hosted on the English (or any other) Wikipedia.

于 2011-09-09T17:34:13.423 回答