Le Projet

Voilà qu'après 9 ans, 2 mois et 24 jours (soit 291 427 200 secondes), je relance Shaarlimages, la galerie des shaarlis.

Pourquoi ?

  1. parce que j'utilise toujours l'excellent Shaarli ;
  2. parce que j'avais la nostalgie du projet ;
  3. parce que j'en avais envie ☺

Plus sérieusement, quand je vois le nombre d'images "perdues" depuis 2013 (tout ce qui a été partagé à un moment donné, et que depuis, cette ressource n'est plus disponible), je voulais un endroit où les images partagées par la communauté soient persistées : une sorte de musée.
Alors je sais bien que j'ai moi-même contribué à ces pertes puisque je n'ai plus renouvelé le nom de domaine du projet après 2014.

Dorénavant, Shaarlimages est hébergé chez PythonAnywhere (lien d'affiliation, si ça peut aider à payer les frais…) : ils sont sérieux et corrects sur les prix. J'ai deux sauvegardes sur deux ordinateurs différents et chacun de vous peut avoir une copie grâce aux différents flux RSS. Le musée semble avoir un avenir tranquille.

Pour information, au 2023-11-03, Shaarlimages c'est :

  • 4 844 images uniques ;
  • 177 shaarlis indéxés contenant au moins une image (sur un total de 610 instances répertoriées) ;
  • 3,2 Go d'espace de stockage ;
  • 123,24 €/an (soit 10,27 €/mois) pour l'hébergement (PythonAnywhere) et le nom de domaine (Infomaniak).

La synchronisation des instances Shaarli et des images se fait tous les jours via un job cron. Si une instance disparait/réapparait du jour au lendemain, elle sera ignorée ou prise en compte automatiquement. Idem pour les liens partagés : si un lien pointant vers une image est temporairement indisponible, et que le lendemain (ou plus tard) c'est corrigé, alors l'image sera téléchargée dès la synchronsation suivante.

Les instance shaarlis sont récupérées depuis cette source.

Dernier point, puisqu'on parle de persistance et de longue durée de vie, les liens de chaque image sont uniques et immutables.

API

Le site web tient dans ces quelques URL.

Les galeries :

Fichiers :

Flux RSS (les liens sont trouvables en haut à droite du site web, en cliquant sur "images") :

Nouveautés

Le premier gros morceau, technique, c'est la conversion du projet depuis PHP vers Python. Tout simplement parce que mes connaissances PHP laissent grandement à désirer ces dernières années, et que j'ai plus de facilité avec Python. Ça joue notamment au niveau des tests : là où l'ancienne version n'en avait aucun, le code est couvert à 100% maintenant.

Ensuite, j'ai totalement revu l'affichage de la galerie. Le code est plus simple, plus court, et mieux (évidemment). Le système de partition linéaire a été chamboulé du tout au tout, pour le mieux (toujours).

Finalement, certains sites web bénéficient d'un traitement spécifique afin de pouvoir récupérer plus d'images. C'est le cas, par exemple, pour Astronomy Picture of the Day, Webb Space Telescope ou encore CG Society, entre autres.

Types d'Images

(Au 2023-10-30.)

Formats supportés :

  • JPEG (extensions .jfif, .jpeg, .jpg, .pjp, .pjpeg)
  • PNG (extension .png)
  • Webp (extension .webp)

Formats non supportés pour raisons techniques (redimensionnement, couleur dominante, poids, etc.) :

  • GIF
  • SVG
  • TIFF

Wayback Machine

En cas d'image introuvable, l'utilisation de la Wayback Machine peut venir en aide désormais, et ça fonctionne plutôt bien !

À titre d'exemple, lors de l'activation de cette fonctionnalité, la première synchronisation a pu récupérer 373 images qui avaient officiellement disparu de la circulation ; contre 740 perdues à jamais.

Partition Linéaire

Lors du chargement d'une page, les images ne sont pas affichées tout de suite, mais leur position et taille sont déjà prises en compte pour l'arrangement de la galerie.

Étape 1 : Des "cases" sont réservées avec, en couleur de fond, la couleur dominante de l'image qui sera accueillie.
Étape 2 : Les images visibles à l'écran sont téléchargées puis dévoilées avec un effet de fondu (fade in).

Aperçu statique :

Partition linéaire et chargement progressif

Ambiance

Sur le plan "ambiance", lorsqu'une image est affichée seule, j'utilise un mix pour définir la couleur de fond : la couleur dominante donne le ton, puis du grain est ajouté, ainsi qu'un "masque" en superposition. Lorsque l'image est totalement chargée, le couleur dominante est remplacée par un effet clair-obscur/lumière ambiante (ambilight en anglais).

C'est tout à fait magnifique, et dont voici un exemple :

Lumière ambiante