Weboob : une version 1.1 pour son sixième anniversaire

Logo

Weboob (Web Outside Of Browsers) est une bibliothèque et un ensemble d’applications interagissant avec des sites web.

Plus d’un an après la sortie de la première version stable de weboob, nous sommes heureux de vous annoncer la sortie de weboob 1.1.

Pour rappel, weboob est une bibliothèque permettant d’accéder à près de 200 sites web en ligne de commande ou avec des applications graphiques spécialisées.

Débuté par un simple script permettant d’automatiser certaines actions sur un célèbre site de rencontre, c’est désormais une communauté conséquente (plus de 100 contributeurs depuis le début du projet), qui maintient quotidiennement l’ensemble des modules.

Depuis toutes ces années, weboob est devenu un hub interopérable permettant à de multiples applications de récupérer, croiser et présenter des données issus de sites tiers. Tant et si bien, qu’il est fort possible que vous ayez déjà utilisé weboob sans le savoir au travers des entreprises suivantes : Cozycloud, Budget Insight, Winancial, ou d’autres projets libres : Skrooge, Kmymoney, GTranslate, Gnome Shell, un greffon pour XMBC/Kodi, Kresus, hinance.

La nouvelle version 1.1 est exceptionnelle pour le projet. Le cycle de développement a duré plus d’un an (contre une moyenne entre 3 et 4 mois habituellement), et cette version inclut donc plus de 1200 commits écrits par 35 contributeurs. S’il n’y a pas de fonctionnalité impressionnante à mettre en avant, les changements sont très nombreux et cette dépêche se propose d’en évoquer quelques-uns.

Sommaire

Nouveautés depuis la 1.0

Cap sur le patrimoine

La récupération d’informations bancaires est une des premières fonctionnalités de weboob, et probablement la plus populaire en France. Il s’agit également de la capability la plus stable, de part les contributions importantes de Budget Insight (qui représentent 58% des commits de cette version).

Si tous les modules permettent depuis longtemps la récupération des comptes simples (comptes courants, comptes sur livret), seuls quelques modules permettaient de récupérer des informations plus détaillés sur des comptes financiers plus complexes (comptes titres et PEA, assurance vie, etc.). Cette fonctionnalité est désormais présente sur plus d’une dizaine de modules, et cette diversification a permis également d’améliorer la qualité des outils l’utilisant (meilleur affichage dans l’application boobank, meilleure documentation des champs récupérés, etc).

Des modules permettant de gérer des cartes de crédits (surtout pour les USA, avec notamment les cartes Amazon Store et Victoria’s Secret) ont également fait leur apparition. Ces modules ont conduit à l’ajout de nouveaux attributs pour les comptes, comme la date du prochain paiement pour la carte de crédit, le montant minimal de paiement et la limite de crédit.

Enfin, l’épargne salariale se retrouve renforcée dans weboob avec le module s2e qui permet d’accéder aux informations des sites Esalia, Capeasi, BNP Épargne entreprise et HSBC Épargne entreprise.

Une commande « weboob »

La diversité des interactions possibles avec les sites web a conduit au développement de nombreuses applications (44 actuellement) dans le cadre de weboob. Leurs noms ne sont pas toujours simples à retenir, et il est courant pour un nouvel utilisateur d’installer Weboob puis de se demander quoi faire pour l’utiliser.

Dans le but d’améliorer cette première approche, une commande « weboob » permet à présent d’accéder facilement aux applications disponibles pour exploiter une capability (un ensemble de fonctionnalités communes, respectant une interface définie). Par exemple, weboob bank lancera boobank, et weboob video offrira le choix entre qvideoob et videoob. De plus, l’application permet de lister les capabilities disponibles.

Shopoob

En parlant d’applications et de noms à retenir, une nouvelle application a été ajoutée : [shopoob], vous permettant de lister et extraire vos commandes de sites marchands. Vous pouvez ainsi accéder au site d’Amazon, d’ideel, de MyHabit et de Victoria’s Secret.

Exemple d'utilisation de shopoob avec Amazon

Du côté des développeurs

Asynchrone

Le support des requêtes asynchrones a été ajouté au Browser.

Concrètement, cela permet de faire des requêtes HTTP sans bloquer l’exécution, dans le but d’en faire plusieurs en parallèle. Pour cela, on utilise le module concurrent.futures backporté de Python 3. Le nombre de requêtes exécutées en parallèle peut être limité afin de ne pas surcharger le serveur distant.

Plusieurs modules utilisent déjà la fonctionnalité, notamment pour aller sur toutes les pages de détail d’une liste (ce qui est d’autant plus facilité par le filtre AsyncLoad). Le parcours en est devenu significativement plus rapide.

L’utilisation est très simple, au lieu de :

page = browser.open(...)

On peut faire :

page_future = browser.async_open(...)
page = page_future.result()

Seul l’appel à result() est bloquant. Il est aussi possible de fournir un callback.

Quand on utilise les filtres, on peut faire :

class iter_list(ListElement):
class item(ItemElement):
load_details = Link(...) & AsyncLoad # URL de la sous-page à charger
obj_truc = Async('details') & CleanText('./p[@class="truc"]') # le filtre CleanText sera appliqué sur la sous-page récupérée

Des outils pour les API

Avec l’avènement des frameworks JavaScript tels que backbone.js ou angular.js, de plus en plus de sites web sont construits sous une forme d’API renvoyant du JSON. De même, beaucoup disposent d’applications mobiles qui interagissent avec une API.

Même si ça constitue une avancée inconsciente en terme d’accès aux données, puisqu’elles sont récupérées sous forme structurée, cela n’enlève pas l’intérêt de weboob, qui est d’agréger les informations depuis plusieurs sources et de les renvoyer dans un modèle de données unifié.

De fait, une classe APIBrowser a été rajoutée, ainsi que des filtres permettant de parser le JSON de façon similaire aux filtres CSS ou XPath.

Persistance des sessions

Les modules peuvent désormais sauvegarder leur état (page courante, cookies, ou plus si le module décide d’étendre le mécanisme) afin d’éviter de repasser par l’étape de connexion à chaque lancement. La fonctionnalité est encore à un stade expérimental, les modules devant être vérifiés auparavant.

L’intérêt initial était de permettre au module Boursorama de conserver le cookie validant l’authentification à deux facteurs (par confirmation SMS) imposée lors d’une connexion depuis un nouveau lieu.

Futur

La version 1.1 est la dernière à supporter Python 2.6. En effet, cette version est de plus en plus rare et est rarement testée. Cela permettra aussi d’améliorer la compatibilité avec Python 3.

La prochaine version 1.2 devrait sortir dans deux ou trois mois, de beaux changements sont déjà intégrés dans la branche de développement, notamment le portage à Qt5 de toutes les applications graphiques.

Soirée Weboob

Cela fait maintenant six ans que Weboob existe, et nous organisons comme il se doit une soirée pour réunir les membres de la communauté. Elle aura lieu lundi 15 février 2016 au Hall’s Beer Tavern, à Paris. Plus d’informations sur l’agenda du libre.

Gâteau des cinq ans de weboob

Contributeurs

Merci aux contributeurs qui ont participé à cette version :

  • Alexandre Morignot
  • Baptiste Delpey
  • Benjamin Bouvier
  • Benjamin Carton
  • Caram Dache
  • Cédric Félizard
  • Christophe Lampin
  • Florent Fourcot
  • Grant Tzabro
  • Guilhem Bonnefille
  • James Galt
  • Jean-Philippe Dutreve
  • Johann Broudin
  • juliaL03
  • Julien Veyssier
  • Laurent Bachelier
  • Loic Bontonou
  • Lucas Nussbaum
  • Matthieu Weber
  • Mickaël Thomas
  • Mr Tchuss
  • nojhan
  • Oleg Plakhotniuk
  • P4ncake
  • Pierre-Louis Bonicoli
  • Pierre Mazière
  • Raphaël Rigo
  • Roger Philibert
  • Romain Bignon
  • RouxRC
  • Samuel Loury
  • Simon Muraïl
  • Vincent A
  • Vincent Paredes
  • Vincent Texier

Weboob est un projet qui grossit et qui vit grâce à ses contributeurs. Si vous souhaitez l’améliorer, que vous connaissiez le Python ou pas, n’hésitez pas à contribuer.

Lire les commentaires

(Source: LinuxFr.org : les dépêches)