Mon cahier des charges

Et là pour le coup, des applis web pour publier des photos, y’en a vraiment des pelletés sur Internet… Mais bon, voilà, c’est fait, au moins celle-là elle correspond à 100% de mes besoins, qui étaient les suivants :

  • jolie
  • légère et rapide
  • je ne dois pas à avoir à faire plus que d’envoyer un dossier avec des photos sur un espace web.
  • pouvoir afficher les photos en miniatures et en grand
  • avoir la possibilité de verrouiller un dossier de photos par un mot de passe
  • pouvoir publier aussi des vidéos

Et c’est tout, le reste des fonctionnalités classiques de ce genre d’outil sont inutiles pour moi (commentaires, notations, etc.)

J’ai aussi besoin de pouvoir créer des albums, exit donc le fameux service hébergé Flickr, qui ne propose ça que pour les comptes payants.

Briques

Je n’ai tout de même pas tout développé à partir de rien. Pour l’affichage des photos en miniature et en grand, je cherchais quelquechose du genre de Lightbox. C’est très joli, dynamique, et s’appuie sur des pages standards. Ça me plaît. Mais ça ne permet pas d’afficher des vidéos. Heureusement, un clône de Lightbox, Shadowbox, fait ça sans problème. En plus, c’est sous licence libre (LGPL). Que demande le peuple ?

EDIT: Shadowbox n’est plus libre dans les versions récentes :( Je passe donc à prettyPhoto, mais le principe reste le même.

Mon petit développement

Le peuple, il demande un générateur d’index qui prépare la page de miniatures, avec les bons liens comme il faut pour que ShadowBox se lance. Et le peuple, il voudrait aussi un moyen de générer les miniatures automatiquement. Il est exigent, le peuple.

Voilà donc ce que j’ai fait, j’ai écrit deux scripts :

  • un en PHP pour générer les pages web
  • un en python pour fabriquer les miniatures

L’index web

Le script PHP exploite les possibilités offertes par la directive “DirectoryIndex” d’Apache. Cette directive est communément utilisée pour dire que l’appel d’un répertoire dans l’URL se traduit par l’appel d’un fichier index.html ou index.php à l’intérieur de celui-ci. Mais on peut mettre bien plus qu’un nom de fichier, en fait on peut même mettre une URL relative ou absolue qui pointe vers un script. Et c’est ce script qui sera utilisé pour fabriquer l’index du répertoire. Pile-poil ce qu’il me faut !

Le générateur de miniatures

Il s’agit là d’un script python qu’on passe sur un répertoire contenant des photos ou des vidéos, et qui créé les miniatures pour ces éléments. Il recompresse et redimentionne aussi les photos. Et il convertit les vidéos en FLV[1] pour lecture dans le navigateur. Et il peut même renommer les photos pour leur donner un nom cohérent auto-incrémenté.

Récupérez-le

J’ai placé tous ces développements sous licence Affero GPL v3, qui est la GPL des applications web : si vous modifiez le code et que vous utilisez cette application sur le web, alors vous devez fournir vos modifications.

Si vous êtes intéressé, voici le code : photo-imp-latest.tar.gz.

L’archive contient un fichier README avec les instructions.

Et bien sûr, mes photos, qui constituent un bon site de démo.

Si vous avez des idées de développement et de fonctionnalités, je suis preneur, bien que je ne garantisse pas que je passerais beaucoup de temps dessus, vu qu’à l’origine il s’agit d’un besoin personnel. Maintenant bien sûr, si vous avez une contribution, je ne vais pas refuser… ;-) Si vous trouvez des bugs, ça m’intéresse aussi.

Et si vous voulez suivre le développement de l’outil, c’est possible en passant par Git et en utilisant le dépôt hébergé sur Gitorious. L’historique est visible dans le fichier ChangeLog.

Si vous décidez de l’utiliser, laissez-moi un message, ça me fera plaisir de savoir que ça vous a été utile ! :)

AGPL

Notes

[1] Acronyme de Flash Video, un format ouvert et lisible par Gnash.