A one stop solution to all your e-book needs. It is free, open source and cross-platform in design and works well on Linux, OS X and Windows. calibre is meant to be a complete e-library solution and thus includes library management, format conversion, news feeds to ebook conversion, as well as e-book reader sync features and an integrated e-book viewer.
I come from the Unix world, which means calibre is architected in little pieces each with its own command line interface which means that each piece of functionality is reusable not just in python programs but in any software. In fact adding complete support for converting any new ebook format to calibre requires the writing of only two converters format->html and html->format as well as a metadata reading/writing tool. All the other features of calibre will work automatically with these three converters in place. Similarly, writing a device driver requires very little work. You basically have to implement a well-defined interface (interface.py). Once you do that, your device will have full support in calibre.
Adding support for new Input/Output formats
Calibre is written primarily in Python with a few C extension modules. So you have to contribute plugins in either Python or C/C++. Because of its modular design and support infrastructure, adding support for new formats is simple:
* A new input format
o A module that can read metadata from files in the input format.
o A module that can convert the input format into one or more HTML files.
* A new output format
o A module that can write metadata to files in the output format.
o A module that can convert a sequential list of HTML files into a file in the output format.
If you create a plugin to do this, just let me know, and I will take care of integrating it into the calibre code base.
Adding support for new devices
You have to create a device driver that implements the DeviceInterface defined in interface.py. You should be able to lift a lot of code from the existing drivers in the calibre.devices package.
Browsing the source code
The source code can be browsed online in launchpad. If you're interested in development, you can submit patches as outlined below. Also consider joining the calibre-devs team and subscribing to its mailing list.
Setting up the development environment.
If you are on Linux, setting up a development environment is very simple and is outlined below. If not, there is a VMWare Appliance with a fully-setup development environment calibre-gentoo.7z. Passwords are the same as usernames. Once you have it running, log in as kovid and start up Eclipse; it has the calibre project already setup. Update the code from bzr and run make as shown below. Submit patches and if you want to do a lot of development talk to me about getting commit access to the bzr repository.
Changelog for this release:
- New Features
New driver for the Kobo Touch version 2.0+ firmware and Kobo Glo and Mini.
Driver for Motorola Defy XT
Wireless driver: Always use automatic metadata management, regardless of the setting in Preferences->Devices
Sending books by email: Allow sending to multiple email addresses at once separated by commas.
KF8 Output: Add the css passed in through the extra css conversion option to the generated inline ToC.
Windows: No longer use fontconfig to scan the system for available fonts. Instead use the Windows API. Should fix crashes/instability caused by fonts that fontconfig cannot handle
When editing a blank (undefined) published date in the edit metadata dialog, have the calendar popup jump to the current date instead of the date 1-1-101
FB2 Input: Add support for th, code and strikethrough tags and also rowspan, colspan and align attributes.
- Bug Fixes
Get Books: Update Woblink
Position the next selected book better after deleting multiple books from the library view
Allow using the Enter key to select the cover in the metadata download dialog
PDF Output: Handle embedded fonts better on linux
HTML Input: Guess mimetype correctly for references to image files without file extensions.
Catalog generation: Workaround for bug in the ICU library on older OS X systems that caused catalog generation to fail when certain non-ascii characters are present in the metadata.
Closes tickets: 1057862
Wireless driver: Do not abort if BonJour registration fails, as we can still use broadcast to connect
KF8 Output: Fix invalid output being generated for some files with very large blocks of contiguous non-ascii text
- New news sources
IOL News and The New Age by Darko Miletic
- Improved news sources