代码之家  ›  专栏  ›  技术社区  ›  Peter Warrington Ashish Karpe

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

  •  12
  • Peter Warrington Ashish Karpe  · 技术社区  · 9 年前

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

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

    2 回复  |  直到 9 年前
        1
  •  46
  •   Termininja Hassan Rahman    3 年前

    如果某些Wikidata项目(ID为: 问题xxx )有 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 哪里 b 是的第一个和第二个字符 MD5 hashsum img_name.ext (所有空格替换为 _ ).

    例子: 对于项目 jaguar (Q35694) API将返回图像名称“ Junior-Jaguar-Belize-Zoo.jpg “,具有MD5 hashsum("Junior-Jaguar-Belize-Zoo.jpg") = 213b31ec141dafebe457e49bcd7f9329 ,所以= 2. 和b= 1. ,否则最终图像URL将为: https://upload.wikimedia.org/wikipedia/commons/2/21/Junior-Jaguar-Belize-Zoo.jpg

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

        2
  •  6
  •   Karl Bartel    4 年前

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

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

    参见Wikimedia Commons "Reusing content outside Wikimedia" documentation 了解更多详细信息。