我正在尝试使用现有的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
。我认为问题不在这里,因为在浏览器中手动输入网址也不会返回结果。
答案 0 :(得分:1)
Wikimedia Commons是维基百科使用的免费图像存储库。它主要用于在维基百科的国家突变之间共享图像。
英语维基百科上的许多图像都在fair use下使用。那些不是免费的,所以不能把它们放在下议院。
您找到的工具仅适用于Commons的图像(顾名思义),因此不能用于托管在英语(或任何其他)维基百科上的图像。