Как запросить wikipedia api для файла, если заголовок страницы отличается от имени файла?


Я пытаюсь восстановить изображение герба Афганистана из Википедии.

То, что я делаю до сих пор:

Получить инфобокс для Афганистана здесь.

И проанализируйте результат, чтобы извлечь:

"image_coat = герб Афганистана.svg "

Обычно я продолжаю запрашивать информацию об изображении здесь , но в этой ссылке отсутствует реальный url-адрес изображения.

Проблема заключается в том, что для Афганистана образ на самом деле "Emblem_of_Afghanistan.svg" вместо "Coat_of_arms_of_Afghanistan.svg".

Однако эта страница правильно отображает файл "Emblem_of_Afghanistan.svg".


Так что я вроде как застрял здесь. Если бы это был только Афганистан, я мог бы вручную исправить его, но эта проблема возникает для многих файлов.
1 2

1 ответ:

Причина, по которой реальный файл является File:Emblem_of_Afghanistan.svg, заключается в том, что страница CommonsFile:Coat of arms of Afghanistan.svg является перенаправлением на File:Emblem of Afghanistan.svg. К сожалению, API prop=imageinfo В настоящее время не обрабатывает перенаправления Commons.

Чтобы обойти это, когда это произойдет (что вы можете распознать по imagerepository в ответе, но без URL*), вы можете вместо этого запросить Commons API, указав также redirects: http://commons.wikimedia.org/w/api.php?action=query&titles=File:Coat_of_arms_of_Afghanistan.svg&prop=imageinfo&iiprop=url&format=json&redirects

* запрос, на который вы ссылаетесь, неправильный, в нем отсутствует префикс File:. Правильный запрос: http://en.wikipedia.org/w/api.php?action=query&titles=File:Coat_of_arms_of_Afghanistan.svg&prop=imageinfo&iiprop=url&format=json