DB changes: 1) Add link columns to "normalized" tables. All such in-memory tables have an attribute self.link_map. 2) Add API to set and get links for fields 3) get_metadata now includes an attribute giving the link maps for the book. Book link maps are cached. 4) ProxyMetadata can return link maps 5) Added a test for the API. URL Scheme: 1) Added a "book-details" URL that asks calibre to open a book info window on a book in some library Book Details: 1) You can now have multiple book info windows. 2) If an item as an associated link then that link is made available using "(item link)" link text. 3) Book info windows on books in other libraries have no links UI: 1) the Manage Category editor presents a fourth column for links. OPF: 1) The OPF used for backing up (metadata.opf) contains the link map for the book. Currently this isn't used, but it should be used in recover_database. I didn't do anything with OPF3.
calibre

calibre is an e-book manager. It can view, convert, edit and catalog e-books in all of the major e-book formats. It can also talk to e-book reader devices. It can go out to the internet and fetch metadata for your books. It can download newspapers and convert them into e-books for convenient reading. It is cross platform, running on Linux, Windows and macOS.
For more information, see the calibre About page.
Screenshots
Usage
See the User Manual.
Development
Setting up a development environment for calibre.
A tarball of the source code for the current calibre release.
Bugs
Bug reports and feature requests should be made in the calibre bug tracker at Launchpad. GitHub is only used for code hosting and pull requests.
Support calibre
calibre is a result of the efforts of many volunteers from all over the world. If you find it useful, please consider contributing to support its development. Donate to support calibre development.
Building calibre binaries
See Build instructions for instructions on how to build the calibre binaries and installers for all the platforms calibre supports.