维基百科API:无法查询当日图片的URL

时间:2012-01-31 17:52:01

标签: mediawiki-api wikimedia-commons

我读了MediaWiki API documentation 但我找不到如何获取当前的URL picture of the day

在RTFM之后,我调用了查询 from Commons:Potd to its page URL

返回pageid=2518149,它是当前的POTD页面。

然后我尝试拨打prop=imageinfo,但我找不到获取图片网址的方法。

唯一成功的电话就是:

http://commons.wikimedia.org/w/api.php?titles=File:POTD&action=query&prop=images

“成功”意味着它返回一个图片网址...但是不同的pageid(不是当前的POTD)!

1 个答案:

答案 0 :(得分:6)

嗯,这不是很容易。你没有从Commons:Potd获得任何回报,因为这只是一个重定向,但即使你从Commons:Picture of the Day获取图片,你也只能按字母顺序获得所有图像的大量列表。

但这是一个解决方案。首先展开Potd模板以找出当前图像名称:

http://commons.wikimedia.org/w/api.php?action=expandtemplates&text={{Potd/{{CURRENTYEAR}}-{{CURRENTMONTH}}-{{CURRENTDAY2}}}}

<api>
  <expandtemplates xml:space="preserve">20110421 Tbilisi Georgia Panoramic.jpg</expandtemplates>
</api>

然后将该文件名(URL编码)插入到imageinfo的单独请求中,并使用iiprop=url获取网址:

http://commons.wikimedia.org/w/api.php?titles=Image:20110421%20Tbilisi%20Georgia%20Panoramic.jpg&action=query&prop=imageinfo&iiprop=url

就是这样! 可以使用url属性的值来检索图片文件本身:

<api>
  <query>
    <normalized>
      <n from="Image:20110421 Tbilisi Georgia Panoramic.jpg" to="File:20110421 Tbilisi Georgia Panoramic.jpg" />
    </normalized>
    <pages>
      <page pageid="15527584" ns="6" title="File:20110421 Tbilisi Georgia Panoramic.jpg" imagerepository="local">
        <imageinfo>
          <ii url="http://upload.wikimedia.org/wikipedia/commons/a/ae/20110421_Tbilisi_Georgia_Panoramic.jpg" descriptionurl="http://commons.wikimedia.org/wiki/File:20110421_Tbilisi_Georgia_Panoramic.jpg" />
        </imageinfo>
      </page>
    </pages>
  </query>
</api>