5

我阅读了MediaWiki API 文档 ,但找不到如何获取 当天图片的当前 URL 。

在 RTFM 之后,我将 Commons:Potd 中的查询称为其页面 URL

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

然后我尝试调用prop=imageinfo,但我没有找到获取图像 URL 的方法。

唯一成功的调用是这样的:

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

“成功”意味着它返回一个图像 URL……但不同pageid(不是当前的 POTD)!

4

1 回答 1

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以获取 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>
于 2012-02-01T06:14:31.257 回答