J'essaie de récupérer des images de wikimedia en utilisant l'API existante, mais il semble y avoir aucune logique dans ce qui fonctionne et ce qui ne fonctionne pas.Comment obtenir des informations sur l'image Wikimedia?
Voici ce que je fais/ai essayé:
Je reçois une requête d'images, de cette URL.
http://en.wikipedia.org/w/api.php?action=query&list=allimages&aiprop=url&format=xml&ailimit=10&aifrom=jura
Cela renvoie un flux XML, à partir de laquelle je reçois les noms d'image et 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"/>
Ensuite, pour obtenir les informations, telles que Uploader et de licence, j'utiliser cet outil, comme lié sur wikimedia:
http://toolserver.org/~magnus/commonsapi.php
Il nécessite le paramètre ?image=
, suivi d'un nom de fichier. Jura.PNG
à partir de l'exemple xml, fonctionne très bien. Cependant, la plupart des autres j'essaie juste de retourner <error>File does not exist</error>
. J'ai testé, les fichiers existent existent. Je ne peux pas comprendre pourquoi un fichier fonctionne, et un autre ne fonctionne pas.
Pour les tests, un autre qui fonctionne est Calumma_tarzan_01.jpg
.
Est-ce que quelqu'un sait ce que je fais mal?
pas des exemples de travail:
Jurassic.jpg
Juramento_de_la_Primera_Junta.jpg
JuraDolois_logo.jpg
Utilisé php code:
$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);
pour le Jura.PNG
exemple l'objet correct est vidé, mais depuis d'autres urls n'avez pas la partie de la licence , le résultat est évidemment NULL
. Je pense que le problème n'est pas ici, cependant, puisque l'entrée manuelle de l'URL dans un navigateur ne retournera pas les résultats.
Pouvez-vous nous donner un exemple de celui qui * ne fonctionne pas? Il ne leur arrive pas d'avoir des espaces ou d'autres caractères non-URL, n'est-ce pas? Je me demande si vous oubliez d'urlencode le nom de fichier que vous passez ... Aussi, quelle langue utilisez-vous pour lancer la demande à l'API toolserver.org? Pouvez-vous nous montrer un peu de code? –
J'ai ajouté les informations demandées à la question. Comme vous pouvez le voir, le fichier 'Jurassic.jpg' n'a pas de caractères spéciaux (sauf peut-être la capitale, mais cela ne semble pas faire de différence), et cela ne marche toujours pas. – Lg102
Jusqu'à présent, en regardant [la source] (https://svn.toolserver.org/svnroot/magnus/commonsapi.php) il semble que l'extraction de 'http://commons.wikimedia.org/w/api.php ? format = php & action = requête & prop = imageinfo & iilimit = 500 & iiprop = horodatage | utilisateur | url | taille | sha1 | métadonnées & titres = Image: Jura.PNG' fonctionne, renvoyant "imageinfo" valide, et 'http://commons.wikimedia.org/w/api.php?format=php&action=query&prop=imageinfo&iilimit=500&iiprop=timestamp|user|url|size|sha1|metadata&titles= Image: Jurassic.jpg' non, mais je ne connais pas assez l'API Commons pour savoir pourquoi. –