如何通过API从Wikidata项目获取图像URL属性?

时间:2015-12-21 10:48:08

标签: java android mediawiki-api google-image-search wikidata-api

我制作了一个使用JSON Google图片搜索API提供图片的Android应用,但我注意到Google已停止支持它了。我还发现维基数据有时会在某些项目上提供图像属性,但我似乎无法使用维基数据API获取图像的URL位置。

有没有办法从维基数据中的项目中获取图片网址属性?

3 个答案:

答案 0 :(得分:25)

如果某个维基数据项目(ID: Qxxx )具有image (P18)属性,则可以MediaWiki API访问它:

https://www.wikidata.org/w/api.php?action=wbgetclaims&entity=Qxxx&property=P18

回复将包括:

"claims": {
        "P18": [{ "mainsnak": { "datavalue": { "value": "img_name.ext" }}}]
}

其中 img_name.ext 是您要查找的图片的名称(所有空格都必须替换为_)。

最终图片网址为:https://upload.wikimedia.org/wikipedia/commons/a/ab/img_name.ext,其中 a b 是<{3}}的第一个和第二个字符<强> img_name.ext

例如,对于商品md5sum,API会返回图片名称“ jaguar (Q35694) ”,其中包含md5sum: 21 < / strong> 3b31ec141dafebe457e49bcd7f9329 ,所以a = 2 和b = 1 ,或最终图片网址为:Junior-Jaguar-Belize-Zoo.jpg

答案 1 :(得分:1)

您可以从图像属性(以下示例中的 Sample.png)构建 URL:

https://commons.wikimedia.org/w/index.php?title=Special:Redirect/file/Sample.png&width=300

有关详细信息,请参阅 Wikimedia Commons 的 "Reusing content outside Wikimedia" documentation

答案 2 :(得分:0)

花点时间来弄清楚这个。正在讨论的哈希总和不是P18 [0] .mainsnak.hash的值。

您需要进行hashsum(“ Junior-Jaguar-Belize-Zoo.jpg”)。作为名称的字符串(用“ _”替换空格之后。这将为您提供213B31EC141DAFEBE457E49BCD7F9329哈希总和,可用于确定URL。