如何获得有关维基媒体图像的信息?

时间:2011-09-09 14:25:01

标签: xml wikipedia wikipedia-api wikimedia-commons

我正在尝试使用现有的api从维基媒体中检索图像,但似乎没有逻辑在哪些有效,哪些无效。

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

我正在从这个网址查询图片。

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

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

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

然后,为了获取上传者和许可证等信息,我使用此工具,与维基媒体相关联:

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

它需要参数?image=,后跟文件名。来自xml示例的Jura.PNG正常工作。但是,大多数其他人试着返回<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。我认为问题不在这里,因为在浏览器中手动输入网址也不会返回结果。

1 个答案:

答案 0 :(得分:1)

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

英语维基百科上的许多图像都在fair use下使用。那些不是免费的,所以不能把它们放在下议院。

您找到的工具仅适用于Commons的图像(顾名思义),因此不能用于托管在英语(或任何其他)维基百科上的图像。