La plupart des images sous CC que j’utilise proviennent de Flickr, soit directement, soit via des meta-​​moteurs. Il m’arrive aussi de temps en temps d’en prendre sur Wikipedia, mais c’est nettement plus rare, le traitement peut donc se faire manuellement.

Avant de commencer quoi que ce soit, il faut regarder ce qu’on peut obtenir via l’API, et comment. C’est la base du modèle de données, ainsi que de la liste des fonctions qu’on va utiliser pour récupérer les données.

Trouver la documentation de l’API Flickr

Ergonomie, quand tu nous tient… les liens vers l’API se trouvent tout en bas de la page, qui, lorsqu’on est sur l’accueil, met un temps fou à se charger complètement à cause de ce [censuré] d’auto-load. Il y a un raccourci dans les menus, mais bien caché, puisqu’il faut penser à sélectionner « Explorer » et ensuite « App Garden » (pour toutes les applications).

Bref, on arrive sur la page de l‘App Garden qui donne un lien vers la documentation de l’API.

La doc donne l’ensemble des méthodes (les fonctions utilisées), mais ne donne pas a priori de descriptif complet des données disponibles. On va donc pêcher ce dont on a besoin dans les méthodes. Et pour chaque méthode, il faudra « tester » les données renvoyées.

Les données des images

C’est bien entendu la liste des méthodes la plus complète. J’ai enlevé tout ce qui concerne le traitement des photos proprement dit (ajouter de l’information, modifier, supprimer), voici ce qui reste et qui va être intéressant à examiner :

Mais d’autres données, dont on a aussi besoin, sont rattachées à d’autres méthodes. En effet, la licence, qui nous intéresse particulièrement, est simplement un code numérique, dont on va avoir la liste en utilisant flickr.photos.licenses.getInfo,

Les données utilisateurs

La liste des méthodes disponibles montre qu’on peut chercher des utilisateurs selon certains critères, récupérer de l’info, et les « objets » attachés à l’utilisateur.

Dans notre cas précis, ce qui nous intéresse, c’est a priori flickr.people.getInfo et éventuellement flickr.people.findByUsername

Beaucoup de méthodes permettent de travailler sur les groupes, les galeries, les informations diverses des photos. A priori, on ne va pas les utiliser. La seule méthode qui peut aussi nous intéresser, c’est flickr.photos.comments.addComment pour laisser un message de remerciement sur la photo.

Comment ça marche

Il faut disposer d’une clé d’API.  Ce sera donc une des options du plugin

L’API utilise l’UTF-8 (ça tombe bien WordPress aussi en général)

De nombreuses actions (dont celle de poster un message de remerciement) exigent que l’utilisateur s’authentifie.

L’API renvoie en php les données sous forme sérialisée, c’est le plus simple à utiliser.

(NB : il existe un projet sur github, phpflickr, mais c’est un peu lourd, puisqu’il reprend la totalité des méthodes de l’API, alors qu’on ne va en utiliser que quelques unes. Il en existe une autre sur SourceForge, mais qui exige que Curl soit installé, ce qui n’est pas le cas sur tous les serveurs… comme c’est un plugin destiné à être diffusé, on va s’en passer).

Pour le plugin :

Une bonne nouvelle, et une mauvaise nouvelle.

La bonne nouvelle : à l’exception de la création de commentaire, aucune de ces méthodes n’exige l’authentification. C’est bien, car celle-​​ci est plutôt complexe, on va donc pouvoir laisser de côté, sur un coin de table, en attendant d’arriver à la fin.

Une très mauvaise nouvelle : « bad coding » et « problème de modèle de données ».

La liste des licences gérées par Flickr n’est pas directement utilisable.

C’est une liste qui a été faite « au fur et à mesure », qui contient des licences « autres », et qui n’est pas à jour par rapport aux licences CC.

<licenses>
 <license id="0" name="All Rights Reserved" url="" />
 <license id="1" name="Attribution-NonCommercial-ShareAlike License" url="http://creativecommons.org/licenses/by-nc-sa/2.0/" />
 <license id="2" name="Attribution-NonCommercial License" url="http://creativecommons.org/licenses/by-nc/2.0/" />
 <license id="3" name="Attribution-NonCommercial-NoDerivs License" url="http://creativecommons.org/licenses/by-nc-nd/2.0/" />
 <license id="4" name="Attribution License" url="http://creativecommons.org/licenses/by/2.0/" />
 <license id="5" name="Attribution-ShareAlike License" url="http://creativecommons.org/licenses/by-sa/2.0/" />
 <license id="6" name="Attribution-NoDerivs License" url="http://creativecommons.org/licenses/by-nd/2.0/" />
 <license id="7" name="No known copyright restrictions" url="http://flickr.com/commons/usage/" />
 <license id="8" name="United States Government Work" url="http://www.usa.gov/copyright.shtml" />
</licenses>

Alors que les licences CC en sont à la version 4. Si on se limitait à la gestion des images Flickr, ce ne serait pas grave, mais je veux pouvoir aussi utiliser le plugin pour des images trouvées ailleurs, avec des versions de licence 3.0 ou 4.0, comme j’en vois sur Wikipedia.

De plus, Flickr a une définition « verbeuse » des licences, qui ne correspond pas aux codes utilisés par Creative Commons.

CreativeCommons appellera cc-​​by-​​nc-​​nd ce que Flickr appelle Attribution-​​NonCommercial-​​NoDerivs License, qui est une abbréviation en anglais, que je ne peux utiliser nulle part.

Bref, il va falloir « mapper », faire une table de correspondance entre les licences que je gère dans le plugin et les licences de Flickr. C’est un grand classique dans les systèmes de gestion, les ERP, mais ce n’est jamais une très bonne nouvelle, parce que cela rajoute de la complexité dans les données et de la maintenance.

L’API Wikimedia Commons

C’est donc le moment d’aller vérifier ce qui existe sur l’autre grande source de medias en CC : Wikimedia.  Car si je vais au début me concentrer sur les fonctions Flickr, j’aimerais bien vérifier qu’il n’y a pas d’énormes divergences avec Wikimedia.

La documentation de l’API est disponible en anglais, on est censé pouvoir l’afficher dans d’autres langues, mais elle n’est pas traduite !

Fondamentalement, par rapport à Flickr, la grosse différence c’est que l’API travaille par rapport au contenu d’une page. Elle permet d’en rapatrier tous les éléments.  Une recherche rapide sur le thème « license information » donne cette information

Unfortunately right now both author and license information is not stored in a structured way that would allow fetching it from the MediaWiki API.

Malheureusement, actuellement, ni les informations sur l’utilisateur ni les informations sur la license ne sont stockées d’une façon structurée qui permettrait de les importer à partir de l’API MediaWikie

Ce qui veut dire, concrètement :

  • qu’il faudra extraire l’information de la page, via un parser (un exemple est donné)
  • qu’on n’a pas, par contre, de contrainte de format ou de clé.

On peut donc désormais bâtir notre modèle de données. Cela va devenir concret à partir du prochain article.

 

(Les deux maisons italiennes aux couleurs de Flickr sont une une photo sous licence CC BY John Fawler )

Que pensez-vous de cet article ?
Super0
Bien0
Bof0
Nul0
Poster un commentaire