2011-09-09 4 views
0

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.

+0

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? –

+0

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

+0

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. –

Répondre

1

Wikimedia Commons est un référentiel d'images libres que Wikipédia utilise. Il est principalement utilisé pour le partage d'images entre les mutations nationales de Wikipedia.

De nombreuses images sur Wikipedia anglais sont utilisées sous fair use. Ce ne sont pas gratuits, donc ils ne peuvent pas être mis sur Commons. L'outil que vous avez trouvé ne fonctionne que sur les images de Commons (comme son nom l'indique), donc il ne peut pas être utilisé pour les images qui sont hébergées sur l'anglais (ou tout autre) Wikipédia.

+0

C'est ce que je pensais au début, cependant, si vous vérifiez la réponse xml, vous verrez que chaque image est infact sur le sous-domaine upload.wikimedia.org, et non sur wikipedia lui-même. – Lg102

+0

Cela n'en dit pas beaucoup. Ce sont toujours les mêmes serveurs, mais c'est un site différent. En outre, le XML ne répertorie que les images directement sur Wikipedia, pas celles qui sont sur Commons. Vous pouvez également remarquer que les images de Wikipédia se trouvent sous http: // upload.wikimedia.org/wikipedia/en/', tandis que celles de Commons sont sous http: // upload.wikimedia.org/wikipedia/commons /'. – svick

+0

Le Jura.PNG de * working * 'est aussi sur l'emplacement'/wikipedia/en/', donc je pense que ce n'est pas tout à fait correct. Ou ai-je manqué votre point ici? – Lg102

Questions connexes