如何通过API从维基数据项中获取图像URL属性?

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

有没有办法从维基数据中的项目中获取图像URL属性?


答案 1

如果某些维基数据项目(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 将为:,其中 abimg_name.extMD5 哈希和的第二个字符(所有空格均替换为 )。https://upload.wikimedia.org/wikipedia/commons/a/ab/img_name.ext_

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

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


答案 2

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

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

请参阅维基共享资源的“在维基媒体外部重复使用内容”文档以获取更多详细信息。


推荐