维基百科图像API搜索 - 包含总结果+ fileinfo

时间:2016-05-23 08:40:02

标签: wikipedia wikipedia-api

我们希望基于Wikipedia Commons图像数据库构建图像搜索。我已经尝试了不同的请求格式,但似乎没有适合100%我们需求的解决方案。

我们想要实现的目标:

  1. 用户搜索f.e. “爱因斯坦”
  2. 我们向他们展示了“在维基百科中找到爱因斯坦的808个结果”
  3. 向他们展示前10个结果并允许分页
  4. 我试过了:

    https://commons.wikimedia.org/w/api.php?action=query&list=search&srsearch=%22Einstein%22&srnamespace=6
    

    返回总计结果(1842)

    "query": {
        "searchinfo": {
            "totalhits": 1842
        },
    

    结果如:

    {
        "ns": 6,
        "title": "File:Albert Einstein Head.jpg",
        "snippet": "DescriptionAlbert <span class=\"searchmatch\">Einstein</span> Head.jpg  English: Albert <span class=\"searchmatch\">Einstein</span> Fran\u00e7ais\u00a0: Portrait d'Albert <span class=\"searchmatch\">Einstein</span>  Date Copyrighted 1947, copyright not renewed. <span class=\"searchmatch\">Einstein</span>'s estate",
        "size": 968,
        "wordcount": 0,
        "timestamp": "2016-01-01T01:57:15Z"
    }
    

    但是这个回复缺少可下载的URL。例如,“File:Albert Einstein Head.jpg”中的一个是https://upload.wikimedia.org/wikipedia/commons/d/d3/Albert_Einstein_Head.jpg

    我需要设置另一个请求来获取正确的网址:

    https://commons.wikimedia.org/w/api.php?action=query&titles=File:Albert Einstein Head.jpg|File:Einstein hair advice.jpg|File:Einstein - potpis.jpg&prop=imageinfo&iiprop=url
    

    有没有办法在单个请求中搜索包含其标题,下载URL和总结果(总点数)的维基百科图像?

1 个答案:

答案 0 :(得分:1)

是的,您可以将serarch查询用作所谓的generator,然后使用prop=imageinfo查询该生成器的结果以获取图片网址。在你的情况下,它看起来像这样:

https://commons.wikimedia.org/w/api.php?action=query&generator=search&gsrsearch=Einstein&gsrprop=snippet&prop=imageinfo&iiprop=url&rawcontinue&gsrnamespace=6

generator=search告诉API将此模块用作生成器。然后,此模块的参数以gsr为前缀,如gsrsearch=Einsteingsrprop=snippet等。最后,prop=imageinfo的工作方式与常规API查询相同,但每个参数都会重复结果发电机返回。

相关: