Back to Calibre

API documentation for plugins

manual/plugins.rst

9.8.04.3 KB
Original Source

.. _plugins:

API documentation for plugins

.. module:: calibre.customize :synopsis: Defines various abstract base classes that can be subclassed to create plugins.

Defines various abstract base classes that can be subclassed to create powerful plugins. The useful classes are:

.. contents:: :depth: 1 :local:

.. _pluginsPlugin:

Plugin

.. autoclass:: Plugin :members: :member-order: bysource

.. _pluginsFTPlugin:

FileTypePlugin

.. autoclass:: FileTypePlugin :show-inheritance: :members: :member-order: bysource

.. _pluginsMetadataPlugin:

Metadata plugins

.. autoclass:: MetadataReaderPlugin :show-inheritance: :members: :member-order: bysource

.. autoclass:: MetadataWriterPlugin :show-inheritance: :members: :member-order: bysource

Catalog plugins

.. autoclass:: CatalogPlugin :show-inheritance: :members: :member-order: bysource

.. _pluginsMetadataSource:

Metadata download plugins

.. module:: calibre.ebooks.metadata.sources.base

.. autoclass:: Source :show-inheritance: :members: :member-order: bysource

.. autoclass:: InternalMetadataCompareKeyGen

Conversion plugins

.. module:: calibre.customize.conversion

.. autoclass:: InputFormatPlugin :show-inheritance: :members: :member-order: bysource

.. autoclass:: OutputFormatPlugin :show-inheritance: :members: :member-order: bysource

Device drivers

.. module:: calibre.devices.interface

The base class for all device drivers is :class:DevicePlugin. However, if your device exposes itself as a USBMS drive to the operating system, you should use the USBMS class instead as it implements all the logic needed to support these kinds of devices.

.. autoclass:: DevicePlugin :show-inheritance: :members: :member-order: bysource

.. autoclass:: BookList :show-inheritance: :members: :member-order: bysource

USB Mass Storage based devices ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

The base class for such devices is :class:calibre.devices.usbms.driver.USBMS. This class in turn inherits some of its functionality from its bases, documented below. A typical basic USBMS based driver looks like this:

.. code-block:: python

from calibre.devices.usbms.driver import USBMS

class PDNOVEL(USBMS):
    name = 'Pandigital Novel device interface'
    gui_name = 'PD Novel'
    description = _('Communicate with the Pandigital Novel')
    author = 'Kovid Goyal'
    supported_platforms = ['windows', 'linux', 'osx']
    FORMATS = ['epub', 'pdf']

    VENDOR_ID   = [0x18d1]
    PRODUCT_ID  = [0xb004]
    BCD         = [0x224]

    THUMBNAIL_HEIGHT = 144

    EBOOK_DIR_MAIN = 'eBooks'
    SUPPORTS_SUB_DIRS = False

    def upload_cover(self, path, filename, metadata):
        coverdata = getattr(metadata, 'thumbnail', None)
        if coverdata and coverdata[2]:
            with open('%s.jpg' % os.path.join(path, filename), 'wb') as coverfile:
                coverfile.write(coverdata[2])

.. autoclass:: calibre.devices.usbms.device.Device :show-inheritance: :members: :member-order: bysource

.. autoclass:: calibre.devices.usbms.cli.CLI :members: :member-order: bysource

.. autoclass:: calibre.devices.usbms.driver.USBMS :show-inheritance: :members: :member-order: bysource

User interface actions

If you are adding your own plugin in a ZIP file, you should subclass both InterfaceActionBase and InterfaceAction. The :meth:load_actual_plugin method of your InterfaceActionBase subclass must return an instantiated object of your InterfaceAction subclass.

.. autoclass:: calibre.gui2.actions.InterfaceAction :show-inheritance: :members: :member-order: bysource

.. autoclass:: calibre.customize.InterfaceActionBase :show-inheritance: :members: :member-order: bysource

Preferences plugins

.. autoclass:: calibre.customize.PreferencesPlugin :show-inheritance: :members: :member-order: bysource

.. autoclass:: calibre.gui2.preferences.ConfigWidgetInterface :members: :member-order: bysource

.. autoclass:: calibre.gui2.preferences.ConfigWidgetBase :members: :member-order: bysource