11

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

有没有办法从 Wikidata 中的项目中获取图像 URL 属性?

4

2 回答 2

46

如果某些 Wikidata 项目(ID:Qxxx)具有图像(P18)属性,您可以通过MediaWiki API访问它:

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

响应将包括:

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

其中img_name.ext是您要查找的图像的名称。

最终图像 URL 将是:https://upload.wikimedia.org/wikipedia/commons/a/ab/img_name.ext,其中ab是img_name.extMD5 哈希和的第一个和第二个字符(所有空格都替换为)。_

示例:对于项目jaguar (Q35694),API 将返回图像名称“ Junior-Jaguar-Belize-Zoo.jpg ”,其 MD5 hashsum("Junior-Jaguar-Belize-Zoo.jpg")= 213b31ec141dafebe457e49bcd7f9329,因此 a= 2和 b= 1,或者最终图像 URL 将是:https: //upload.wikimedia.org/wikipedia/commons/2/21/Junior-Jaguar-Belize-Zoo.jpg

注意: MD5 哈希和是图像文件的名称,而不是P18[0].mainsnak.hashJSON 正文中包含的属性。

于 2015-12-21T19:22:46.537 回答
4

您可以从 image 属性构建 URL(Sample.png在以下示例中):

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

有关详细信息,请参阅 Wikimedia Commons 的“在 Wikimedia 之外重用内容”文档

于 2020-12-22T16:31:25.717 回答