A parser for the Readium Web Publication Manifest (RWPM), Open Publication Distribution System 2.0 (OPDS 2.0), and Open Distribution to Libraries 1.0 (ODL) formats.
Note: This parser varys from the OPDS 2 + ODL spec in that it allows OPDS 2 + ODL feeds to contain non-open access acquisition links.
The spec defines an OPDS 2 + ODL feed as:
- It must be a valid OPDS Feed as defined in [OPDS-2] with
one difference:
- The requirement for the presence of an Acquisition Link is relaxed
- Instead, each Publication listed in publications must either contain a licenses subcollection or an Open-Access Acquisition Link (http://opds-spec.org/acquisition/open-access)
The requirement that each link be an Open-Access Acquisition Link is overly restrictive, and prevents us from importing mixed OPDS2 and OPDS2 + ODL feeds. We relax the requirement to:
- It must be a valid OPDS Feed as defined in [OPDS-2] with
one difference:
- The requirement for the presence of an Acquisition Link is relaxed
- Instead, each Publication listed in publications must either contain a licenses subcollection or an Acquisition Link (http://opds-spec.org/acquisition)
Install the library with pip
pip install palace-webpub-manifest-parser
You can optionally install the python version to run the library with using pyenv.
-
Install pyenv
-
Install one of the supported Python versions:
pyenv install <python-version>
-
Install pyenv-virtualenv plugin
-
Create a virtual environment:
pyenv virtualenv <virtual-env-name> pyenv activate <virtual-env-name>
-
Install the library
pip install palace-webpub-manifest-parser
-
Make sure that a virtual environment is not activated and deactivate it if needed:
deactivate
-
Install
tox
andtox-pyenv
globally:pip install tox tox-pyenv
-
Make your code prettier using isort and black:
pre-commit run -a
-
To run the unit tests use the following command:
tox -e <python-version>
where
<python-version>
is one of supported python versions:- py38
- py39
- py310
- py311
For example, to run the unit test using Python 3.9 run the following command:
tox -e py39
Releases will be automatically published to PyPI when new releases are created on github by the release.yml workflow. Just create a release in github with the version number that you would like to use as the tag, and the rest will happen automatically.