Как запросить wikipedia api для файла, если заголовок страницы отличается от имени файла?
Я пытаюсь восстановить изображение герба Афганистана из Википедии.
То, что я делаю до сих пор:
Получить инфобокс для Афганистана здесь.
И проанализируйте результат, чтобы извлечь:
"image_coat = герб Афганистана.svg "
Обычно я продолжаю запрашивать информацию об изображении здесь , но в этой ссылке отсутствует реальный url-адрес изображения.
Проблема заключается в том, что для Афганистана образ на самом деле "Emblem_of_Afghanistan.svg"
вместо "Coat_of_arms_of_Afghanistan.svg".
Однако эта страница правильно отображает файл "Emblem_of_Afghanistan.svg".
Так что я вроде как застрял здесь. Если бы это был только Афганистан, я мог бы вручную исправить его, но эта проблема возникает для многих файлов.
1 ответ:
Причина, по которой реальный файл является
File:Emblem_of_Afghanistan.svg
, заключается в том, что страница CommonsFile:Coat of arms of Afghanistan.svg
является перенаправлением наFile:Emblem of Afghanistan.svg
. К сожалению, APIprop=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