既存の 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 の例から、正常に動作します。ただし、他のほとんどの場合、私は単に return を試み<error>File does not exist</error>
ます。テストしましたが、ファイルは存在します。あるファイルが機能し、別のファイルが機能しない理由がわかりません。
テストのために、機能するもう1つの方法は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 を手動で入力しても結果が返されないため、問題はここにはないと思います。