如何获取有关维基媒体图像的信息?
我正在尝试使用现有的 api 从 wikimedia 检索图像,但什么有效、什么无效似乎没有逻辑。
这是我正在做/已经尝试过的:
我从这个网址获取图像查询。
http://en.wikipedia.org/w/api.php?action=query&list=allimages&aiprop=url&format=xml&ailimit=10&aifrom=jura
这将返回一个 xml feed,从中我获取图像名称和 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=< /code>,后跟文件名。 xml 示例中的
Jura.PNG
工作正常。然而,大多数其他的我尝试只返回
。我已经测试过,文件确实存在。我不明白为什么一个文件有效,而另一个文件无效。
为了进行测试,另一个有效的方法是 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 没有许可证部分,结果显然是 空。不过,我认为问题不在这里,因为在浏览器中手动输入网址也不会返回结果。
I'm trying to retrieve images from wikimedia using the existing api, but there seems to be no logic in what works and what doesn't.
Here's what i'm doing/have tried:
I'm getting a query of images, from this url.
http://en.wikipedia.org/w/api.php?action=query&list=allimages&aiprop=url&format=xml&ailimit=10&aifrom=jura
This returns an xml feed, from which i get the image names and url's:
<img name="Jura.PNG" url="http://upload.wikimedia.org/wikipedia/en/a/ad/Jura.PNG" descriptionurl="http://en.wikipedia.org/wiki/File:Jura.PNG"/>
Then, to get the information, such as uploader and license, i use this tool, as linked on wikimedia:
http://toolserver.org/~magnus/commonsapi.php
It requires the parameter ?image=
, followed by a filename. Jura.PNG
from the xml example, works fine. However, most other one's i try just return <error>File does not exist</error>
. I've tested, the files do exist. I can't figure out why one file works, and another doesn't.
For testing, another one that works is Calumma_tarzan_01.jpg
.
Does anyone know what i'm doing wrong?
Not working examples:
Jurassic.jpg
Juramento_de_la_Primera_Junta.jpg
JuraDolois_logo.jpg
Used php code:
$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);
for the Jura.PNG
example the correct object is dumped, but since other urls dont have the license part, the result is obviously NULL
. I think the problem isn't here, however, since manual input of the url in a browser also won't return results.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
Wikimedia Commons 是维基百科使用的免费图像存储库。它主要用于维基百科国家突变之间的图像共享。
英语维基百科上的许多图像都是在合理使用下使用的。这些不是免费的,因此不能放在 Commons 上。
您发现的工具仅适用于来自 Commons 的图像(顾名思义),因此它不能用于英语(或任何其他)维基百科上托管的图像。
Wikimedia Commons is a repository of free images that Wikipedia uses. It is primarily used for sharing of images between national mutations of Wikipedia.
Many images on the English Wikipedia are used under fair use. Those are not free, so they can't be put on 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.