Я пытаюсь получить изображения из Викимедиа, используя существующий API, но, похоже, нет логики в том, что работает, а что нет.
Вот что я делаю / пробовал:
Я получаю запрос изображений с этого URL.
http://en.wikipedia.org/w/api.php?action=query&list=allimages&aiprop=url&format=xml&ailimit=10&aifrom=jura
Возвращает фид XML, из которого я получаю имена изображений и URL:
<img name="Jura.PNG" url="http://upload.wikimedia.org/wikipedia/en/a/ad/Jura.PNG" descriptionurl="http://en.wikipedia.org/wiki/File:Jura.PNG"/>
Затем, чтобы получить информацию, такую как загрузчик и лицензия, я использую этот инструмент, как указано в Викимедиа:
http://toolserver.org/~magnus/commonsapi.php
Требуется параметр ?image=
, за которым следует имя файла. Jura.PNG
из примера xml, работает нормально. Тем не менее, большинство других я пытаюсь просто вернуть <error>File does not exist</error>
. Я проверял, файлы do существуют. Я не могу понять, почему один файл работает, а другой нет.
Для тестирования работает еще один Calumma_tarzan_01.jpg
.
Кто-нибудь знает, что я делаю не так?
Не рабочие примеры:
Jurassic.jpg
Juramento_de_la_Primera_Junta.jpg
JuraDolois_logo.jpg
Используется php код:
$xml_link = "http://en.wikipedia.org/w/api.php?action=query&list=allimages&aiprop=url&format=xml&ailimit=10&aifrom=".$search_term;
$xml = simplexml_load_file( $xml_link );
$xml_link_data = "http://toolserver.org/~magnus/commonsapi.php?image=".$imgname;
$xml_data = simplexml_load_file( $xml_link_data );
var_dump($xml_data->licenses->license);
для примера Jura.PNG
правильный объект сбрасывается, но, поскольку другие URL не имеют лицензионной части, результат, очевидно, равен NULL
. Однако я думаю, что проблема не в этом, поскольку ручной ввод URL-адреса в браузере также не возвращает результатов.