プラグインの API 説明書¶
強力なプラグインを作成するためにサブクラス化できるさまざまな抽象基底クラスを定義します。便利なクラスは次のとおりです:
プラグイン¶
- class calibre.customize.Plugin(plugin_path)[ソース]¶
calibre のプラグイン。便利なメンバーは次のとおりです:
self.installation_type
: プラグインのインストール方法を保存します。self.plugin_path
: このプラグインを含む ZIP ファイルへのパスを格納またはビルトインプラグインなら None
self.site_customization
: ユーザの入力したカスタマイズ文字列を格納
サブクラスでオーバーライドする必要があるメソッド:
便利なメソッド:
__enter__()
- supported_platforms = []¶
このプラグインが動作するプラットフォームのリスト。例:
['windows', 'osx', 'linux']
- name = 'Trivial Plugin'¶
このプラグインの名前。動作させるには、Trivial Plugin 以外のものを設定する必要があります。
- version = (1, 0, 0)¶
このプラグインのバージョン。3 タプル (メジャー, マイナー, リビジョン)
- description = 'まったく何もしません'¶
このプラグインの機能を説明する短い文字列
- author = '不明'¶
このプラグインの作成者
- priority = 1¶
ファイルタイプに複数のプラグインが存在する場合、プラグインは優先度の高い順に実行されます。優先度の高い方のプラグインが先に実行されます。指定可能な最高の優先順位は
sys.maxsize
です。デフォルトの優先度は1です。
- minimum_calibre_version = (0, 4, 118)¶
このプラグインに必要な calibre の最低限のバージョン
- installation_type = None¶
このプラグインのインストール方法
- can_be_disabled = True¶
False にすると、ユーザがこのプラグインを無効にできなくなります。注意して使用してください。
- type = '基本'¶
このプラグインのタイプ。GUI でプラグインを分類するために使用されます
- initialize()[ソース]¶
calibre プラグインが初期化されるときに 1 回呼び出されます。プラグインは、新しいプラグインが追加されるたびに再初期化されます。また、本の追加などのワーカープロセスでプラグインが実行されている場合には、プラグインは新しいワーカープロセスごとに初期化されます。
プラグインの ZIP ファイルからリソースを抽出するなど、プラグイン固有の初期化をここで実行します。ZIP ファイルへのパスは
self.plugin_path
として利用できます。ただし
self.site_customization
はこの時点では使用可能では ありません。
- config_widget()[ソース]¶
このメソッドと
save_settings()
をプラグインに実装して、単純な文字列ベースのデフォルトのカスタマイズに依存するのではなく、カスタム構成ダイアログを使用します。このメソッドは、実装された場合には QWidget を返す必要があります。ウィジェットにはオプションのメソッド validate() を含めることができます。このメソッド引数をとらず、ユーザが OKをクリックした直後に呼び出されます。メソッドが True を返す場合にのみ、変更が適用されます。
何らかの理由でこの時点で設定変更を実行できない場合は、2つの文字列 (メッセージ, 詳細)のタプルを返します。これらはユーザに警告ダイアログとして表示され、プロセスは中止されます。
- save_settings(config_widget)[ソース]¶
config_widget を使用してユーザが指定した設定を保存します。
- パラメータ:
config_widget --
config_widget()
が返すウィジェット
- do_user_config(parent=None)[ソース]¶
このメソッドは、このプラグインの設定ダイアログを表示します。ユーザが OK をクリックすると True を返し、それ以外の場合は False を返します。変更は自動的に適用されます。
- load_resources(names)[ソース]¶
このプラグインがZIPファイル (ユーザが追加したプラグイン) で提供されている場合、このメソッドを使用すると、ZIPファイルからリソースをロードできます。
画像を読み込む例:
pixmap = QPixmap() pixmap.loadFromData(self.load_resources(['images/icon.png'])['images/icon.png']) icon = QIcon(pixmap)
- パラメータ:
names -- / を区切り文字として使用した、ZIPファイル内のリソースへのパスのリスト
- 戻り値:
{name: file_contents}` 形式の辞書。ZIPファイルで見つからなかった名前は、辞書に表示されません。
- customization_help(gui=False)[ソース]¶
このプラグインをカスタマイズする方法についてのヘルプを提供する文字列を返します。デフォルトでは
NotImplementedError
を発生させます。これは、プラグインがカスタマイズを必要としないことを示します。このメソッドをサブクラスに再実装すると、ユーザはこのプラグインのカスタマイズとして文字列を入力するように求められます。カスタマイズ文字列は、
self.site_customization
として利用できます。サイトのカスタマイズは、たとえば、ユーザのコンピュータで必要なバイナリへのパスなど、何でもかまいません。
- パラメータ:
gui -- True なら HTML ヘルプを返し、そうでなければプレーンテキストのヘルプを返します。
FileTypePlugin¶
- class calibre.customize.FileTypePlugin(plugin_path)[ソース]¶
ベースクラス:
Plugin
特定のファイルタイプのセットに関連付けられているプラグイン。
- file_types = {}¶
このプラグインを実行する必要があるファイルタイプのセット。すべてのファイルタイプに '*' を使用します。例:`` {'lit'、'mobi'、'prc'} ``
- on_import = False¶
True ならば、このプラグインは本がデータベースに追加されたときに実行されます
- on_postimport = False¶
True のとき、このプラグインは、本がデータベースに追加された後に実行されます。その場合には、プラグインの postimport メソッドと postadd メソッドが呼び出されます。
- on_preprocess = False¶
True のとき、このプラグインは変換の直前に実行されます
- on_postprocess = False¶
True のとき、このプラグインは、変換出力プラグインによって生成された最終ファイルで変換後に実行されます。
- type = 'ファイル形式'¶
このプラグインのタイプ。GUI でプラグインを分類するために使用されます
- run(path_to_ebook)[ソース]¶
プラグインを実行します。サブクラスで実装する必要があります。それは電子書籍に必要な変更を実行し、変更された電子書籍への絶対パスを返します。変更が必要なければ、元の電子書籍へのパスを返します。エラーが発生した場合は、例外を発生させます。デフォルトの実装では、元の電子書籍へのパスを返すだけです。元のファイルへのパスに注意してください (ファイルタイプのプラグインが実行される前は、self.original_path_to_file として使用できます)。
変更された電子書籍ファイルは、
temporary_file()
メソッドを使用して作成する必要があります。- パラメータ:
path_to_ebook -- この電子書籍への絶対パス。
- 戻り値:
変更された電子書籍への絶対パス。
- postimport(book_id, book_format, db)[ソース]¶
インポート後、つまり本ファイルがデータベースに追加された後に呼び出されます。ただしこれは、本レコードが初めて作成されるときに呼び出される
postadd()
とは異なります。このメソッドは、新しいファイルが本レコードに追加されるたびに呼び出されます。新しく追加したファイルの内容に基づいて本レコードを変更する場合に便利です。- パラメータ:
book_id -- 追加された本のデータベース ID。
book_format -- 追加された本のファイルタイプ。
db -- ライブラリデータベース。
- postadd(book_id, fmt_map, db)[ソース]¶
本がデータベースに追加された後に呼び出されます。ただしこれは、ひとつの本ファイルが本に追加された後に呼び出される
postimport()
とは異なります。postadd() は、複数の本ファイルを含む可能性のある本レコード全体が初めて作成された場合にのみ呼び出されます。これは、本が最初に calibre に追加されたときに、データベース内の本のレコードを変更する場合に役立ちます。- パラメータ:
book_id -- 追加された本のデータベース ID。
fmt_map -- ファイル形式からそのファイル形式が追加されたパスへのマップ。ただしファイルはストリームとして追加されることがあるので、これは実際に存在しているファイルを指している場合とそうでない場合があります。その場合には、それはダミー値または存在しないパスである可能性があります。
db -- ライブラリデータベース
書誌プラグイン¶
- class calibre.customize.MetadataReaderPlugin(*args, **kwargs)[ソース]¶
ベースクラス:
Plugin
一連のファイルタイプからの書誌の読み取りを実装するプラグイン。
- file_types = {}¶
このプラグインを実行する必要があるファイルタイプのセット。例:`` set(['lit'、'mobi'、'prc']) ``
- supported_platforms = ['windows', 'osx', 'linux']¶
このプラグインが動作するプラットフォームのリスト。例:
['windows', 'osx', 'linux']
- version = (6, 3, 0)¶
このプラグインのバージョン。3 タプル (メジャー, マイナー, リビジョン)
- author = 'Kovid Goyal'¶
このプラグインの作成者
- type = '書誌の読み込み'¶
このプラグインのタイプ。GUI でプラグインを分類するために使用されます
- get_metadata(stream, type)[ソース]¶
ストリームで表されるファイル(読み取りをサポートするオブジェクトのようなファイル)の書誌を返します。入力データにエラーがある場合は、例外を発生させます。
- パラメータ:
type -- ファイルのタイプ。
file_types
のエントリの1つであることが保証されています。- 戻り値:
calibre.ebooks.metadata.book.Metadata
オブジェクト
- class calibre.customize.MetadataWriterPlugin(*args, **kwargs)[ソース]¶
ベースクラス:
Plugin
一連のファイルタイプからの書誌の読み取りを実装するプラグイン。
- file_types = {}¶
このプラグインを実行する必要があるファイルタイプのセット。例:`` set(['lit'、'mobi'、'prc']) ``
- supported_platforms = ['windows', 'osx', 'linux']¶
このプラグインが動作するプラットフォームのリスト。例:
['windows', 'osx', 'linux']
- version = (6, 3, 0)¶
このプラグインのバージョン。3 タプル (メジャー, マイナー, リビジョン)
- author = 'Kovid Goyal'¶
このプラグインの作成者
- type = '書誌の書き出し'¶
このプラグインのタイプ。GUI でプラグインを分類するために使用されます
- set_metadata(stream, mi, type)[ソース]¶
ストリームで表されるファイル(読み取りをサポートするオブジェクトのようなファイル)の書誌を設定します。入力データにエラーがある場合は、例外を発生させます。
- パラメータ:
type -- ファイルのタイプ。
file_types
のエントリの1つであることが保証されています。mi --
calibre.ebooks.metadata.book.Metadata
オブジェクト
カタログプラグイン¶
- class calibre.customize.CatalogPlugin(plugin_path)[ソース]¶
ベースクラス:
Plugin
カタログジェネレータを実装するプラグイン。
- file_types = {}¶
このプラグインを実行する必要のある出力ファイルタイプ。例: 'epub' や 'xml'
- type = 'カタログ生成'¶
このプラグインのタイプ。GUI でプラグインを分類するために使用されます
- cli_options = []¶
このプラグインに固有の CLI パーサーオプション。namedtuple Option として宣言されています:
from collections import namedtuple Option = namedtuple('Option', 'option, default, dest, help') cli_options = [Option('--catalog-title', default = 'マイカタログ', dest = 'catalog_title', help = (_('生成されるカタログのタイトル. nデフォルト:') + " '" + '%default' + "'"))] cli_options parsed in calibre.db.cli.cmd_catalog:option_parser()
- initialize()[ソース]¶
プラグインがビルトインでない場合は、プラグインの .ui ファイルと .py ファイルを ZIP ファイルから $TMPDIR にコピーします。タブは動的に生成され、calibre.gui2.dialogs.catalog.py:Catalog のカタログオプションダイアログに追加されます
- run(path_to_output, opts, db, ids, notification=None)[ソース]¶
プラグインを実行します。サブクラスで実装する必要があります。file_types で指定された形式でカタログを生成し、生成されたカタログファイルへの絶対パスを返す必要があります。エラーが発生した場合は、例外を発生させます。
生成されたカタログファイルは、
temporary_file()
メソッドを使用して作成する必要があります- パラメータ:
path_to_output -- 生成されたカタログファイルへの絶対パス。
opts -- キーワード引数の辞書
db -- LibraryDatabase2 オブジェクト
書誌ダウンロードプラグイン¶
- class calibre.ebooks.metadata.sources.base.Source(*args, **kwargs)[ソース]¶
ベースクラス:
Plugin
- type = '書誌のソース'¶
このプラグインのタイプ。GUI でプラグインを分類するために使用されます
- author = 'Kovid Goyal'¶
このプラグインの作成者
- supported_platforms = ['windows', 'osx', 'linux']¶
このプラグインが動作するプラットフォームのリスト。例:
['windows', 'osx', 'linux']
- capabilities = frozenset({})¶
このプラグインでサポートされている機能のセット。便利な機能は次のとおりです: 'identify', 'cover'
- touched_fields = frozenset({})¶
識別フェーズ中にこのプラグインによってダウンロードされる可能性のある書誌フィールドのリスト
- has_html_comments = False¶
プラグインが HTML 形式のコメントを返す場合は、これを True に設定します
- supports_gzip_transfer_encoding = False¶
これをTrueに設定すると、ブラウザオブジェクトは gzip 転送エンコーディングをサポートしていることを示します。これによりダウンロードを高速化できますが、最初にソースが実際にgzip転送エンコーディングを正しくサポートしていることを確認してください
- ignore_ssl_errors = False¶
このソースに接続するときに HTTPS 証明書エラーを無視するには、これを True に設定します。
- cached_cover_url_is_reliable = True¶
キャッシュされた表紙 URL は信頼できない場合があります(つまり、ダウンロードが失敗したり、返された画像が偽物である可能性があります)。このソースでこれがよく起きる場合は、False に設定してください
- options = ()¶
Option
オブジェクトのリスト。これらは、このプラグインの構成ウィジェットを自動的に構築するために使用されます
- config_help_message = None¶
このプラグインの設定ウィジェットの上部に表示される文字列
- can_get_multiple_covers = False¶
True のとき、このソースは特定のクエリに対して複数の表紙を返すことができます
- auto_trim_covers = False¶
Trueに設定すると、このプラグインによってダウンロードされた表紙は自動的にトリミングされます。
- prefer_results_with_isbn = True¶
True に設定されていて、このソースがクエリに対して複数の結果を返すとき、一部には ISBN があるが ISBN がないものもある場合、ISBN のない結果は無視されます。
- customization_help()[ソース]¶
このプラグインをカスタマイズする方法についてのヘルプを提供する文字列を返します。デフォルトでは
NotImplementedError
を発生させます。これは、プラグインがカスタマイズを必要としないことを示します。このメソッドをサブクラスに再実装すると、ユーザはこのプラグインのカスタマイズとして文字列を入力するように求められます。カスタマイズ文字列は、
self.site_customization
として利用できます。サイトのカスタマイズは、たとえば、ユーザのコンピュータで必要なバイナリへのパスなど、何でもかまいません。
- パラメータ:
gui -- True なら HTML ヘルプを返し、そうでなければプレーンテキストのヘルプを返します。
- config_widget()[ソース]¶
このメソッドと
save_settings()
をプラグインに実装して、単純な文字列ベースのデフォルトのカスタマイズに依存するのではなく、カスタム構成ダイアログを使用します。このメソッドは、実装された場合には QWidget を返す必要があります。ウィジェットにはオプションのメソッド validate() を含めることができます。このメソッド引数をとらず、ユーザが OKをクリックした直後に呼び出されます。メソッドが True を返す場合にのみ、変更が適用されます。
何らかの理由でこの時点で設定変更を実行できない場合は、2つの文字列 (メッセージ, 詳細)のタプルを返します。これらはユーザに警告ダイアログとして表示され、プロセスは中止されます。
- save_settings(config_widget)[ソース]¶
config_widget を使用してユーザが指定した設定を保存します。
- パラメータ:
config_widget --
config_widget()
が返すウィジェット
- get_author_tokens(authors, only_first_author=True)[ソース]¶
著者のリストを取得し、AND 検索クエリに役立つトークンのリストを返します。この関数は、著者名にカンマが含まれている場合、名前が「姓, 他の名前」の形式であるとみなして、名、ミドルネーム、姓の順序でトークンを返そうとします。
- get_title_tokens(title, strip_joiners=True, strip_subtitle=False)[ソース]¶
タイトルを取得し、AND 検索クエリに役立つトークンのリストを返します。接続詞 (オプション) と句読点を除外します。
- clean_downloaded_metadata(mi)[ソース]¶
プラグインの identify メソッドでこのメソッドを呼び出して、書誌オブジェクトを result_queue に配置する前に書誌を正規化します。もちろん、書誌ソースに適したカスタムアルゴリズムを使用することもできます。
- get_book_url(identifiers)[ソース]¶
3 タプルまたは None を返します。3 タプルの形式は、(identifier_type, identifier_value, URL) です。URL は、このソースの識別子によって識別される本の URL です。identifier_type, identifier_value は、URL に対応する識別子を指定します。この URL は、ブラウザを使用する人間が閲覧できる必要があります。これは、ユーザがこのソースの本のページに簡単にアクセスできるよう、クリック可能なリンクを提供することを目的としています。URL が見つからない場合は、None を返します。このメソッドは迅速で一貫性がなければならないため、識別子が指定された既知のスキームから URL を構築できる場合にのみ実装してください。
- get_book_urls(identifiers)[ソース]¶
この本の複数の URL を返したい場合は、このメソッドをオーバーライドしてください。3 タプルのリストを返します。デフォルトでは、このメソッドは
get_book_url()
を呼び出すだけです。
- get_cached_cover_url(identifiers)[ソース]¶
識別子 dict で識別される本のキャッシュされた表紙 URL を返すか、そのような URL が存在しない場合は None を返します。
このメソッドは、検証済みの URL のみを返す必要があることに注意してください。つまり、一般的な表紙画像や見つからないエラーが発生する可能性のある URL は返さないでください。
- id_from_url(url)[ソース]¶
URLを解析し、(identifier_type, identifier_value) の形式のタプルを返します。URL が書誌ソースのパターンと一致しない場合は、None を返します。
- identify_results_keygen(title=None, authors=None, identifiers={})[ソース]¶
検索クエリ(タイトル、作成者、識別子)を指定して、書誌オブジェクトを関連性で並べ替えることができるキーを生成するために使用される関数を返します。
これらのキーは、
identify()
の呼び出し結果を並べ替えるために使用されます。デフォルトのアルゴリズムの詳細については、
InternalMetadataCompareKeyGen
を参照してください。デフォルトのアルゴリズムが適切でない場合は、プラグインにこの関数を再実装してください。
- identify(log, result_queue, abort, title=None, authors=None, identifiers={}, timeout=30)[ソース]¶
タイトル/著者/ISBN などで本を識別します。
ID が指定されていて、一致するものが見つからず、この書誌ソースに関連するすべてのID (たとえば、本のすべてのISBN)が保存されていない場合、このメソッドは、タイトルと作成者のみで再試行する必要があります(指定されている場合)。
この書誌ソースが表紙も提供している場合は、表紙への URL をキャッシュして、同じISBN/特別な IDを使用した表紙取得 API への後続の呼び出しで表紙 URL を再度取得する必要がないようにする必要があります。これにはキャッシング API を使用します。
このメソッドによって result_queue に配置されるすべての書誌オブジェクトには、このクエリの書誌ソースによって結果が返される順序を示す整数である source_relevance 属性が必要です。この整数は
compare_identify_results()
によって使用されます。順序が重要でない場合は、すべての結果に対してゼロに設定します。書誌オブジェクトを result_queue に配置する前に、表紙/ISBNマッピング情報がキャッシュされていることを確認してください。
- パラメータ:
log -- ログオブジェクト。デバッグ情報/エラーを出力するために使用します
result_queue -- 結果キュー、結果はそれに入れられるべきです。各結果は書誌オブジェクトです
abort -- abort.is_set() が True を返す場合は、それ以上の処理を中止して、できるだけ早く戻ります。
title -- 本のタイトル。None にすることができます
authors -- 本の著者のリスト。None にすることができます
identifiers -- 他の ID の辞書、最も一般的なのは {'isbn': '1234 ...'}
timeout -- 秒単位のタイムアウト。ネットワーク要求がタイムアウトより長くハングすることはありません。
- 戻り値:
エラーが発生しなかった場合は None、それ以外の場合はユーザに表示するのに適したエラーの Unicode 表現
- download_cover(log, result_queue, abort, title=None, authors=None, identifiers={}, timeout=30, get_best_cover=False)[ソース]¶
表紙をダウンロードして、result_queue に入れます。パラメータはすべて、
identify()
の場合と同じ意味を持ちます。(self, cover_data) を result_queue に入れます。この方法では、可能な限り効率を上げるために、キャッシュされた表紙 URL を使用する必要があります。キャッシュされたデータが存在しない場合、ほとんどのプラグインは単に identify を呼び出し、その結果を使用します。
パラメータ get_best_cover が True であり、このプラグインが複数の表紙を取得できる場合、「最良の」表紙のみを取得する必要があります。
- class calibre.ebooks.metadata.sources.base.InternalMetadataCompareKeyGen(mi, source_plugin, title, authors, identifiers)[ソース]¶
検索クエリを指定して、書誌オブジェクトの関連性を比較するためのソートキーを生成します。これは、異なるソース間ではなく、同じ書誌ソースからの結果を比較するためにのみ使用されます。
ソートキーは、昇順のソートが関連性の低いオーダーによるソートであることを保証します。
アルゴリズムは:
クエリと同じ ID が少なくともひとつある結果を優先する
キャッシュされた表紙 URL で結果を優先する
使用可能なすべてのフィールドに入力した結果を優先する
現在のユーザインタフェース言語と同じ言語の結果を優先する
クエリと完全に一致するタイトルの結果を優先する
コメントが長い (10%以上長い) 結果を優先する
- 書誌ソースの検索エンジンによって報告された結果の関連性を使用する
engine
変換プラグイン¶
- class calibre.customize.conversion.InputFormatPlugin(*args)[ソース]¶
ベースクラス:
Plugin
InputFormatPlugins は、ドキュメントを HTML+OPF+CSS+その他に変換する役割を果たします。変換の結果は、UTF-8 でエンコードする必要があります。主なアクションは
convert()
で発生します。- type = '変換入力'¶
このプラグインのタイプ。GUI でプラグインを分類するために使用されます
- can_be_disabled = False¶
False にすると、ユーザがこのプラグインを無効にできなくなります。注意して使用してください。
- supported_platforms = ['windows', 'osx', 'linux']¶
このプラグインが動作するプラットフォームのリスト。例:
['windows', 'osx', 'linux']
- file_types = {}¶
このプラグインを実行する必要があるファイルタイプのセット。例:`` set(['azw'、'mobi'、'prc']) ``
- is_image_collection = False¶
True のとき、この入力プラグインは、HTML ファイルごとに1つずつ、画像のコレクションを生成します。入力ファイルが画像コレクションと非画像コレクションの両方である場合は、convert メソッドでこれを動的に設定できます。これを True に設定する場合は、画像のリストを返す get_images() メソッドを実装する必要があります。
- core_usage = 1¶
このプラグインで使用される CPU コアの数。値 -1 は、使用可能なすべてのコアを使用することを意味します
- for_viewer = False¶
Trueに設定すると、入力プラグインは特別な処理を実行して、出力を表示に適したものにします。
- output_encoding = 'utf-8'¶
この入力プラグインがファイルを作成するエンコーディング。None の値は、エンコーディングが未定義であり、個別に検出する必要があることを意味します。
- common_options = {<calibre.customize.conversion.OptionRecommendation object>}¶
すべての入力形式プラグインで共有されるオプション。サブクラスでオーバーライドしないでください。代わりに
options
を使用してください。すべてのオプションは、OptionRecommendation
のインスタンスである必要があります。
- options = {}¶
このプラグインの動作をカスタマイズするためのオプション。すべてのオプションは、
OptionRecommendation
のインスタンスである必要があります。
- recommendations = {}¶
フォームの 3 タプルのセット(option_name, recommended_value, recommendation_level)
- convert(stream, options, file_ext, log, accelerators)[ソース]¶
このメソッドは、サブクラスで実装する必要があります。作成された OPF ファイルまたは
OEBBook
インスタンスへのパスを返す必要があります。すべての出力は現在のフォルダに含まれている必要があります。このプラグインが現在のフォルダの外にファイルを作成する場合、このメソッドが戻る前に、それらを削除するか、削除のマークを付ける必要があります。- パラメータ:
stream -- 入力ファイルを含むオブジェクトのようなファイル。
options -- 変換プロセスをカスタマイズするためのオプション。このプラグインによって宣言されたすべてのオプションに対応する属性を持つことが保証されています。さらに、ゼロから上に向かって整数値を取る冗長属性があります。数値が大きいほど、冗長であることを意味します。もう1つの便利な属性は、
calibre.customize.profiles.InputProfile
のインスタンスであるinput_profile
です。file_ext -- 入力ファイルの拡張子(ピリオドなし)。このプラグインでサポートされている file_types の1つであることが保証されています。
log --
calibre.utils.logging.Log
オブジェクト。すべての出力でこのオブジェクトを使用する必要があります。accelarators -- 入力プラグインが簡単に取得できるさまざまな情報の辞書で、変換の後続の段階を高速化します。
- class calibre.customize.conversion.OutputFormatPlugin(*args)[ソース]¶
ベースクラス:
Plugin
OutputFormatPlugins は、OEB ドキュメント (OPF+HTML) を出力電子書籍に変換する役割を果たします。
OEB ドキュメントは UTF-8 でエンコードされていると見なすことができます。主なアクションは
convert()
で発生します。- type = '変換出力'¶
このプラグインのタイプ。GUI でプラグインを分類するために使用されます
- can_be_disabled = False¶
False にすると、ユーザがこのプラグインを無効にできなくなります。注意して使用してください。
- supported_platforms = ['windows', 'osx', 'linux']¶
このプラグインが動作するプラットフォームのリスト。例:
['windows', 'osx', 'linux']
- file_type = None¶
このプラグインが出力するファイルタイプ (先頭のピリオドなしの拡張子)
- common_options = {<calibre.customize.conversion.OptionRecommendation object>}¶
すべての入力形式プラグインで共有されるオプション。サブクラスでオーバーライドしないでください。代わりに
options
を使用してください。すべてのオプションは、OptionRecommendation
のインスタンスである必要があります。
- options = {}¶
このプラグインの動作をカスタマイズするためのオプション。すべてのオプションは、
OptionRecommendation
のインスタンスである必要があります。
- recommendations = {}¶
フォームの 3 タプルのセット(option_name, recommended_value, recommendation_level)
- property description¶
str(object='') -> str str(bytes_or_buffer[, encoding[, errors]]) -> str
定されたオブジェクトから新しい文字列オブジェクトを作成します。encoding または errors が指定されている場合、オブジェクトは、指定された encoding とエラーハンドラを使用してデコードされるデータバッファを公開する必要があります。それ以外の場合は、object .__ str __() (定義されている場合) または repr(object) の結果を返します。encoding のデフォルトは sys.getdefaultencoding() です。errors のデフォルトは 'strict' です。
- convert(oeb_book, output, input_plugin, opts, log)[ソース]¶
oeb_book (
calibre.ebooks.oeb.OEBBook
のインスタンス) の内容を、output で指定されたファイルにレンダリングします。- パラメータ:
output -- オブジェクトまたは文字列のようなファイル。文字列の場合は、存在する場合と存在しない場合があるフォルダへのパスです。出力プラグインは、その出力をそのフォルダに書き込む必要があります。オブジェクトのようなファイルの場合、出力プラグインはその出力をファイルに書き込む必要があります。
input_plugin -- 変換パイプラインの開始時に使用された入力プラグイン。
opts -- 変換オプション。このプラグインの OptionRecommendations に対応する属性を持つことが保証されています。
log -- ロガー。これを使用して、デバッグ/情報メッセージなどを印刷します。
デバイスドライバ¶
すべてのデバイスドライバの基底クラスは DevicePlugin
です。ただし、デバイスがそれ自体を USBMS ドライブとしてオペレーティングシステムに公開する場合は、これらの種類のデバイスをサポートするために必要なすべてのロジックを実装するため、代わりに USBMS クラスを使用する必要があります
- class calibre.devices.interface.DevicePlugin(plugin_path)[ソース]¶
ベースクラス:
Plugin
電子書籍リーダと通信するバックエンドによって実装される必要があるインタフェースを定義します。
- type = 'デバイスインタフェース'¶
このプラグインのタイプ。GUI でプラグインを分類するために使用されます
- FORMATS = ['lrf', 'rtf', 'pdf', 'txt']¶
サポートされている形式を順に並べ替えられたリスト
- VENDOR_ID = 0¶
VENDOR_IDは、整数、整数のリスト、または辞書のいずれかです。辞書の場合は、次の形式の辞書の辞書である必要があります:
{ integer_vendor_id : { product_id : [list of BCDs], ... }, ... }
- PRODUCT_ID = 0¶
整数または整数のリスト
- BCD = None¶
BCD は、BCD に基づいてデバイスを区別しないように None にするか、このドライバでサポートされているすべてのデバイスの BCD 番号のリストにすることができます。
- THUMBNAIL_HEIGHT = 68¶
デバイス上のサムネイルの高さ
- THUMBNAIL_COMPRESSION_QUALITY = 75¶
サムネイルの圧縮品質。これを 100 に近づけると、圧縮アーティファクトが少なく、サムネイルの品質が向上します。もちろん、サムネイルも大きくなります。
- WANTS_UPDATED_THUMBNAILS = False¶
デバイスが sync_booklists 中に表紙サムネイルの更新をサポートしている場合は、これを True に設定します。true に設定すると、本のマッチ中に表紙のサムネイルを更新するよう device.py に要求します
- CAN_SET_METADATA = ['title', 'authors', 'collections']¶
本の書誌を GUI で設定できるかどうか。
- CAN_DO_DEVICE_DB_PLUGBOARD = False¶
デバイスが device_db 書誌プラグボードを処理できるかどうか
- path_sep = '/'¶
デバイス上の本へのパスのパス区切り文字
- icon = 'reader.png'¶
このデバイスのアイコン
- OPEN_FEEDBACK_MESSAGE = None¶
ステータスバーに None でない場合、GUI はこれをメッセージとして表示します。開くのに時間がかかる場合に便利です
- VIRTUAL_BOOK_EXTENSIONS = frozenset({})¶
デバイス上の「仮想本」であるため、ライブラリに表示/保存/追加できない拡張機能のセット。例:
frozenset(['kobo'])
- VIRTUAL_BOOK_EXTENSION_MESSAGE = None¶
仮想本拡張機能についてユーザに表示するメッセージ。
- NUKE_COMMENTS = None¶
デバイスに送信された本のコピーのコメントを削除するかどうか。None でない場合、これはコメントが置き換えられる短い文字列である必要があります。
- MANAGES_DEVICE_PRESENCE = False¶
True のとき、このドライバがデバイスの検出や取り出しなどを完全に管理していることを示します。これを True に設定する場合は、detect_managed_devices メソッドと debug_managed_device_detection メソッドを実装する必要があります。これを true に設定したドライバは、デバイスの検出、デバイスのブラックリスト、排出されたデバイスのリストなどを管理します。calibre は定期的に detect_managed_devices() メソッドを呼び出し、それが検出されたデバイスを返す場合、calibre は open() を呼び出します。open() は、open() の以前の呼び出しが失敗した場合でも、デバイスが返されるたびに呼び出されるため、ドライバは失敗したデバイスの独自のブラックリストを維持する必要があります。同様に、イジェクトするとき、calibreはeject() を呼び出し、次に detect_managed_devices() への次の呼び出しが None を返すと仮定して、post_yank_cleanup() を呼び出します。
- SLOW_DRIVEINFO = False¶
True に設定すると、本のリストが読み込まれた後、calibre は
get_driveinfo()
メソッドを呼び出してdriveinfoを取得します。
- ASK_TO_ALLOW_CONNECT = False¶
True に設定すると、calibre は、最初に検出されたときに、ユーザに calibre を使用してデバイスを管理するかどうかを尋ねます。これを True に設定する場合は、
get_device_uid()
とignore_connected_device()
とget_user_blacklisted_devices`と :meth:`set_user_blacklisted_devices()
を実装する必要があります
- user_feedback_after_callback = None¶
これを {'title':title, 'msg':msg, 'det_msg':detailed_msg} の形式の辞書に設定して、いくつかのコールバックが実行された後にユーザにメッセージをポップアップさせるようにします(現在は upload_books のみ)。あまりにも多くのメッセージでユーザをスパムしないように注意してください。この変数は*すべての*コールバックの後にチェックされるため、本当に必要な場合にのみ設定してください。
- classmethod get_open_popup_message()[ソース]¶
GUI は、これを非モーダルポップアップとして表示します。OpenPopupMessage のインスタンスである必要があります
- is_usb_connected(devices_on_system, debug=False, only_presence=False)[ソース]¶
このプラグインによって処理されるデバイスが現在接続されている場合は、true, device_info を返します。
- パラメータ:
devices_on_system -- 現在接続されているデバイスのリスト
- detect_managed_devices(devices_on_system, force_refresh=False)[ソース]¶
MANAGES_DEVICE_PRESENCE が True のときにのみ呼び出されます。
このドライバが処理できるデバイスをスキャンします。デバイスが見つかった場合、デバイスオブジェクトを返す必要があります。このオブジェクトは、connected_device として open() メソッドに渡されます。デバイスが見つからない場合は、None を返します。返されるオブジェクトは何でもかまいません。calibre はそれを使用せず、open() に渡されるだけです。
このメソッドは GUI によって定期的に呼び出されるため、リソースを大量に消費しないようにしてください。システムを繰り返しスキャンしないように、キャッシュを使用してください。
- パラメータ:
devices_on_system -- システムで見つかった USB デバイスのセット。
force_refresh -- True かつ、ドライバがキャッシュを使用してスキャンの繰り返しを防ぐ場合は、キャッシュをフラッシュする必要があります。
- debug_managed_device_detection(devices_on_system, output)[ソース]¶
MANAGES_DEVICE_PRESENCE が True のときにのみ呼び出されます。
システムで検出されたデバイスに関する情報を出力に書き込む必要があります。これは、オブジェクトのようなファイルです。
デバイスが検出されて正常に開かれた場合は True を返し、それ以外の場合は False を返します。
- reset(key='-1', log_packets=False, report_progress=None, detected_device=None)[ソース]¶
- パラメータ:
key -- デバイスのロックを解除するためのキー
log_packets -- true の場合、デバイスとの間のパケットストリームがログに記録されます
report_progress -- さまざまなタスクの進行率 (0〜100の数値) で呼び出される関数。-1 で呼び出された場合、タスクに進行状況情報がないことを意味します
detected_device -- デバイススキャナからのデバイス情報
- can_handle_windows(usbdevice, debug=False)[ソース]¶
このドライバがデバイスを処理できるかどうかを確認するために、デバイスでさらにチェックを実行するためのオプションの方法。そうでない場合は、False を返す必要があります。このメソッドは、ベンダー、製品 ID、および bcd が一致した後にのみ呼び出されるため、比較的時間のかかるチェックを実行できます。デフォルトの実装は True を返します。このメソッドは、Windows でのみ呼び出されます。
can_handle()
も参照してください。USBMS に基づくデバイスの場合、このメソッドはデフォルトで
can_handle()
に委任されることに注意してください。したがって、USBMS のサブクラスでcan_handle()
をオーバーライドするだけで済みます。- パラメータ:
usbdevice --
calibre.devices.winusb.scan_usb_devices()
によって返される USB デバイス
- can_handle(device_info, debug=False)[ソース]¶
Unixバージョンの
can_handle_windows()
。- パラメータ:
device_info -- (vid, pid, bcd, 製造元, 製品名, シリアル番号) のタプルです
- open(connected_device, library_uuid)[ソース]¶
デバイス固有の初期化を実行します。デバイスが検出された後、デバイスと通信する他の機能の前に呼び出されます。例: USBマスストレージデバイスとして表示されるデバイスの場合、この方法でデバイスをマウントするか、デバイスが自動マウントされている場合は、マウントされている場所を確認します。メソッド
calibre.devices.usbms.device.Device.open()
には、USB マスストレージデバイスの良い例として役立つこの関数の実装があります。このメソッドは、OpenFeedback 例外を発生させて、ユーザにメッセージを表示することができます。
- パラメータ:
connected_device -- 開こうとしているデバイス。(ベンダ ID, 製品 ID, BCD, メーカー名, 製品名, デバイスのシリアル番号)のタプルです。ただし、一部のデバイスにはシリアル番号がなく、Windows では最初の 3 つのフィールドのみが表示され、残りは None です。
library_uuid -- 現在の calibre ライブラリの UUID。ライブラリがない場合 (たとえば、コマンドラインから使用する場合)は None にすることができます。
- eject()[ソース]¶
デバイスを OS からアンマウント/イジェクトします。これは、デバイスと通信する必要のある保留中の GUI ジョブがあるかどうかをチェックしません。
注:このメソッドは、他のデバイスメソッドと同じスレッドで呼び出されない場合があります。
- post_yank_cleanup()[ソース]¶
デバイス上の本が calibre のデータベース内の本と一致するときに、本の一致中に呼び出されます。このメソッドは、デバイスからのデータを calibre のデータベースに同期する役割を果たします (必要な場合)。
- set_progress_reporter(report_progress)[ソース]¶
進捗情報を報告する機能を設定します。
- パラメータ:
report_progress -- さまざまなタスクの進行率 (0〜100の数値) で呼び出される関数。-1 で呼び出された場合、タスクに進行状況情報がないことを意味します
- get_device_information(end_session=True)[ソース]¶
デバイスにデバイス情報を問い合わせます。L{DeviceInfoQuery} を参照してください。
- 戻り値:
(デバイス名, デバイスバージョン, デバイス上のソフトウェアバージョン, MIMEタイプ) タプルには、オプションで、ドライブ情報辞書である 5 番目の要素を含めることができます。例については、usbms.driver を参照してください。
- get_driveinfo()[ソース]¶
driveinfo ディクショナリを返します。通常は get_device_information() から呼び出されますが、このドライバの driveinfo のロードが遅い場合は、SLOW_DRIVEINFO を設定する必要があります。この場合、このメソッドは、本リストがロードされた後に calibre によって呼び出されます。デバイススレッドでは呼び出されないため、ドライバはドライブ情報を books() メソッドにキャッシュし、この関数はキャッシュされたデータを返す必要があることに注意してください。
- card_prefix(end_session=True)[ソース]¶
カードのパスにプレフィックスの 2 要素リストを返します。カードが存在しない場合、カードのプレフィックスには None が設定されます。例: ('/place', '/place2') (None, 'place2') ('place', None) (None, None)
- total_space(end_session=True)[ソース]¶
- マウントポイントで利用可能な合計スペースを取得します:
メインメモリ
メモリカード A
メモリカード B
- 戻り値:
バイト単位の合計スペースが (1、2、3) の3要素リスト。特定のデバイスにこれらの場所がない場合は、0 を返す必要があります。
- free_space(end_session=True)[ソース]¶
- マウントポイントで利用可能な空きスペースを取得します。
メインメモリ
カード A
カード B
- 戻り値:
バイト単位の空き領域が (1, 2, 3) の 3 要素リスト。特定のデバイスにこれらの場所がない場合は、-1 を返す必要があります。
- books(oncard=None, end_session=True)[ソース]¶
デバイス上の電子書籍のリストを返します。
- パラメータ:
oncard -- 'carda' または 'cardb' が特定のストレージカード上の電子書籍のリストを返す場合、それ以外の場合はデバイスのメインメモリにある電子書籍のリストを返します。カードが指定されていて、カードに本がない場合は、空のリストを返します。
- 戻り値:
本のリスト。
- upload_books(files, names, on_card=None, end_session=True, metadata=None)[ソース]¶
本のリストをデバイスにアップロードします。ファイルがデバイスにすでに存在する場合は、それを置き換える必要があります。デバイスに十分な空き領域がない場合、このメソッドは
FreeSpaceError
を発生させる必要があります。FreeSpaceError のテキストには、on_card
が None でない場合は "card" という単語が含まれている必要があります。それ以外の場合は、"memory" という単語が含まれている必要があります。- パラメータ:
files -- パスのリスト
names -- 本がデバイスにアップロードされたときに必要なファイル名のリスト。len(names)== len(files)
metadata -- None でない場合は、
Metadata
オブジェクトのリストです。アイデアは、書誌を使用して、本を置くデバイスの場所を決定することです。len(metadata)== len(files)。通常の表紙(表紙へのパス)とは別に、サムネイル属性もある場合があります。これは優先的に使用する必要があります。サムネイル属性の形式は (幅, 高さ, JPEG の cover_data) です。
- 戻り値:
3 要素タプルのリスト。このリストは、
add_books_to_metadata()
に渡されることを意図しています。
- classmethod add_books_to_metadata(locations, metadata, booklists)[ソース]¶
本リストに場所を追加します。この機能はデバイスと通信してはなりません。
- パラメータ:
locations -- L{upload_books} への呼び出しの結果
metadata --
upload_books()
と同じ、Metadata
オブジェクトのリスト。booklists -- (
books(oncard=None)()
,books(oncard='carda')()
, :meth`books(oncard='cardb')`) への呼び出しの結果を含むタプル。
- classmethod remove_books_from_metadata(paths, booklists)[ソース]¶
書誌リストから本を削除します。この機能はデバイスと通信してはなりません。
- パラメータ:
paths -- デバイス上の本へのパス。
booklists -- (
books(oncard=None)()
,books(oncard='carda')()
, :meth`books(oncard='cardb')`) への呼び出しの結果を含むタプル。
- sync_booklists(booklists, end_session=True)[ソース]¶
デバイスの書誌を更新します。
- パラメータ:
booklists -- (
books(oncard=None)()
,books(oncard='carda')()
, :meth`books(oncard='cardb')`) への呼び出しの結果を含むタプル。
- get_file(path, outfile, end_session=True)[ソース]¶
デバイスの
path
にあるファイルを読み取り、出力ファイルに書き込みます。- パラメータ:
outfile -- `` sys.stdout`` のようなファイルオブジェクトまたは
open()
呼び出しの結果。
- classmethod save_settings(settings_widget)[ソース]¶
設定をディスクに保存する必要があります。
config_widget()
で作成されたウィジェットを取得し、すべての設定をディスクに保存します。
- classmethod settings()[ソース]¶
opts オブジェクトを返す必要があります。opts オブジェクトには、デバイスのフォーマットの順序付きリストである少なくとも1つの属性 format_map が必要です。
- set_plugboards(plugboards, pb_func)[ソース]¶
ドライバに現在のプラグボードのセットと特定のプラグボードを選択する機能を提供します。このメソッドは、add_books および sync_booklists の直前に呼び出されます。
- pb_funcは、次のシグネチャを持つ呼び出し可能です:
def pb_func(device_name, format, plugboards)
現在のデバイス名 (クラス名または DEVICE_PLUGBOARD_NAME のいずれか)、関心のある形式('real' 形式または 'device_db')、およびプラグボード (これらは set_plugboards によって与えらます。このメソッドが与えられたのと同じ場所です)。
- 戻り値:
None または単一のプラグボードインスタンス。
- set_driveinfo_name(location_code, name)[ソース]¶
driveinfo ファイルのデバイス名を 'name' に設定します。この設定は、ファイルが再作成されるか、名前が再度変更されるまで保持されます。
非ディスクデバイスは、get_device_information() メソッドによって返されるロケーションコードに基づいてこのメソッドを実装する必要があります。
- prepare_addable_books(paths)[ソース]¶
パスのリストを指定すると、別のパスのリストを返します。これらのパスは、追加可能なバージョンの本を指しています。
本の準備中にエラーが発生した場合は、パスではなく、その本の返されるリスト内の位置を3 タプルにする必要があります:(original_path, 例外インスタンス, traceback)
- startup()[ソース]¶
calibre がデバイスを起動しているときに呼び出されます。必要な初期化を行います。クラスの複数のインスタンスをインスタンス化できるため、__ init__ を複数回呼び出すことができますが、このメソッドが呼び出されるのは1つのインスタンスのみであることに注意してください。このメソッドは、GUI スレッドではなく、デバイススレッドで呼び出されます。
- shutdown()[ソース]¶
calibre がシャットダウンしているとき、または再起動の準備のために呼び出されます。必要なクリーンアップを実行します。このメソッドは、GUI スレッドではなく、デバイススレッドで呼び出されます。
- get_device_uid()[ソース]¶
現在接続されているデバイスの一意のIDを返す必要があります(これは、open() の呼び出しが成功した直後に呼び出されます)。ASK_TO_ALLOW_CONNECT = True を設定する場合は、このメソッドを実装する必要があります
- ignore_connected_device(uid)[ソース]¶
将来、uid (get_device_uid() の呼び出しの結果) によって識別されるデバイスを無視する必要があります。ASK_TO_ALLOW_CONNECT = True を設定する場合は、このメソッドを実装する必要があります。ただしこの関数は open() の直後に呼び出されるため、open() が何らかの状態をキャッシュする場合、ドライバはその状態をリセットする必要があります。
- specialize_global_preferences(device_prefs)[ソース]¶
デバイスが特定の設定を上書きする場合は、このメソッドを実装します。オーバーライド可能な設定が必要なすべての呼び出しサイトで、prefs['something'] ではなく device_prefs['something'] を使用するようにする必要があります。メソッドは device_prefs.set_overrides(pref=val, pref=val, ...) を呼び出す必要があります。現在使用されているもの: 書誌管理 (prefs ['manage_device_metadata'])
- set_library_info(library_name, library_uuid, field_metadata)[ソース]¶
現在の calibre ライブラリに関する情報が必要な場合は、このメソッドを実装します。このメソッドは、起動時および接続中に calibre ライブラリが変更されたときに呼び出されます。
- is_dynamically_controllable()[ソース]¶
プラグインの起動時にデバイスマネージャによって呼び出されます。このメソッドが文字列を返す場合、a) デバイスマネージャーの動的制御インタフェースをサポートし、b) プラグインと通信するときにその名前が使用されます。
このメソッドは、GUI スレッドで呼び出すことができます。このメソッドを実装するドライバは、スレッドセーフである必要があります。
- start_plugin()[ソース]¶
このメソッドは、プラグインを起動するために呼び出されます。プラグインはデバイス接続の受け入れを開始する必要がありますが、それは可能です。プラグインがすでに接続を受け入れている場合は、何もしません。
このメソッドは、GUI スレッドで呼び出すことができます。このメソッドを実装するドライバは、スレッドセーフである必要があります。
- stop_plugin()[ソース]¶
このメソッドは、プラグインを停止するために呼び出されます。プラグインは接続を受け入れなくなり、プラグイン自体の背後でクリーンアップする必要があります。このメソッドは shutdown を呼び出す必要がある可能性があります。プラグインがすでに接続を受け入れていない場合は、何もしません。
このメソッドは、GUI スレッドで呼び出すことができます。このメソッドを実装するドライバは、スレッドセーフである必要があります。
- get_option(opt_string, default=None)[ソース]¶
opt_string で示されるオプションの値を返します。このメソッドは、プラグインが開始されていないときに呼び出すことができます。オプションが存在しない場合はNoneを返します。
このメソッドは、GUI スレッドで呼び出すことができます。このメソッドを実装するドライバは、スレッドセーフである必要があります。
- set_option(opt_string, opt_value)[ソース]¶
opt_string で示されるオプションの値を設定します。このメソッドは、プラグインが開始されていないときに呼び出すことができます。
このメソッドは、GUI スレッドで呼び出すことができます。このメソッドを実装するドライバは、スレッドセーフである必要があります。
- is_running()[ソース]¶
プラグインが開始されている場合は True を返し、そうでない場合は false を返します
このメソッドは、GUI スレッドで呼び出すことができます。このメソッドを実装するドライバは、スレッドセーフである必要があります。
- synchronize_with_db(db, book_id, book_metadata, first_call)[ソース]¶
デバイス上の本が calibre のデータベース内の本と一致するときに、本の一致中に呼び出されます。このメソッドは、デバイスからのデータをcalibreのデータベースに同期する役割を果たします(必要な場合)。
このメソッドは、2 つの値のタプルを返す必要があります。最初の値は、calibre のデータベースが変更された場合に変更された calibre 本 ID のセットであり、データベースが変更されていない場合は None です。最初の値が空のセットである場合、デバイス上の本の書誌は calibre の書誌で更新され、デバイスに戻されますが、その本の GUI 更新は行われません。これは、calibre データが正しいが、デバイスに送信する必要がある場合に役立ちます。
2 番目の値は、それ自体が 2 値のタプルです。タプルの最初の値は、本の形式をデバイスに送信するかどうかを指定します。目的は、デバイス上の本が calibre の本と同じであるかどうかを検証できるようにすることです。本を送信しない場合は、この値を None にする必要があります。そうでない場合は、デバイスのベースファイル名 (foobar.epub などの文字列) を返します。名前には必ず拡張子を含めてください。デバイスサブシステムは、戻り値が None でないすべての本に対して send_books ジョブを作成します。注: 後で拡張子を取得する場合を除いて、デバイスがテンプレートを使用してファイル名を生成する場合、名前は無視されます。ほとんどの場合、この名前は無視されます。返されたタプルの 2 番目の値は、その形式が未来の日付であるかどうかを示しています。そうである場合は True を返し、そうでない場合は False を返します。calibre は、未来の日付の本をすべて一覧表示するダイアログをユーザに表示します。
非常に重要です。このメソッドは GUI スレッドで呼び出されます。デバイスマネージャのスレッドに対してスレッドセーフである必要があります。
book_id: データベース内の本の calibre ID。book_metadata: デバイスからの本の書誌オブジェクト。first_call: これが同期中の最初の呼び出しである場合は True、それ以外の場合は False
- class calibre.devices.interface.BookList(oncard, prefix, settings)[ソース]¶
ベースクラス:
list
本のリスト。Book オブジェクトごとに次のフィールドが必要です
title
authors
size (本のファイルサイズ)
datetime (a UTC 時刻タプル)
path (デバイス上の本へのパス)
thumbnail (None でもかまいません)サムネイルは、画像データを含むstr / bytesオブジェクトであるか、画像への絶対 (プラットフォームネイティブ)パスを格納する属性 image_path を持っている必要があります
tags (文字列のリスト、空にすることができます)
USB マスストレージベースのデバイス¶
このようなデバイスの基底クラスは calibre.devices.usbms.driver.USBMS
です。このクラスは、その機能の一部をベースから順に継承します。これについては、以下で説明します。典型的な基本的な USBMS ベースのドライバは次のようになります。
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])
- class calibre.devices.usbms.device.Device(plugin_path)[ソース]¶
ベースクラス:
DeviceConfig
,DevicePlugin
このクラスは、USB マスストレージデバイスとして自身をエクスポートするデバイスのすべてのドライバに共通のロジックを提供します。すべてのプラットフォームで USBMS デバイスをマウント/イジェクトするための実装を提供します。
- VENDOR_ID = 0¶
VENDOR_IDは、整数、整数のリスト、または辞書のいずれかです。辞書の場合は、次の形式の辞書の辞書である必要があります:
{ integer_vendor_id : { product_id : [list of BCDs], ... }, ... }
- PRODUCT_ID = 0¶
整数または整数のリスト
- BCD = None¶
BCD は、BCD に基づいてデバイスを区別しないように None にするか、このドライバでサポートされているすべてのデバイスの BCD 番号のリストにすることができます。
- WINDOWS_MAIN_MEM = None¶
Windows PnP id文字列でデバイスのメインメモリを識別する文字列。これは、None、文字列、文字列のリスト、またはコンパイルされた正規表現にすることができます
- WINDOWS_CARD_A_MEM = None¶
Windows PnP id文字列でデバイスの最初のカードを識別する文字列。これは、None、文字列、文字列のリスト、またはコンパイルされた正規表現にすることができます
- WINDOWS_CARD_B_MEM = None¶
Windows PnP id文字列でデバイスの 2 番目のカードを識別する文字列。これは、None、文字列、文字列のリスト、またはコンパイルされた正規表現にすることができます
- OSX_MAIN_MEM_VOL_PAT = None¶
新しいドライバ検出によって使用され、ストレージカードからメインメモリを明確にします。macOS によって割り当てられたメインメモリのマウントポイントにマッチする正規表現である必要があります
- BACKLOADING_ERROR_MESSAGE = None¶
- MAX_PATH_LEN = 250¶
デバイス上に作成されるパスの最大長
- NEWS_IN_FOLDER = True¶
ニュースを独自のフォルダに入れる
- reset(key='-1', log_packets=False, report_progress=None, detected_device=None)[ソース]¶
- パラメータ:
key -- デバイスのロックを解除するためのキー
log_packets -- true の場合、デバイスとの間のパケットストリームがログに記録されます
report_progress -- さまざまなタスクの進行率 (0〜100の数値) で呼び出される関数。-1 で呼び出された場合、タスクに進行状況情報がないことを意味します
detected_device -- デバイススキャナからのデバイス情報
- set_progress_reporter(report_progress)[ソース]¶
進捗情報を報告する機能を設定します。
- パラメータ:
report_progress -- さまざまなタスクの進行率 (0〜100の数値) で呼び出される関数。-1 で呼び出された場合、タスクに進行状況情報がないことを意味します
- card_prefix(end_session=True)[ソース]¶
カードのパスにプレフィックスの 2 要素リストを返します。カードが存在しない場合、カードのプレフィックスには None が設定されます。例: ('/place', '/place2') (None, 'place2') ('place', None) (None, None)
- total_space(end_session=True)[ソース]¶
- マウントポイントで利用可能な合計スペースを取得します:
メインメモリ
メモリカード A
メモリカード B
- 戻り値:
バイト単位の合計スペースが (1、2、3) の3要素リスト。特定のデバイスにこれらの場所がない場合は、0 を返す必要があります。
- free_space(end_session=True)[ソース]¶
- マウントポイントで利用可能な空きスペースを取得します。
メインメモリ
カード A
カード B
- 戻り値:
バイト単位の空き領域が (1, 2, 3) の 3 要素リスト。特定のデバイスにこれらの場所がない場合は、-1 を返す必要があります。
- windows_sort_drives(drives)[ソース]¶
WINDOWS_CARD_NAME に基づいてそれらを区別しないデバイスのメインメモリとストレージカードを明確にするために呼び出されます。例: EB600
- can_handle_windows(usbdevice, debug=False)[ソース]¶
このドライバがデバイスを処理できるかどうかを確認するために、デバイスでさらにチェックを実行するためのオプションの方法。そうでない場合は、False を返す必要があります。このメソッドは、ベンダー、製品 ID、および bcd が一致した後にのみ呼び出されるため、比較的時間のかかるチェックを実行できます。デフォルトの実装は True を返します。このメソッドは、Windows でのみ呼び出されます。
can_handle()
も参照してください。USBMS に基づくデバイスの場合、このメソッドはデフォルトで
can_handle()
に委任されることに注意してください。したがって、USBMS のサブクラスでcan_handle()
をオーバーライドするだけで済みます。- パラメータ:
usbdevice --
calibre.devices.winusb.scan_usb_devices()
によって返される USB デバイス
- open(connected_device, library_uuid)[ソース]¶
デバイス固有の初期化を実行します。デバイスが検出された後、デバイスと通信する他の機能の前に呼び出されます。例: USBマスストレージデバイスとして表示されるデバイスの場合、この方法でデバイスをマウントするか、デバイスが自動マウントされている場合は、マウントされている場所を確認します。メソッド
calibre.devices.usbms.device.Device.open()
には、USB マスストレージデバイスの良い例として役立つこの関数の実装があります。このメソッドは、OpenFeedback 例外を発生させて、ユーザにメッセージを表示することができます。
- パラメータ:
connected_device -- 開こうとしているデバイス。(ベンダ ID, 製品 ID, BCD, メーカー名, 製品名, デバイスのシリアル番号)のタプルです。ただし、一部のデバイスにはシリアル番号がなく、Windows では最初の 3 つのフィールドのみが表示され、残りは None です。
library_uuid -- 現在の calibre ライブラリの UUID。ライブラリがない場合 (たとえば、コマンドラインから使用する場合)は None にすることができます。
- eject()[ソース]¶
デバイスを OS からアンマウント/イジェクトします。これは、デバイスと通信する必要のある保留中の GUI ジョブがあるかどうかをチェックしません。
注:このメソッドは、他のデバイスメソッドと同じスレッドで呼び出されない場合があります。
- post_yank_cleanup()[ソース]¶
デバイス上の本が calibre のデータベース内の本と一致するときに、本の一致中に呼び出されます。このメソッドは、デバイスからのデータを calibre のデータベースに同期する役割を果たします (必要な場合)。
- sanitize_callback(path)[ソース]¶
個々のデバイスドライバが
create_upload_path()
によって使用されるパスサニタイズをオーバーライドできるようにするコールバック。
- class calibre.devices.usbms.driver.USBMS(plugin_path)[ソース]¶
-
すべての USBMS デバイスの基底クラス。書誌の送信/取得/更新/書誌のキャッシュなどのロジックを実装します。
- description = '電子書籍リーダと通信します。'¶
このプラグインの機能を説明する短い文字列
- author = 'John Schember'¶
このプラグインの作成者
- supported_platforms = ['windows', 'osx', 'linux']¶
このプラグインが動作するプラットフォームのリスト。例:
['windows', 'osx', 'linux']
- FORMATS = []¶
サポートされている形式を順に並べ替えられたリスト
- CAN_SET_METADATA = []¶
本の書誌を GUI で設定できるかどうか。
- get_device_information(end_session=True)[ソース]¶
デバイスにデバイス情報を問い合わせます。L{DeviceInfoQuery} を参照してください。
- 戻り値:
(デバイス名, デバイスバージョン, デバイス上のソフトウェアバージョン, MIMEタイプ) タプルには、オプションで、ドライブ情報辞書である 5 番目の要素を含めることができます。例については、usbms.driver を参照してください。
- set_driveinfo_name(location_code, name)[ソース]¶
driveinfo ファイルのデバイス名を 'name' に設定します。この設定は、ファイルが再作成されるか、名前が再度変更されるまで保持されます。
非ディスクデバイスは、get_device_information() メソッドによって返されるロケーションコードに基づいてこのメソッドを実装する必要があります。
- books(oncard=None, end_session=True)[ソース]¶
デバイス上の電子書籍のリストを返します。
- パラメータ:
oncard -- 'carda' または 'cardb' が特定のストレージカード上の電子書籍のリストを返す場合、それ以外の場合はデバイスのメインメモリにある電子書籍のリストを返します。カードが指定されていて、カードに本がない場合は、空のリストを返します。
- 戻り値:
本のリスト。
- upload_books(files, names, on_card=None, end_session=True, metadata=None)[ソース]¶
本のリストをデバイスにアップロードします。ファイルがデバイスにすでに存在する場合は、それを置き換える必要があります。デバイスに十分な空き領域がない場合、このメソッドは
FreeSpaceError
を発生させる必要があります。FreeSpaceError のテキストには、on_card
が None でない場合は "card" という単語が含まれている必要があります。それ以外の場合は、"memory" という単語が含まれている必要があります。- パラメータ:
files -- パスのリスト
names -- 本がデバイスにアップロードされたときに必要なファイル名のリスト。len(names)== len(files)
metadata -- None でない場合は、
Metadata
オブジェクトのリストです。アイデアは、書誌を使用して、本を置くデバイスの場所を決定することです。len(metadata)== len(files)。通常の表紙(表紙へのパス)とは別に、サムネイル属性もある場合があります。これは優先的に使用する必要があります。サムネイル属性の形式は (幅, 高さ, JPEG の cover_data) です。
- 戻り値:
3 要素タプルのリスト。このリストは、
add_books_to_metadata()
に渡されることを意図しています。
- upload_cover(path, filename, metadata, filepath)[ソース]¶
本の表紙をデバイスにアップロードします。デフォルトの実装は何もしません。
- パラメータ:
path -- 関連する本が置かれているフォルダへのフルパス。
filename -- 拡張子のない本ファイルの名前。
metadata -- 本に属する書誌。表紙に metadata.thumbnail を使用します
filepath -- 電子書籍ファイルへのフルパス
- add_books_to_metadata(locations, metadata, booklists)[ソース]¶
本リストに場所を追加します。この機能はデバイスと通信してはなりません。
- パラメータ:
locations -- L{upload_books} への呼び出しの結果
metadata --
upload_books()
と同じ、Metadata
オブジェクトのリスト。booklists -- (
books(oncard=None)()
,books(oncard='carda')()
, :meth`books(oncard='cardb')`) への呼び出しの結果を含むタプル。
- remove_books_from_metadata(paths, booklists)[ソース]¶
書誌リストから本を削除します。この機能はデバイスと通信してはなりません。
- パラメータ:
paths -- デバイス上の本へのパス。
booklists -- (
books(oncard=None)()
,books(oncard='carda')()
, :meth`books(oncard='cardb')`) への呼び出しの結果を含むタプル。
ユーザインタフェースアクション¶
独自のプラグインを ZIP ファイルで追加する場合は、InterfaceActionBase と InterfaceAction の両方をサブクラス化する必要があります。InterfaceActionBase サブクラスの load_actual_plugin()
メソッドは、InterfaceBase サブクラスのインスタンス化されたオブジェクトを返す必要があります。
- class calibre.gui2.actions.InterfaceAction(parent, site_customization)[ソース]¶
ベースクラス:
QObject
グラフィカルユーザインタフェースで実行できる「アクション」を表すプラグイン。ツールバーとコンテキストメニューのすべての項目は、これらのプラグインによって実装されます。
このクラスはこれらのプラグインの基底クラスであることに注意してください。ただし、プラグインをcalibreのプラグインシステムと統合するには、実際のプラグインを参照するラッパークラスを作成する必要があります。例については、
calibre.customize.builtins
モジュールを参照してください。2 つの
InterfaceAction
オブジェクトが同じ名前の場合、優先度の高い方が優先されます。サブクラスは、
genesis()
,library_changed()
,location_selected()
,shutting_down()
,initialization_complete()
およびtag_browser_context_action()
メソッドを実装する必要があります。初期化されると、このプラグインは
gui
メンバーを介してメイン calibre GUI にアクセスできます。次のように、名前で他のプラグインにアクセスできます:self.gui.iactions['Save To Disk']
実際のプラグインにアクセスするには、
interface_action_base_plugin
属性を使用します。この属性は、プラグインが初期化された後にのみ使用可能になります。do_user_config() のようなプラグインクラスのメソッドを使用する場合に便利です。action_spec
で指定された QAction は自動的に作成され、self.qaction
として利用できるようになります。- name = 'Implement me'¶
プラグイン名。同じ名前のプラグインが2つ存在する場合は、優先度の高いプラグインが優先されます。
- priority = 1¶
プラグインの優先度。同じ名前のプラグインが2つ存在する場合は、優先度の高いプラグインが優先されます。
- popup_type = 1¶
このプラグインがツールバーに追加されたときのメニューポップアップタイプ
- auto_repeat = False¶
ショートカットキーを押したときにこのアクションを自動的に繰り返すかどうか。
- action_spec = ('text', 'icon', None, None)¶
次の形式:(テキスト, icon_path, ツールチップ, キーボードショートカット) アイコン、ツールチップ、およびキーボードショートカットは None にすることができます。ショートカットは文字列、None、またはショートカットのタプルである必要があります。None の場合、アクションに対応するキーボードショートカットは登録されません。空のタプルを渡すと、ショートカットはデフォルトのキーバインディングなしで登録されます。
True のとき、メニューが自動的に作成され、self.qaction に追加されます。
True のとき、self.qaction のクローンが self.qaction のメニューに追加されます。このアクションのテキストを self.qaction のテキストとは異なるものにする場合は、この変数を新しいテキストに設定します。
- dont_add_to = frozenset({})¶
このアクションを追加してはならない場所のセット。可能な場所のリストについては、
all_locations
を参照してください
- dont_remove_from = frozenset({})¶
このアクションを削除してはならない場所のセット。可能な場所のリストについては、
all_locations
を参照してください
- action_type = 'global'¶
アクションのタイプ 'current' は現在のビューに作用することを意味します 'global' は現在のビューに作用するのではなく、全体として calibre に作用するアクションを意味します
- accepts_drops = False¶
True のとき、この InterfaceAction はドラッグアンドドロップイベントと対話する機会があります。詳細については、メソッド
accept_enter_event()
, :meth`:accept_drag_move_event`,drop_event()
を参照してください。
- accept_enter_event(event, mime_data)[ソース]¶
このインタフェースアクションがドラッグイベントを処理できる場合、このメソッドは True を返す必要があります。イベントで accept/ignore を呼び出さないでください。これは calibre UI によって処理されます。
- accept_drag_move_event(event, mime_data)[ソース]¶
このインタフェースアクションがドラッグイベントを処理できる場合、このメソッドは True を返す必要があります。イベントで accept/ignore を呼び出さないでください。これは calibre UI によって処理されます。
- drop_event(event, mime_data)[ソース]¶
このインタフェースアクションがドロップイベントを処理できる場合、このメソッドはいくつかの有用なアクションを実行し、True を返す必要があります。イベントで accept/ignore を呼び出さないでください。これは calibre UI によって処理されます。この関数では、ブロッキング/ロング操作を実行しないでください。代わりに、信号を発するか、QTimer.singleShot を使用して、すばやく戻ります。例については、ビルトインのアクションを参照してください。
QMenu にアクションを簡単に追加するための便利な方法。作成された QAction を返します。このアクションには、1つの追加属性 calibre_shortcut_unique_name があります。これは、None でない場合、このアクションがキーボードマネージャに登録される一意の名前を参照します。
- パラメータ:
menu -- 新しく作成されたアクションが追加される QMenu
unique_name -- このアクションの一意の名前。これはグローバルに一意である必要があるため、できるだけわかりやすくします。疑わしい場合は、UUID を追加してください。
text -- アクションのテキスト。
icon -- Either a QIcon or a file name. The file name is passed to the QIcon.ic() builtin, so you do not need to pass the full path to the images folder.
shortcut -- 文字列、文字列のリスト、None または False。False の場合、このアクションのキーボードショートカットは登録されません。None の場合、デフォルトのキーバインドのないキーボードショートカットが登録されます。文字列と文字列のリストは、指定されたデフォルトのキーバインドでショートカットを登録します。
description -- このアクションの説明。ツールチップを設定するために使用されます。
triggered -- 作成されたアクションのトリガーされたシグナルに接続されている呼び出し可能オブジェクト。
shortcut_name -- このアクションのキーボードショートカットをカスタマイズするときにユーザに表示されるテキスト。デフォルトでは text` の値に設定されています。
persist_shortcut -- `` persist_shortcut`` が True に設定されていない限り、他のキーボードショートカットを編集すると、常に表示されるとは限らない、またはライブラリに依存するアクションのショートカットが表示されなくなる場合があります。
- load_resources(names)[ソース]¶
このプラグインがZIPファイル (ユーザが追加したプラグイン) で提供されている場合、このメソッドを使用すると、ZIPファイルからリソースをロードできます。
画像を読み込む例:
pixmap = QPixmap() pixmap.loadFromData(tuple(self.load_resources(['images/icon.png']).values())[0]) icon = QIcon(pixmap)
- パラメータ:
names -- / を区切り文字として使用した、ZIPファイル内のリソースへのパスのリスト
- 戻り値:
{name : file_contents}
形式の辞書。ZIPファイルで見つからなかった名前は、辞書に表示されません。
- genesis()[ソース]¶
このプラグインを設定します。初期化中に 1 回だけ呼び出されます。self.gui が利用可能です。
action_spec
で指定されたアクションは、self.qaction
として使用できます。
- location_selected(loc)[ソース]¶
calibre に表示されている本リストが変更されるたびに呼び出されます。現在、loc の値は、``library, main, card and cardb``です。
このメソッドは、場所に応じて、このアクションとそのサブアクションを有効/無効にする必要があります。
- library_about_to_change(olddb, db)[ソース]¶
現在のライブラリが変更されるたびに呼び出されます。
- パラメータ:
olddb -- 前のライブラリに関連する LibraryDatabase。
db -- 新しいライブラリに関連する LibraryDatabase。
- gui_layout_complete()[ソース]¶
メイン GUI のレイアウトが完了すると、アクションごとに1回呼び出されます。アクションでレイアウトを変更する必要がある場合は、
initialization_complete()
ではなく、ここで変更する必要があります。
- class calibre.customize.InterfaceActionBase(*args, **kwargs)[ソース]¶
ベースクラス:
Plugin
- supported_platforms = ['windows', 'osx', 'linux']¶
このプラグインが動作するプラットフォームのリスト。例:
['windows', 'osx', 'linux']
- author = 'Kovid Goyal'¶
このプラグインの作成者
- type = 'ユーザインタフェース上のアクション'¶
このプラグインのタイプ。GUI でプラグインを分類するために使用されます
- can_be_disabled = False¶
False にすると、ユーザがこのプラグインを無効にできなくなります。注意して使用してください。
設定プラグイン¶
- class calibre.customize.PreferencesPlugin(plugin_path)[ソース]¶
ベースクラス:
Plugin
環境設定ダイアログに表示されるウィジェットを表すプラグイン。
このプラグインには、重要なメソッドが1つだけあります。
create_widget()
です。プラグインのさまざまなフィールドは、UI でのプラグインの分類方法を制御します。- supported_platforms = ['windows', 'osx', 'linux']¶
このプラグインが動作するプラットフォームのリスト。例:
['windows', 'osx', 'linux']
- author = 'Kovid Goyal'¶
このプラグインの作成者
- type = '環境設定'¶
このプラグインのタイプ。GUI でプラグインを分類するために使用されます
- can_be_disabled = False¶
False にすると、ユーザがこのプラグインを無効にできなくなります。注意して使用してください。
- config_widget = None¶
ConfigWidgetInterface を実装する ConfigWidget という名前のクラスを含むモジュールへのパスをインポートします。
create_widget()
によって使用されます。
- category = None¶
このプラグインが含まれるべきカテゴリ
- gui_category = None¶
このプラグインのユーザに表示されるカテゴリ名
- gui_name = None¶
このプラグインのユーザに表示される名前
- icon = None¶
このプラグインのアイコンは絶対パスである必要があります
- description = None¶
ツールチップなどに使用される説明
- create_widget(parent=None)[ソース]¶
このプリファレンスのグループを設定するために使用される実際の Qt ウィジェットを作成して返します。ウィジェットは
calibre.gui2.preferences.ConfigWidgetInterface
を実装する必要があります。デフォルトの実装では、
config_widget
を使用してウィジェットをインスタンス化します。
- class calibre.gui2.preferences.ConfigWidgetInterface[ソース]¶
このクラスは、環境設定ダイアログに表示されるすべてのウィジェットが実装する必要のあるインタフェースを定義します。このインタフェースを実装し、さまざまな便利なメソッドも定義する基底クラスについては、
ConfigWidgetBase
を参照してください。- changed_signal = None¶
このシグナルは、ユーザがこのウィジェットの値を変更するたびに発行される必要があります
- supports_restoring_to_defaults = True¶
restore_to_defaults()
メソッドが実装されている場合は、True に設定します。
- restore_defaults_desc = 'デフォルト値に設定を戻します。デフォルト設定を実際に保存するには「適用」をクリックしてください。'¶
"デフォルトに戻す" ボタンのツールチップ
- genesis(gui)[ソース]¶
ウィジェットが表示される前に 1 回呼び出され、必要なセットアップを実行する必要があります。
- パラメータ:
gui -- メイン calibre のグラフィカルユーザインタフェース
- initialize()[ソース]¶
すべての構成値を初期値(構成ファイルに保存されている値)に設定する必要があります。"return" 文はオプションです。ダイアログを表示しない場合は False を返します。
- class calibre.gui2.preferences.ConfigWidgetBase(parent=None)[ソース]¶
チェックボックス、コンボボックス、テキストフィールドなどの標準構成ウィジェットを簡単に追加するためのコードを含む基底クラス。
register()
メソッドを参照してください。このクラスは、登録された設定の変更通知、デフォルトへのリセット、GUI オブジェクトと構成オブジェクト間の変換などを自動的に処理します。
構成ウィジェットがこのクラスを継承しているが、登録されていない設定が含まれている場合は、
ConfigWidgetInterface
メソッドをオーバーライドし、オーバーライド内で基底クラスメソッドを呼び出す必要があります。- changed_signal¶
このシグナルは、ユーザがこのウィジェットの値を変更するたびに発行される必要があります
- supports_restoring_to_defaults = True¶
restore_to_defaults()
メソッドが実装されている場合は、True に設定します。
- register(name, config_obj, gui_name=None, choices=None, restart_required=False, empty_string_is_None=True, setting=<class 'calibre.gui2.preferences.Setting'>)[ソース]¶
設定を登録します。
- パラメータ:
name -- 設定名
config -- 設定の読み取り/書き込みを行う構成オブジェクト
gui_name -- 設定を変更するためのインターフェースを提供する GUI オブジェクトの名前。デフォルトでは、
'opt_' + name
と見なされます。choices -- この設定が複数選択 (コンボボックス) ベースの設定である場合、選択肢のリスト。このリストは、次の形式の 2 つの要素タプルのリストです:
[(gui name, value), ...]
setting -- この設定の管理を担当するクラス。デフォルトのクラスはほとんどすべてのケースを処理するため、このパラメータが使用されることはめったにありません。
- initialize()[ソース]¶
すべての構成値を初期値(構成ファイルに保存されている値)に設定する必要があります。"return" 文はオプションです。ダイアログを表示しない場合は False を返します。