Également appelés Snapshots, les thumbnails sont des impressions-écran de votre site web, généralement affichés sous forme de vignettes. Je les utilise notamment sur les fiches des blogs, sur Blogonet. Souhaitant être indépendant, j’ai décidé de développer mon propre programme, qui se charge de les générer automatiquement.
Vu que cela semble susciter beaucoup de questions, je dévoile ici mon secret. Et quel secret ! Alors, comment prendre une impression-écran de manière automatique, avec un script ? La réponse est simple : vous ouvrez votre navigateur, vous affichez la page désirée, et vous prenez une impression écran. Le tout avec un script, bien entendu.
Par là, je veux dire que je n’ai pas inventé la poudre. Vous savez le faire manuellement, la manière de procéder est exactement la même. Les programmes sont juste lancés par un script. Par contre, c’est bien plus problématique au niveau des contrôles :
- Les navigateurs ne fournissent aucun moyen de vérifier que le chargement de la page est bien terminé. Une solution est de fixer un délai, par exemple 10 secondes, mais ça reste très crade : si la page est chargée en 2 secondes, c’est une perte de temps ; si elle a besoin de 20 secondes, l’impression-écran ne sera pas bonne. Une autre idée : se baser sur une analyse réseau. Mais avec plusieurs tâches en parallèle, ce n’est pas évident.
- Si le navigateur n’affiche pas la bonne page, ou si, pour une raison ou une autre, il reste bloqué sur l’onglet précédent, l’impression-écran ne captura pas le site désiré. Afficher le thumbnail de Presse-Citron à la place de celui de Fubiz est assez problématique… Et pourtant, c’est ce qu’il s’est passé sur Blogonet ces derniers jours ! D’ailleurs, ce n’est pas le seul, j’estime ce genre d’erreurs à 1% actuellement. Beaucoup trop.
Bien que le principe soit simple, contrôler des logiciels graphiques via un script n’est pas évident pour autant. Pour commencer, aucun écran n’est installé sur nos serveurs (sauf cas de force majeur, quand nous sommes sur place) : cela nous oblige donc à installer un serveur X sur une sortie virtuelle. Et même sur plusieurs, pour prendre plusieurs screenshots en parallèle. C’est buggé, il s’emballe assez régulièrement (toutes les 12 heures environ). C’est buggé, il s’emmêle parfois les pinceaux entre les différentes interfaces. C’est buggé.
Soit je laisse tombe l’idée du navigateur, et me tourne vers une solution utilisant directement webkit. Cela posera problème pour les sites utilisant massivement Javascript ou Flash. Soit je me tourne vers un service externe, spécialisé dans le domaine : ils ont plus de ressources à y allouer, leurs machines ne font que ça. Reste à trouver le service idéal, les limitations de websnapr étant trop fortes pour notre besoin.
Des suggestions ?