Name | mijnbib JSON |
Version |
0.7.0
JSON |
| download |
home_page | None |
Summary | Python API voor de website mijn.bibliotheek.be |
upload_time | 2025-01-25 19:20:39 |
maintainer | None |
docs_url | None |
author | None |
requires_python | >=3.8 |
license | MIT License
Copyright (c) 2023 Ward
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
|
keywords |
mijn bibliotheek
bibliotheek
|
VCS |
|
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
# mijnbib
Python API voor bibliotheek.be (voorheen 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
Of, om een ugrade af te dwingen:
pip install --upgrade mijnbib
## Gebruik
Bijvoorbeeld, het opvragen van je ontleende items kan als volgt (na installatie):
from mijnbib import MijnBibliotheek
username = "johndoe"
password = "12345678"
account_id = "123" # zie het getal in de URL, of via mb.get_accounts()
mb = MijnBibliotheek(username, password)
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',
account_id='123'
)]
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.
of ook
mijnbib loans
## Opmerkingen
- **Authenticatie**. Inloggen bij de bibliotheek.be website gebeurt standaard
via een webformulier. Het is ook mogelijk om de `oauth` manier te gebruiken;
maar dit is nog experimenteel.
mb = MijnBibliotheek(username, password, login_by="oauth")
accounts = mb.get_accounts()
- **Foutafhandeling**. Afhankelijk van de toepassing, kan het aangeraden zijn om
foutafhandeling te voorzien. Het bestand `errors.py` bevat de lijst van
Mijnbib-specifieke exceptions. De docstrings van de publieke methods bevatten
de errors die kunnen optreden. Bijvoorbeeld:
from mijnbib import AuthenticationError, MijnbibError, MijnBibliotheek
mb = MijnBibliotheek(username, password)
try:
accounts = mb.get_accounts()
except AuthenticationError as e:
print(e) # wrong credentials
except MijnbibError as e:
print(e) # any other custom mijnbib error
- **Compatibiliteit met bibliotheek.be** - 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.
Voorzie een try/except wrapper, waarbij je ofwel `MijnbibError` opvangt, of de
meer specifieke `IncompatibleSourceError`.
## 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
You need `make` as well. For installation on Windows, see the options at
<https://stackoverflow.com/a/32127632/50899>
Running the tests and applying code formatting can be done via:
make test
make format
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:
1. Create a file `mijnbib.ini` in the project root folder, and make it contain
a section `[DEFAULT]` holding the following parameters: `username`,
`password` and `account_id`
2. Run `python tests/save_testref.py` to capture and store the current output
(a couple of files will be created)
3. Perform refactoring as needed
4. Run `pytest tests/tst_mijnbibliotheek.py` (note: it's `pytest` here!) to check
if the output still matches the earlier captured output
Creating a distribution archive:
make clean
make build
Raw data
{
"_id": null,
"home_page": null,
"name": "mijnbib",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "mijn bibliotheek, bibliotheek",
"author": null,
"author_email": "Ward Van Heddeghem <wardvh@fastmail.fm>",
"download_url": "https://files.pythonhosted.org/packages/14/e4/928e95922d9c72015e20cb69c83fbe01534de94a0ddc098fc19abbabe729/mijnbib-0.7.0.tar.gz",
"platform": null,
"description": "# mijnbib\n\nPython API voor bibliotheek.be (voorheen mijn.bibliotheek.be)\n\nMet deze Python library kan je jouw ontleende items, reservaties en\naccountinfo opvragen indien je een account hebt op <https://bibliotheek.be>.\n\n## Installatie\n\nInstalleer via:\n\n pip install mijnbib\n\nOf, om een ugrade af te dwingen:\n\n pip install --upgrade mijnbib\n\n## Gebruik\n\nBijvoorbeeld, het opvragen van je ontleende items kan als volgt (na installatie):\n\n from mijnbib import MijnBibliotheek\n\n username = \"johndoe\"\n password = \"12345678\"\n account_id = \"123\" # zie het getal in de URL, of via mb.get_accounts()\n\n mb = MijnBibliotheek(username, password)\n loans = mb.get_loans(account_id)\n print(loans)\n\nVoor een meer leesbare versie, gebruik `pprint()`:\n\n import pprint\n pprint.pprint([l for l in loans])\n\n [Loan(title='Erebus',\n loan_from=datetime.date(2023, 11, 25),\n loan_till=datetime.date(2023, 12, 23),\n author='Palin, Michael',\n type='Boek',\n extendable=True,\n extend_url='https://gent.bibliotheek.be/mijn-bibliotheek/lidmaatschappen/123/uitleningen/verlengen?loan-ids=789',\n extend_id='789',\n branchname='Gent Hoofdbibliotheek',\n id='456789',\n url='https://gent.bibliotheek.be/resolver.ashx?extid=%7Cwise-oostvlaanderen%7C456789',\n cover_url='https://webservices.bibliotheek.be/index.php?func=cover&ISBN=9789000359325&VLACCnr=10157217&CDR=&EAN=&ISMN=&EBS=&coversize=medium',\n account_id='123'\n )]\n\nVoor meer voorbeelden, zie de code in de folder `examples`.\nDaarin wordt ook `asdict` gebruikt voor conversie naar een dictionary.\n\nTenslotte, via de commandline kan je de module ook als volgt aanroepen:\n\n python -m mijnbib loans\n python -m mijnbib --help # om alle opties te zien.\n\nof ook\n\n mijnbib loans\n\n## Opmerkingen\n\n- **Authenticatie**. Inloggen bij de bibliotheek.be website gebeurt standaard\n via een webformulier. Het is ook mogelijk om de `oauth` manier te gebruiken;\n maar dit is nog experimenteel.\n\n mb = MijnBibliotheek(username, password, login_by=\"oauth\")\n accounts = mb.get_accounts()\n\n- **Foutafhandeling**. Afhankelijk van de toepassing, kan het aangeraden zijn om\n foutafhandeling te voorzien. Het bestand `errors.py` bevat de lijst van\n Mijnbib-specifieke exceptions. De docstrings van de publieke methods bevatten\n de errors die kunnen optreden. Bijvoorbeeld:\n\n from mijnbib import AuthenticationError, MijnbibError, MijnBibliotheek\n\n mb = MijnBibliotheek(username, password)\n try:\n accounts = mb.get_accounts()\n except AuthenticationError as e:\n print(e) # wrong credentials\n except MijnbibError as e:\n print(e) # any other custom mijnbib error\n\n- **Compatibiliteit met bibliotheek.be** - Deze Python API haalt zijn gegevens\n via webscraping van de bibliotheek.be website.\n Daardoor is ze afhankelijk van de structuur van de website. Bij een wijziging aan\n de structuur van de website is het dus heel waarschijnlijk dat alle of bepaalde\n functionaliteit plots niet meer werkt. \n In dat geval is het wachten tot deze Python library geupdate is om met de nieuwe\n structuur om te gaan. \n Voorzie een try/except wrapper, waarbij je ofwel `MijnbibError` opvangt, of de\n meer specifieke `IncompatibleSourceError`.\n\n## Alternatieven\n\nDe Home Assistant plugin <https://github.com/myTselection/bibliotheek_be> scraped\nop een gelijkaardige manier de bibliotheek.be website.\n\n## Development\n\nTo install all dependencies for development, install (in a virtualenv) via:\n\n python3 -m venv venv3x\n . venv3x/bin/activate\n pip install -e .[dev] # 'dev' is defined in pyproject.toml\n\nYou need `make` as well. For installation on Windows, see the options at\n<https://stackoverflow.com/a/32127632/50899>\n\nRunning the tests and applying code formatting can be done via:\n\n make test\n make format\n\nTo work around the challenge of testing a web scraper, the following *snapshot\ntesting* approach can be used to get some confidence when applying refactoring:\n\n1. Create a file `mijnbib.ini` in the project root folder, and make it contain\n a section `[DEFAULT]` holding the following parameters: `username`,\n `password` and `account_id`\n2. Run `python tests/save_testref.py` to capture and store the current output\n (a couple of files will be created)\n3. Perform refactoring as needed\n4. Run `pytest tests/tst_mijnbibliotheek.py` (note: it's `pytest` here!) to check\n if the output still matches the earlier captured output\n\nCreating a distribution archive:\n\n make clean\n make build\n",
"bugtrack_url": null,
"license": "MIT License\n \n Copyright (c) 2023 Ward\n \n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n \n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n \n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n ",
"summary": "Python API voor de website mijn.bibliotheek.be",
"version": "0.7.0",
"project_urls": {
"Changelog": "https://github.com/wvanhed/mijnbib/blob/main/changelog.md",
"Homepage": "https://github.com/wvanhed/mijnbib"
},
"split_keywords": [
"mijn bibliotheek",
" bibliotheek"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "94b46760db29c542233082ea1059a140b1a175efe27c7c817dbe9a27de435223",
"md5": "9442be69ceccdb2c5c6b33b886f5ed88",
"sha256": "192fa0684b5dbc5d6ae44977159ee37ec091b191e42fb9a1cc8fb2edd816c2e5"
},
"downloads": -1,
"filename": "mijnbib-0.7.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "9442be69ceccdb2c5c6b33b886f5ed88",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 22896,
"upload_time": "2025-01-25T19:20:36",
"upload_time_iso_8601": "2025-01-25T19:20:36.475145Z",
"url": "https://files.pythonhosted.org/packages/94/b4/6760db29c542233082ea1059a140b1a175efe27c7c817dbe9a27de435223/mijnbib-0.7.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "14e4928e95922d9c72015e20cb69c83fbe01534de94a0ddc098fc19abbabe729",
"md5": "9b2089431838d6957747799b15e12dc0",
"sha256": "7eba2290e8af364a0a8327a2bd71d3173b06b4a7bd00345f8b2042054504da15"
},
"downloads": -1,
"filename": "mijnbib-0.7.0.tar.gz",
"has_sig": false,
"md5_digest": "9b2089431838d6957747799b15e12dc0",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 25705,
"upload_time": "2025-01-25T19:20:39",
"upload_time_iso_8601": "2025-01-25T19:20:39.303827Z",
"url": "https://files.pythonhosted.org/packages/14/e4/928e95922d9c72015e20cb69c83fbe01534de94a0ddc098fc19abbabe729/mijnbib-0.7.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-01-25 19:20:39",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "wvanhed",
"github_project": "mijnbib",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "mijnbib"
}