URL: https://linuxfr.org/news/weboob-atteint-la-maturite Title: Weboob atteint la maturité Authors: Florent Fourcot ZeroHeure, Benoît Sibaud et palm123 Date: 2014年11月13日T09:45:57+01:00 License: CC By-SA Tags: weboob, agenda_du_libre, debian et cozycloud Score: 38 [Weboob](http://weboob.org/) (_Web Outside Of Browsers_) est une bibliothèque et un ensemble d'applications interagissant avec des sites web. Plus de quatre ans après le premier _commit_, nous avons le plaisir d'annoncer la sortie de la première version stable de Weboob ! En plus de présenter les nouveautés, cette dépêche profite de cette version pour faire un rapide retour sur l'historique et l'évolution du projet. ---- [Site web](http://weboob.org/) [Liste complète des changements](http://weboob.org/news) [Planet Weboob](http://planet.weboob.org/) [Documentation développeur](http://dev.weboob.org/) [Association Weboob](http://association.weboob.org/) ---- # Le nouveau _browser_ Comme nous l'expliquions dans la [dépêche précédente](http://linuxfr.org/news/0-joie-une-nouvelle-version-de-weboob), cette annonce de première version majeure est l'aboutissement de notre projet de refactorisation de code. Afin de rendre plus aisé le support de sites web par Weboob, le projet fournit de nombreux outils, dont une bibliothèque qui simule le fonctionnement d'un navigateur. Depuis quelques versions, cette bibliothèque a été réécrite sous le nom de "Browser2" puis tout simplement "le nouveau _browser_" (navigateur). Celui-ci est prêt à l'utilisation, et suffisamment abouti pour que son API reste stable durant la durée de vie de la branche 1.x. Nous nous autorisons des ajouts, mais l'existant ne sera pas modifié. Ce nouveau _Browser_ et les outils associés sont l'une des forces du projet : le _scraping_ (extraction de contenu) est souvent une tâche répétitive, mais Weboob fait tout pour atténuer ce problème. Nous pensons que le projet a maintenant atteint un niveau de maturité lui permettant d'honorer cette promesse. Avec tous les outils du _browser_ (ListElement, filtres, pagination, formulaires, etc.), un module peut ne prendre que quelques lignes de code. # Retour sur l'origine du projet En 2008, un [petit script Python](https://symlink.me/projects/aum/wiki) utilisant [mechanize](http://wwwsearch.sourceforge.net/mechanize/) et [html5lib](https://github.com/html5lib/html5lib-python) a vu le jour, écrit par un utilisateur d'un site de rencontres français bien connu, et dont l'objet était de remplacer l'interface web sur fond rose par son [MUA](https://fr.wikipedia.org/wiki/Client_de_messagerie) pour échanger avec ses contacts. Très vite, il renouvela l'expérience avec un autre script pour récupérer automatiquement son solde et ses relevés depuis le site de sa banque. Lorsque, début 2010, il lança le projet _dlfp2mail_, il se rendit compte de la possibilité d'appliquer la méthode à bon nombre d'autres sites web, et chercha à factoriser le code au sein d'un même et unique projet. Weboob était né. Ainsi que ceux qui jasent sur le nom l'ignorent, il était initialement prévu de l'appeler _woob_. Ce n'est que lorsqu'on [constata qu'il existait déjà un autre logiciel portait déjà ce nom](http://people.symlink.me/~rom1/projects/weboob/weboob.txt) qu'il fut décidé de le renommer _weboob_. Les concepts fondateurs furent rapidement posés : * séparation entre les modules interagissant avec les sites et les applications ; * système de _capacités_ que chaque module peut implémenter ; * bibliothèque utilisable par des applications tierces. Le projet s'est depuis enrichi d'un [navigateur puissant](https://linuxfr.org/users/moules/journaux/browser-2-teaser) (remplaçant _mechanize_ par _requests_) pour le parcours et l'analyse lexicale des pages, d'un [système de dépôts](https://linuxfr.org/users/moules/journaux/r%C3%A9volution-dans-la-gestion-des-modules-weboob) pour les modules, de classes _helper_ pour résoudre les claviers virtuels, etc. # 37 capacités Les capacités sont des interfaces permettant aux applications d'interagir avec les sites Web, de façon unifiée. Par exemple, la capacité bancaire offre la possibilité de lister les comptes, obtenir l'historique des transactions, faire des virements, etc. De leur côté, les modules implémentent une ou plusieurs de ces capacités (parfois partiellement uniquement, notamment si le site n'a pas la fonctionnalité). Les applications ont donc des interfaces unifiées et stables pour interagir avec tous les sites d'une catégorie, et non pas avec un seul site bien particulier. C'est une grande différence avec les nombreux scripts d'extraction de contenu individuels pouvant se trouver sur Internet : on accède à tous les sites permettant de télécharger des vidéos d'une manière unique, à tous les sites bancaires en une seule requête, etc. La diversité des fonctionnalités des sites Web se retrouve en partie chez Weboob : nous proposons actuellement 37 capacités différentes, à comparer avec les 172 sites dont Weboob permet l'accès. # Utilisations tierces Le projet Weboob fournit des [applications basiques](http://weboob.org/applications/) pour interagir avec les sites. Ces applications permettent d'effectuer des requêtes complexes (avec notamment un système de filtres sur les résultats), et permettent déjà de nombreuses interactions. Notre objectif n'est cependant pas de remplacer les applications existantes : nous n'allons pas créer un nouveau gestionnaire financier personnel dans Weboob. De très bons logiciels libres existent déjà pour celà. De même pour les lecteurs vidéos. Nous mettons donc l'accent sur l'export des données en formats utilisables par tous, ainsi que sur l'utilisation de Weboob en tant que bibliothèque dans les projets. Cette méthode a particulièrement bien fonctionné pour les applications bancaires, mais aussi pour des usages plus inattendus. On peut citer à la fois des entreprises ([Cozycloud](https://www.cozycloud.cc/), [Budget Insight](https://www.budget-insight.com/), [Winancial](http://www.winancial.com/)) que des projets communautaires : [Skrooge](http://linuxfr.org/news/skrooge-1-8-0-est-sorti), [Kmymoney](http://kmymoney2.sourceforge.net/index-home.html) (nous essayons de faire intégrer un [patch upstream](https://git.reviewboard.kde.org/r/120339/)), [GTranslate](http://www.hauweele.net/~gawen/blog/?p=27), [Gnome Shell](https://github.com/guyou/videoob-search-provider), un plugin pour [XMBC/Kodi](http://kodi.tv/)... # Nouveautés depuis la 0.j Pour revenir sur les actualités de la 1.0, le temps de développement de cette version a été assez court. Notre objectif ([réussi](https://packages.qa.debian.org/w/weboob.html)) étant une migration de la version 1.0 dans Debian testing avant le gel. Il n'y a donc eu que six (intensives) semaines entre la 0.j et la version 1.0. On peut cependant noter que la capacité permettant de consulter des annonces immobilières (CapHousing) a été améliorée. Les annonces immobilières du site [Leboncoin](http://leboncoin.fr) ont notamment été ajoutées. Du côté des applications, une nouvelle option de filtre (_LIMIT_) est disponible en ligne de commande. Elle permet de limiter la profondeur des recherches des requêtes utilisant le moteur de condition. Concernant les modules, on peut noter un second module pour une banque américaine ([Citibank](https://online.citibank.com)). Du côté plus francophone, des modules pour suivre [l'agenda du libre](http://www.agendadulibre.org/), pour [suivre les marées](http://maree.info/) et une [nouvelle application de rencontres](http://goplayme.com/). Enfin, sous le capot, nous avons profondément changé les API et les noms internes des objets. Nous voulions le faire pour présenter une interface cohérente pour la version 1.0. Dans ce cadre, l'utilisation de l'ancien _Browser_ est désormais signalée comme obsolète. Un nouveau niveau de debug fait son apparition pour le nouveau _Browser_, permettant un suivi fin des appels sur les filtres. # Communauté Depuis quatre ans, ce sont pas moins de 88 [contributeurs](https://www.openhub.net/p/weboob/contributors/summary) qui ont participé à Weboob : Adrien Kunysz, Ahmed Boussadia, Alexandre Bonhomme, Alexandre Flament, Alexandre Franke, Alexandre Lissy, Antoine, Arno Renevier, Benjamin Carton, Benjamin Drieu, BohwaZ, Camille Baldock, Camille Dehecq, Cedric Defortis, Christophe Benz, Christophe Gouiran, Christophe Lampin, Clément Schreiner, Clément Calmels, Damien Cassou, David Jeanneteau, Erwan Jahier, Etienne Carriere, Fabien Grumelard, Florent Fourcot, François D., François Revol, Gabriel Serme, Gabriel Kerneis, Gilles Quenot, Grmbl Frechneu, Hervé Werner, Jean-Benoist Leger, Jean-Christophe Dubacq, Jean-Philippe Dutrève, Jerem, Jeremy Monnet, Jérôme Poisson, Jocelyn Jaubert, Johann Broudin, John Morrow, Julia Leven, Julien Hebert, Julien Veyssier, Juliette Stehlé, Kevin Pouget, Laurent Bachelier, Laurent Dufréchou, Laurent George, Loic Bontonou, Luc Didry, Lucas Nussbaum, Lucien Loiseau, Mathieu Jourdan, Mathieu Lordon, Matthieu Rakotojaona, Michael Scherer, Nicolas Duhamel, Noé Rubinstein, Oleg Plakhotniuk, Olivier, Olivier Schwander, Philippe Fremy, Pierre Mazière, Raphaël Rigo, Richard Genoud, Roger Philibert, Romain Bignon, Romain Garbage, Ryan Nowakowski, Samuel Loury, Sébastien Monel, Simon Murail, Stefano Zacchiroli, Tanguy Ortolo, Tens San, Thomas Lecavelier, Vicnet, Vincent A, Vincent Paredes, Vincent Texier, Willy Villard, Xavier Guerrin, Yann Rouillard, ianux, leto, theocrite Nous remercions également pour cette version les étudiants de l'Université de Lille 1, qui ont ajouté des tests dans le cadre d'un projet d'étude. [Weboob](http://weboob.org) 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](http://dev.weboob.org/guides/contribute).