User:Jean-Frédéric/digiKam

Sujet
« Développement d’un plugin pour digiKam permettant l’export vers la médiathèque Wikimedia Commons »

Wikimedia Commons est une médiathèque en ligne qui rassemble des médias à vocation pédagogique, publiés sous licences libres. Elle centralise les illustrations des différents projets Wikimedia, dont le plus connu est l’encyclopédie libre Wikipédia. Créée en 2004, Wikimedia Commons compte à ce jour plus de 11 millions de fichiers librement réutilisables.

Wikimedia Commons est propulsé par le logiciel MediaWiki. Le versement de fichiers sur Wikimedia Commons se fait principalement au moyen d’une interface web. Il est également possible de recourir à des clients lourds ou à des bibliothèques de programmation en ligne de commande.

digiKam est un logiciel multiplateforme-forme de gestion d'images sous licence libre GNU GPL, basé sur la plate-forme KDE. Il permet de gérer des collections d’images, d’effectuer de la retouche photographique et d’exporter les fichiers vers diverses plates-formes en ligne, comme Flickr ou Picasa.

Le but du projet est de développer un plugin digiKam permettant l’export de fichiers vers Wikimedia Commons. Cet export devra impérativement inclure diverses informations et métadonnées sur le fichier (description multilingue, licence, géolocalisation, catégories), soit en les extrayant des propriétés du fichier, soit en permettant à l’utilisateur de les saisir à la main.

Le plugin reposera sur l’API KIPI plugins. Les étudiants pourront s’appuyer sur une bibliothèque Qt permettant d’interagir avec MediaWiki, et sur un prototype incomplet du plugin demandé.

Selon l’avancement du projet, le développement d’un plugin analogue pour Shotwell, l’homologue de digiKam pour l’environnement de bureau GNOME, pourra être envisagé.

Done

 * ✅ Naviguer sur Commons et s'essayer à l'import de photos pour comprendre son fonctionnement
 * ✅ Installer une distribution Linux avec le dernière version de digiKam et importer des photos pour comprendre son fonctionnement
 * ✅ Cloner le code source du plugin actuel sur GitHub
 * ✅ Apprendre à compiler et à modifier le plugin Kipi
 * ✅ Ajouter  au contenu de la page de description sur Commons
 * ✅ Déplacer les options de redimensionnement vers un second onglet (avec les autres options « avancées »)
 * ✅ La gestion des espaces dans les noms de fichiers est mauvaise - les espaces dans le nom de fichier sont autorisés, mais ils sont automatiquement replacé par "_" à l'upload (wikipedia API) (ILkO)
 * ✅ Choix du wiki de destination dans une liste déroulante avec possibilité d'ajouter son propre wiki (nom, url de api.php) − Nathan
 * ✅ Le login semble ne pas fonctionner sur Commons (fonctionne sur test.wikipedia.org) : tout fonctionne : fichiers importés

Bugs

 * ✅ La gestion des caractères spéciaux dans le wikitexte est incorrecte :
 * Prévenir lors de l'écrasement d'un fichier existant (importer une seconde fois ne prévient pas que l'image existe déjà)
 * Prévenir quand le même titre a été donné à deux images
 * ✅ redimensionnement KO dû à la modification du titre de l'image
 * ✅ Gestion du titre de l'image
 * ✅ caractère spéciaux dans la localisation "�"
 * ✅ N'ajouter la géolocalisation que si les champs correspondants sont remplis :
 * ✅ Corriger la typographie des messages utilisateur
 * ✅ Corriger l'ordre du focus des champs de texte (focus sur longitude avant latitude inattendu)

Fonctionnalités importantes

 * Pouvoir éditer les métadonnées :
 * ✅ Catégories
 * ✅ Coordonnées géographiques (les modèles de Commons ne gèrent pas l'altitude : documentation)
 * ✅ Nom du fichier de destination (autoriser les séries de fichiers en ajoutant un numéro à la fin)
 * ✅ Date et heure
 * ✅ Description
 * ✅ Stocker en mémoire les informations d'import associées à chaque fichier.
 * ✅ Mettre à jour les informations saisies à chaque changement de focus pour toutes les images sélectionnées
 * Rédiger une documentation là : KIPI uploader
 * Détailler davantage les erreurs de login et d'import
 * Pré-remplir :
 * Les catégories avec les étiquettes digiKam (Sélectionner seulement les catégories les plus précises. Remplir avec Valeur1\nValeur2 plutôt que « Valeur1,Valeur2» car la virgule est autorisée dans les noms de catégorie...)
 * ✅ les coordonnées géographiques
 * ✅ le nom du fichier de destination
 * ✅ la date et l'heure
 * les descriptions (pré-remplir avec \n )
 * ✅ Remplacer les champs monoligne (KLineEdit) des descriptions et catégories par des champs de texte (KTextEdit) (voir syntaxes ci-dessus avec les retours à la ligne ; c'est bien plus pratique quand le texte saisi est long !)
 * Pré-remplir le champ « Auteur » avec l'identifiant utilisé et conserver cette information dans la configuration
 * Ajouter un champ « Source » et le pré-remplir avec Own work plutôt que d'ajouter Own work automatiquement
 * Ajouter un champ de catégories qui seront ajoutées à toutes les images (catégorie d'appareil photo, d'utilisateur...) et stockées dans la configuration

Fonctionnalités non critiques

 * Vérifier la présence de duplicatas distants (via SHA1) − expliqué sur commons:Commons:Guide_to_batch_uploading
 * Auto-complétion à partir des catégories déjà existantes sur le wiki (utiliser AJAX)
 * Marquer les images uploadées dans digiKam via un tag
 * ✅ Modification en masse des information d'upload des images via une sélection multiple
 * Ajouter le nom du wiki sur lequel on est actuellement connecté (avec la favicon ?)
 * Autoriser le redimensionnement par un pourcentage de la taille initiale
 * Permettre d'ajouter des licences comme on ajoute des wikis
 * Permettre de modifier et de supprimer des licences et wikis de la liste

À long terme (idées)

 * Changer le nom du plugin en MediaWiki uploader (le plugin est fait pour le logiciel MediaWiki, pas particulièrement pour Commons)
 * Ajouter un champ de notification qui affiche des avertissements (plusieurs fichiers ont le même nom, certains fichiers n'ont pas de catégorie ou de description, un fichier distant existe avec le même SHA1 etc.) mis à jour en temps à chaque modification et qui change de couleur comme dans GRAMPS

Compilation et installation
La liste des commandes à exécuter pour compiler et installer digikam est la suivante.

Pour récupérer digiKam : git clone git://anongit.kde.org/digikam-software-compilation digikam cd digikam ./download-repos

Pour récupérer le code Kipi modifié par les étudiants : cd extra/kipi-plugins git remote add github git://github.com/peter17/kipi-plugins.git git pull github master

Pour compiler / builder : mkdir build cd build export CMAKE_MODULE_PATH=/usr/lib/kde4/ export CMAKE_PREFIX_PATH=/usr cmake -DCMAKE_BUILD_TYPE=debugfull -DCMAKE_INSTALL_PREFIX=/usr .. make sudo make install

Pour les mises à jour : ./gits pull cd build make su make install

Commentaires
En pratique, l'installation de digikam par cette méthode suffit pour le développement du plugin mediawiki ; en effet, la commande  clone les dépôts correspondants. Il n'est donc probablement pas nécessaire d'installer libmediawiki ni kipi-plugins séparément. Cependant, comme j'ai fait successivement les trois étapes, je les écris toutes ici, au cas-où.

Je n'ai pas encore réussi à lancer le plugin mediawiki. Peter17 (talk) 17:24, 20 February 2012 (UTC)


 * Sur Kubuntu, la compilation de digikam se passe bien. J'ai pris le source directement à partir de dêpot git://anongit.kde.org/digikam-software-compilation. J'ai réussit à compiler digikam 2.6.0 avec tous les plugins. Je n'ai pas essayé le plugin mediawiki. Je l'ai fait avec le script perl ./download-repos et non pas séparement (c'est-à-dire compiler le libmediawiki, après compiler le kipi-plugins et finallement le digikam). Bien sûr, il faut s'assurer que vous avez toutes les dependences pour le digikam. Vous pouvez les installer, soit par le packet manager de Kubuntu(apt-get) soit par compilation à la main. Les dependeces sont decrites sur le site officiel de digikam. Ilko (talk) 12:09, 25 February 2012 (UTC)


 * La compilation a fonctionné sous Mandriva 2011 et le plugin fonctionne à peu près.
 * Je n'arrive pas à me logguer à Commons. Par contre, le login et l'upload fonctionnent avec http://test.wikipedia.org/w/api.php
 * Mon test : http://test.wikipedia.org/wiki/File:Saint-Vallier-gare.jpg
 * Problème : modifier le code source, recompiler et réinstaller ne modifie pas le plugin !
 * Peter17 (talk) 10:38, 14 March 2012 (UTC)


 * Le problème précédent est dû au fait que digiKam et ses plugins sont par défaut installés dans /usr/local/lib/kde4 et pas dans /usr/lib/kde4
 * J'avais un conflit entre deux installations : modifier le code source modifiait le plugin installé dans /usr/local/lib/kde4 mais c'était le plugin installé dans /usr/lib/kde4 qui était utilisé. Comme je ne sais pas comment forcer KDE à utiliser un dossier plutôt que l'autre, j'ai mis à jour les instructions de compilation pour forcer l'installation dans /usr/lib/kde4.
 * Je vous conseille de faire un  puis de recompiler et réinstaller le tout. Tout marche bien pour moi à présent.
 * Je peux maintenant me logguer sur WP:fr et Commons.
 * Les modifications que j'ai apportées au plugin m'ont permis de faire un import avec un wikitexte correct : http://test.wikipedia.org/w/index.php?title=File:Saint-Vallier-gare3.jpg&action=edit
 * J'ai créé un repo GitHub et fait un premier commit contenant ces modifications. Il vous sera peut-être plus facile de forker ce repo depuis l'interface de GitHub que d'en créer un vous-même avec git... : https://github.com/peter17/mediawiki-kipi
 * Bon courage ! Peter17 (talk) 13:28, 21 March 2012 (UTC)

Autres notes
J'ai forké la librairie kipi-plugins, en créant un dépôt GitHub (page utilisateur -> « new repository ») puis en me plaçant dans, j'ai fait : git remote add github git@github.com:peter17/kipi-plugins.git
 * À titre indicatif

Vous devez faire les opérations suivantes : git remote add peter git@github.com:peter17/kipi-plugins.git git remote add github git@github.com: /kipi-plugins.git git pull peter master git push github master git pull origin master git push github master
 * Ce que vous devez faire
 * Vous rendre à la page https://github.com/peter17/kipi-plugins et cliquer sur « Fork »
 * Saisir dans  :
 * Saisir dans  :
 * Lorsque je fais des modifications :
 * De temps en temps :

Explications :
 * Le dépôt origin est git://anongit.kde.org/kipi-plugins
 * Le dépôt peter est git@github.com:peter17/kipi-plugins.git (mon dépôt)
 * Le dépôt github est git@github.com: /kipi-plugins.git

Les commandes pull et push de git permettent de copier, fusionner et envoyer les commits sur le dépôt distant. Git devrait gérer cela sans trop de problèmes. Les informations ci-dessus sont récapitulées par la commande : git remote -v

N'hésitez pas à poser des questions ici ou par courrier électronique. N'attendez pas d'être perdus !

Quelques conseils en vrac, pas utile maintenant mais pour les avoir sous la main si nécessaire :
 * peut-être se présenter sur la page du rapport de bug et les listes de diffusion, pour expliquer ce que nous voulons faire et obtenir des conseils ?
 * peut-être installer un wiki à nous où faire nos tests ?

Personnes ressources :
 * Gilles Caulier (développeur principal (lead developer) de digiKam)
 * Guillaume Paumier (employé de la Wikimedia Foundation)

GitHub dépôt de projet

 * https://github.com/NathanDM/kipi-plugins

Liens utiles

 * digiKam
 * KIPI plugins (Archive)
 * Guillaume's old roadmap
 * http://www.gpaumier.org/blog/297_digikam-the-perfect-tool-for-wikimedia-commons-photographers/ (description du projet)
 * https://projects.kde.org/projects/extragear/libs/libmediawiki (librairie KDE/MediaWiki)
 * http://community.kde.org/IUP_ISI/MediaWiki-Silk : documentation du projet réalisé par les étudiants de l'IUP-ISI; inclut une vision du projet
 * https://bugs.kde.org/show_bug.cgi?id=206842 (description de l'état d'avancement du projet, rapport de bug ouvert par Peter en 2009).
 * http://websvn.kde.org/branches/work/~cgilles/wikimedia/ (état du code source en 2009)
 * https://projects.kde.org/projects/extragear/graphics/kipi-plugins/repository/revisions/master/show/mediawiki (état actuel du code source)
 * http://mail.kde.org/pipermail/digikam-users/2011-May/013074.html (liste de diffusion de digikam)
 * http://mail.kde.org/pipermail/digikam-users/2011-November/015154.html (liste de diffusion de digikam)
 * https://svn.wikimedia.org/viewvc/mediawiki/trunk/extensions/UploadWizard/ (interface d'import actuelle de Commons)