Я прочитал документацию по MediaWiki API но я не могу найти, как получить текущий URL картинка дня .
После RTFM я вызываю запрос от Commons: Potd к его странице URL .
Возвращает pageid=2518149, это текущая страница POTD.
pageid=2518149
Затем я пытаюсь позвонить prop=imageinfo, но я не нашел способа получить URL изображения.
prop=imageinfo
Единственный успешный вызов - это:
http://commons.wikimedia.org/w/api.php?titles=File:POTD&action=query&prop=images
«Успешный» означает, что он возвращает URL изображения ... но другого pageid (не текущего POTD)!
pageid
Хм, это не очень легко.Вы не получите ничего от Commons:Potd, потому что это просто перенаправление, но даже если вы получите изображения из Commons:Picture of the Day, вы просто получите огромный список всех изображений в алфавитном порядке.
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:
iiprop=url
http://commons.wikimedia.org/w/api.php?titles=Image:20110421%20Tbilisi%20Georgia%20Panoramic.jpg&action=query&prop=imageinfo&iiprop=url
И вот оно! Сам файл изображения можно получить, используя значение атрибута 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>