Categories
Programming Python

Refonte de pyAggr3g470r

pyAggr3g470r évolue de manière quasiment continue depuis janvier 2010 avec l’apparition de nouvelles fonctionnalités (utiles, ou pas) ou améliorations. Développé pour mes besoins. D’où son interface pas très sexy et un peu statique. Après plus de trois années d’utilisation et près de 70.000 articles récupérés, je trouve son utilisation toujours aussi satisfaisante.

Au départ CherryPy était utilisé avec une base SQLite et un petit fichier de configuration pour la liste des flux à surveiller. Rapidement il a fallut utiliser un autre système de base de données, j’avais choisi MongoDB (avec pymongo). Parallèlement j’ai testé diverses fonctionnalités (pas forcément à valeur ajouté) comme la détection de langue, l’export des articles vers différents formats, proxy, notifications par email, recherche indexée, etc. Bref, je me suis bien amusé avec un programme très certainement seulement utile pour moi.

En dépit de tout ceci, l’idée d’une refonte plus profonde (voir un fork) me reste à l’esprit depuis un certains temps. pyAggr3g470r me satisfait globalement et j’ai donc pris mon temps pour réfléchir si le travail qu’implique une vraie refonte serait valorisé. Et si je recommence pyAgg3r470r il faut évidemment utiliser des technologies plus modernes, essayer d’avoir un code beaucoup plus propre et simple à maintenir. Et pourquoi pas une interface un peu plus actuelle. Sur ce point ça tombe bien, dans un contexte professionnel j’ai récemment découvert Bootstrap. Parfait pour quelqu’un comme moi qui ne veut pas se prendre la tête avec du CSS et Javascript. Mais on ne va pas s’arrêter à changer uniquement les templates. On va aussi utiliser un ORM (une couche au-dessus de pymongo), MongoEngine. À ce stade là, on peut remplacer CherryPy par Flask qui est un peu plus à la mode. J’ai découvert Flask grâce au service Heroku il y a quelques temps et ma de suite intéressé (surtout à cause de son minimalisme et de toutes les extensions qu’offre la communauté). Et donc je m’y suis mis.

Voici le résultat en avant première. C’est vraiment en avant première évidemment. Les fonctionnalités de bases fonctionnent mais ne sont pas encore assez testés. Si vous voulez tester, demandez moi un compte utilisateur (pyAggr3g470r gère enfin proprement plusieurs comptes) et soyez indulgents (ou contribuez). Grâce à Bootstrap l’interface s’adapte très bien aux grands écrans comme aux écrans de smartphones. Il faut encore que je m’améliore avec MongoEngine, j’ai l’impression d’avoir perdu en performance à certains niveaux (je teste avec environ 70.000 articles).

Pour le moment je suis satisfait de cette décision.

Pour information, cette instance de pyAggr3g470r fonctionne sur le service IaaS de Numergy. Vous pouvez tester gratuitement pendant deux mois.