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

Pet*_*ton 4 java android mediawiki-api google-image-search wikidata-api

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

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

Ter*_*nja 28

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

https://www.wikidata.org/w/api.php?action=wbgetclaims&entity=Qxxx&property=P18
Run Code Online (Sandbox Code Playgroud)

答复将包括:

"claims": {
        "P18": [{ "mainsnak": { "datavalue": { "value": "img_name.ext" }}}]
}
Run Code Online (Sandbox Code Playgroud)

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

最终图像的URL将是:https://upload.wikimedia.org/wikipedia/commons/a/ab/img_name.ext其中一个b分别是第一和第二字符的md5sum所述的img_name.ext.

例如,对于项目jaguar(Q35694),API将返回图像名称" Junior-Jaguar-Belize-Zoo.jpg ",其中包含md5sum:21 3b31ec141dafebe457e49bcd7f9329,因此a = 2且b = 1,或者最终图像URL将是:https://upload.wikimedia.org/wikipedia/commons/2/21/Junior-Jaguar-Belize-Zoo.jpg

  • 太好了!你也可以像这样直接获得调整大小的图像网址:https://commons.wikimedia.org/w/thumb.php?width = 500&f = Junior-Jaguar-Belize-Zoo.jpg尽管如此,请注意请求大小超过原始图像大小将返回错误 (6认同)

Kar*_*tel 7

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

https://commons.wikimedia.org/w/index.php?title=Special:Redirect/file/Sample.png&width=300
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息,请参阅维基共享资源的“重用维基媒体之外的内容”文档。