Python API voor de website mijn.bibliotheek.be
Project description
mijnbib
Python API voor (mijn.) bibliotheek.be
Met deze Python library kan je jouw ontleende items, reservaties en accountinfo opvragen indien je een account hebt op https://bibliotheek.be.
Installatie
Installeer via:
pip install mijnbib
Gebruik
Bijvoorbeeld, het opvragen van je ontleende items kan als volgt (na installatie):
from mijnbib import MijnBibliotheek
city = "gent" # jouw gemeente of stad
username = "johndoe"
password = "12345678"
account_id = "12345" # zie het getal in de URL, of via mb.get_accounts()
mb = MijnBibliotheek(username, password, city)
loans = mb.get_loans(account_id)
print(loans)
Voor een meer leesbare versie, gebruik pprint()
:
import pprint
pprint.pprint([l for l in loans])
[Loan(title='Erebus',
loan_from=datetime.date(2023, 11, 25),
loan_till=datetime.date(2023, 12, 23),
author='Palin, Michael',
type='Boek',
extendable=True,
extend_url='https://gent.bibliotheek.be/mijn-bibliotheek/lidmaatschappen/123/uitleningen/verlengen?loan-ids=789',
extend_id='789',
branchname='Gent Hoofdbibliotheek',
id='456789',
url='https://gent.bibliotheek.be/resolver.ashx?extid=%7Cwise-oostvlaanderen%7C456789',
cover_url='https://webservices.bibliotheek.be/index.php?func=cover&ISBN=9789000359325&VLACCnr=10157217&CDR=&EAN=&ISMN=&EBS=&coversize=medium')]
Voor meer voorbeelden, zie de code in de folder examples
.
Daarin wordt ook asdict
gebruikt voor conversie naar een dictionary.
Tenslotte, via de commandline kan je de module ook als volgt aanroepen:
python -m mijnbib loans
python -m mijnbib --help # om alle opties te zien.
Opmerkingen
Deze Python API haalt zijn gegevens via webscraping van de bibliotheek.be website. Daardoor is ze afhankelijk van de structuur van de website. Bij een wijziging aan de structuur van de website is het dus heel waarschijnlijk dat alle of bepaalde functionaliteit plots niet meer werkt.
In dat geval is het wachten tot deze Python library geupdate is om met de nieuwe structuur om te gaan.
Alternatieven
De Home Assistant plugin https://github.com/myTselection/bibliotheek_be scraped op een gelijkaardige manier de bibliotheek.be website.
Development
To install all dependencies for development, install (in a virtualenv) via:
python3 -m venv venv3x
. venv3x/bin/activate
pip install -e .[dev] # 'dev' is defined in pyproject.toml
Running the tests and applying code formatting can be done via:
make test
make black
To work around the challenge of testing a web scraper, the following snapshot testing approach can be used to get some confidence when applying refactoring:
- Create a file
mijnbib.ini
in the project root folder, and make it contain a section[DEFAULT]
holding the following parameters:city
,username
,password
andaccount_id
- Run
python tests/save_testref.py
to capture and store the current output (a couple of files will be created) - Perform refactoring as needed
- Run
pytest tests/tst_mijnbibliotheek.py
(note: it'spytest
here!) to check if the output still matches the earlier captured output
Creating a distribution archive:
make clean
make build
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file mijnbib-0.1.0.tar.gz
.
File metadata
- Download URL: mijnbib-0.1.0.tar.gz
- Upload date:
- Size: 18.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 693776c5af77cae51070d881cc9fcf0cf169d15d35354b2116505e7a5fa1a42e |
|
MD5 | 6074577ed90aa6a7ae8429fec1278dd8 |
|
BLAKE2b-256 | 3115d8b4a984512d6c8248630b77a71c7971c193ea278563cb4e5a8e20c2089c |
File details
Details for the file mijnbib-0.1.0-py3-none-any.whl
.
File metadata
- Download URL: mijnbib-0.1.0-py3-none-any.whl
- Upload date:
- Size: 16.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a3da921aaf9cb16198ff87c712d3c4e2ac47efb91e860d25cbb0a7d3f5e6c475 |
|
MD5 | fb8217fb9651c55e055849731d3fe3fd |
|
BLAKE2b-256 | b624d7632c99c17e9c78495c2a955bbfe20f7e473c1bf643bc9607d80233d1a8 |