Woob (Web Outside of Browsers) is a library which provides a Python standardized API and data models to access websites.
There are three main concepts:
- Capabilities: Standardized interfaces to access specific kind of websites. It provides a unified API and standard datamodels;
- Modules: A module is dedicated to a specific website.
It can implement several capabilities. For example paypal module may
implement
CapBankto get bank informations,CapTransferto initiate a transfer,CapProfileto get information about the customer, andCapDocumentto get documents); - Backends: Modules can be loaded several times, with different configurations. For example, if you have two PayPal accounts, you can create two backends of the same module with different credentials.
The main Woob class allows configuration of new backends and does aggregated calls to
every backends loaded with a specific capability.
For example, once backends are loaded, you can call iter_accounts() and
you'll get accounts in the same Account data model for all backends
implementing CapBank:
>>> from woob.core import Woob
>>> from woob.capabilities.bank import CapBank
>>> w = Woob()
>>> w.load_backends(CapBank)
{'societegenerale': <Backend 'societegenerale'>,
'creditmutuel': <Backend 'creditmutuel'>}
>>> accounts = list(w.iter_accounts())
>>> print(accounts)
[<Account id='7418529638527412' label=u'Compte de ch\xe8ques'>,
<Account id='9876543216549871' label=u'Livret A'>,
<Account id='123456789123456789123EUR' label=u'C/C Eurocompte Confort M Roger Philibert'>]
>>> accounts[0].balance
Decimal('87.32')If you are looking for applications using the woob library, visit woob.tech.
Read this documentation.
More information about how to use woob at woob.dev.
If you want to contribute to woob (patch of the core, creating new modules, etc.), read this.
- #woob @ OFTC
- #woob @ matrix.org
