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

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

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

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

最佳答案

如果某些维基数据条目(ID:Qxxx)有image (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,其中 a 和 < strong>b 是 MD5 hashsum 的第一个和第二个字符img_name.ext(所有空格都替换为 _)。

示例:对于商品 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 哈希值用于图像文件的名称,而不是 JSON 正文中包含的 P18[0].mainsnak.hash 属性.

关于java - 如何通过 API 从维基数据项中获取图像 URL 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34393884/

相关文章:

api - Wikipedia list =搜索REST API : how to retrieve also Url of matching articles

java.lang.RuntimeException : PARAGRAPH span must start at paragraph boundary (46 follows ) 错误

java - BasicHttpParams - 添加日期格式(ClassCastException)

javascript - 箭头语法和函数语法真的相同吗? (无法读取未定义的属性 'createDocumentFragment')

android - Titanium 创建图像文件 : file. 写入(blob)未创建正确的文件

java - Android:如何知道Commonsware 的WakefulIntentService 是否在运行?

javascript - 使用维基百科的 opensearch api 时,主题标签符号不会填充数据列表。为什么?

java - 错误是什么意思?警告 : [static] static method should be qualified by type name, AnchorPane,而不是表达式

java - 字符串数组抛出索引越界异常

java - MDC 无法与 Log4j 正常工作