Документация по 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 = 'Основной'¶
Тип плагина. Используется для категоризации в графической оболочке.
- initialize()[исходный код]¶
Вызывается один раз при инициализации подключаемых модулей calibre. Плагины повторно инициализируются каждый раз, когда добавляется новый плагин. Также обратите внимание, что если плагин запускается в рабочем процессе, например, добавлении книг, то плагин будет инициализирован для каждого нового рабочего процесса.
Выполните здесь любую инициализацию конкретного плагина, например, извлечение ресурсов из ZIP-файла плагина. Путь к ZIP-файлу доступен как
self.plugin_path
.Обратите внимание, что на данном этапе
self.site_customization
сейчас недоступен.
- config_widget()[исходный код]¶
Реализуйте этот метод и
save_settings()
в своем плагине, чтобы использовать настраиваемое диалоговое окно конфигурации, а не полагаться на простую настройку по умолчанию на основе строк.Этот метод, если он реализован, должен возвращать QWidget. Виджет может иметь необязательный метод validate(), который не принимает аргументов и вызывается сразу после того, как пользователь нажимает кнопку ОК. Изменения применяются тогда и только тогда, когда метод возвращает True.
Если по какой-либо причине вы не можете выполнить настройку в это время, верните кортеж из двух строк (сообщение, подробности), они будут отображаться как диалоговое окно с предупреждением для пользователя, и процесс будет прерван.
- save_settings(config_widget)[исходный код]¶
Сохраните настройки, указанные пользователем, с помощью config_widget.
- Параметры:
config_widget – Виджет, возвращаемый
config_widget()
.
- do_user_config(parent=None)[исходный код]¶
Этот метод показывает диалог конфигурации для этого плагина. Он возвращает True, если пользователь нажимает OK, в противном случае - 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-справку, иначе вернуть текстовую справку.
- temporary_file(suffix)[исходный код]¶
Возвращает файловый объект, который является временным файлом в файловой системе. Этот файл останется доступным даже после закрытия и будет удален только при завершении работы интерпретатора. Используйте член
name
возвращаемого объекта, чтобы получить полный путь к созданному временному файлу- Параметры:
suffix – Суффикс временного файла.
- cli_main(args)[исходный код]¶
Этот метод является основной точкой входа для интерфейса командной строки ваших плагинов. Он вызывается, когда пользователь делает: calibre-debug -r «Plugin Name». Любые переданные аргументы присутствуют в переменной args.
FileTypePlugin¶
- class calibre.customize.FileTypePlugin(plugin_path)[исходный код]¶
Базовые классы:
Plugin
Плагин, связанный с определенным набором типов файлов.
- file_types = {}¶
Набор типов файлов, для которых следует запускать этот плагин. Используйте „*“ для всех типов файлов. Например:
{'lit', 'mobi', 'prc'}
- on_import = False¶
Если True, этот плагин запускается при добавлении книг в базу данных
- on_postimport = False¶
Если True, этот плагин запускается после добавления книг в базу данных. В этом случае вызываются методы плагина postimport и postadd.
- on_postconvert = False¶
Если True, этот плагин запускается после конвертации книги. В этом случае вызывается postconvert метод плагина.
- on_postdelete = False¶
Если True, этот плагин запускается после удаления файла книги из базы данных. В этом случае вызывается postdelete метод плагина.
- on_preprocess = False¶
Если True, этот плагин запускается непосредственно перед конвертацией.
- on_postprocess = False¶
Если True, этот плагин запускается после конвертации в финальный файл, созданный плагином вывода конвертации.
- type = 'Тип файла'¶
Тип плагина. Используется для категоризации в графической оболочке.
- run(path_to_ebook)[исходный код]¶
Запустить плагин. Должен быть реализован в подклассах. Он должен выполнить все необходимые изменения в электронной книге и вернуть абсолютный путь к измененной электронной книге. Если никаких изменений не требуется, он должен вернуть путь к исходной электронной книге. Если обнаружена ошибка, должно возникнуть исключение. Реализация по умолчанию просто возвращает путь к исходной электронной книге. Обратите внимание, что путь к исходному файлу (до запуска плагинов любого типа файла доступен как self.original_path_to_file).
Изменённый файл электронной книги должен быть создан с помощью метода
temporary_file()
- Параметры:
path_to_ebook – Абсолютный путь к электронной книге.
- Результат:
Абсолютный путь к изменённой электронной книге.
- postimport(book_id, book_format, db)[исходный код]¶
Вызывается пост-импортом, т.е. после того, как файл книги был добавлен в базу данных. Обратите внимание, что это отличается от
postadd()
, который вызывается при первом создании записи книги. Этот метод вызывается всякий раз, когда новый файл добавляется к записи книги. Полезно для изменения записи книги на основе содержимого вновь добавленного файла.- Параметры:
book_id – Идентификатор базы данных добавленной книги.
book_format – Тип файла добавленной книги.
db – Библиотека базы данных.
- postconvert(book_id, book_format, db)[исходный код]¶
Вызывается после конвертации, т. е. после того, как файл выходной книги конвертации был добавлен в базу данных. Обратите внимание, что он запускается только после преобразования, а не после добавления книги. Это полезно для изменения записи книги на основе содержимого вновь добавленного файла.
- Параметры:
book_id – Идентификатор базы данных добавленной книги.
book_format – Тип файла добавленной книги.
db – Библиотека базы данных.
- postdelete(book_id, book_format, db)[исходный код]¶
Вызывается после удаления, т. е. после того, как файл книги был удален из базы данных. Обратите внимание, что он не запускается при удалении записи книги, а только при удалении одного или нескольких форматов из книги. Это полезно для изменения записи книги на основе формата удаленного файла.
- Параметры:
book_id – Идентификатор базы данных добавленной книги.
book_format – Тип файла добавленной книги.
db – Библиотека базы данных.
- postadd(book_id, fmt_map, db)[исходный код]¶
Вызывается post add, т.е. после того, как книга была добавлена в БД. Обратите внимание, что это отличается от
postimport()
, который вызывается после того, как в книгу был добавлен отдельный файл книги. postadd() вызывается только тогда, когда вся запись книги, возможно, с более чем одним файлом книги, была создана впервые. Это полезно, если вы хотите изменить запись книги в базе данных при первом добавлении книги в calibre- Параметры:
book_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 = (7, 23, 0)¶
Версия этого плагина в виде 3 выпусков (основной, дополнительный, ревизия)
- author = 'Kovid Goyal'¶
Автор этого плагина
- type = 'Чтение метаданных'¶
Тип плагина. Используется для категоризации в графической оболочке.
- get_metadata(stream, type)[исходный код]¶
Возвращает метаданные для файла, представленного потоком (объект, подобный файлу, который поддерживает чтение). Вызывает исключение при ошибке во входных данных.
- Параметры:
type – Тип файла. Гарантированно будет одной из записей в
file_types
.- Результат:
Объект
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 = (7, 23, 0)¶
Версия этого плагина в виде 3 выпусков (основной, дополнительный, ревизия)
- author = 'Kovid Goyal'¶
Автор этого плагина
- type = 'Запись метаданных'¶
Тип плагина. Используется для категоризации в графической оболочке.
- set_metadata(stream, mi, type)[исходный код]¶
Установить метаданные для файла, представленного потоком (объект, подобный файлу, который поддерживает чтение). Вызвать исключение при ошибке во входных данных.
- Параметры:
type – Тип файла. Гарантированно будет одной из записей в
file_types
.mi – Объект
calibre.ebooks.metadata.book.Metadata
Плагины каталогизации¶
- class calibre.customize.CatalogPlugin(plugin_path)[исходный код]¶
Базовые классы:
Plugin
Плагин, реализующий генератор каталогов.
- file_types = {}¶
Тип выходного файла, для которого следует запустить этот плагин. Например: „epub“ или „xml“.
- type = 'Генератор каталога'¶
Тип плагина. Используется для категоризации в графической оболочке.
- cli_options = []¶
Параметры CLI парсера, специфичные для этого плагина, объявленные как namedtuple Option:
из коллекций импортировать namedtuple Option = namedtuple(„Option“, „option, default, dest, help“) cli_options = [Option(“–catalog-title“, default = „My Catalog“, dest = „catalog_title“, help = (_(„Title of generated catalog. nDefault:“) + « „» + „%default“ + «“»))] cli_options parsed в 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 = 'Источник метаданных'¶
Тип плагина. Используется для категоризации в графической оболочке.
- author = 'Kovid Goyal'¶
Автор этого плагина
- supported_platforms = ['windows', 'osx', 'linux']¶
Список платформ, на которых работает этот плагин. Например:
['windows', 'osx', 'linux']
- capabilities = frozenset({})¶
Набор возможностей, поддерживаемых этим плагином. Полезные возможности: „identify“, „cover“
- touched_fields = frozenset({})¶
Список полей метаданных, которые потенциально могут быть загружены этим плагином на этапе идентификации
- has_html_comments = False¶
Установите значение True, если ваш плагин возвращает комментарии в формате HTML.
- supports_gzip_transfer_encoding = False¶
Установка этого значения в True означает, что объект браузера укажет, что он поддерживает кодировку передачи gzip. Это может ускорить загрузку, но сначала убедитесь, что источник действительно поддерживает кодировку передачи gzip.
- ignore_ssl_errors = False¶
Установите значение True, чтобы игнорировать ошибки сертификата HTTPS при подключении к этому источнику.
- 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 будут проигнорированы.
- is_configured()[исходный код]¶
Верните False, если ваш плагин нужно настроить, прежде чем его можно будет использовать. Например, может потребоваться имя пользователя/пароль/ключ API.
- customization_help()[исходный код]¶
Вернуть строку с информацией о том, как настроить этот плагин. По умолчанию вызывается
NotImplementedError
, что указывает на то, что плагин не требует настройки.Если вы повторно реализуете этот метод в своем подклассе, пользователю будет предложено ввести строку в качестве настройки для этого плагина. Строка настройки будет доступна как
self.site_customization
.Настройкой сайта может быть что угодно, например, путь к необходимому двоичному файлу на компьютере пользователя.
- Параметры:
gui – Если True, вернуть HTML-справку, иначе вернуть текстовую справку.
- config_widget()[исходный код]¶
Реализуйте этот метод и
save_settings()
в своем плагине, чтобы использовать настраиваемое диалоговое окно конфигурации, а не полагаться на простую настройку по умолчанию на основе строк.Этот метод, если он реализован, должен возвращать QWidget. Виджет может иметь необязательный метод validate(), который не принимает аргументов и вызывается сразу после того, как пользователь нажимает кнопку ОК. Изменения применяются тогда и только тогда, когда метод возвращает True.
Если по какой-либо причине вы не можете выполнить настройку в это время, верните кортеж из двух строк (сообщение, подробности), они будут отображаться как диалоговое окно с предупреждением для пользователя, и процесс будет прерван.
- 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. Исключает связки (необязательно) и знаки препинания.
- split_jobs(jobs, num)[исходный код]¶
Разделить список заданий на максимальное количество групп, как можно равномернее.
- test_fields(mi)[исходный код]¶
Вернуть первое поле из self.touched_fields, которое имеет значение null для объекта mi
- clean_downloaded_metadata(mi)[исходный код]¶
Вызовите этот метод в методе идентификации вашего плагина, чтобы нормализовать метаданные перед помещением объекта Metadata в result_queue. Можно использовать собственный алгоритм, подходящий для вашего источника метаданных.
- get_book_url(identifiers)[исходный код]¶
Вернуть 3-кортеж или None. Кортеж из трёх элементов имеет форму: (identifier_type, identifier_value, URL). URL-адрес - это URL-адрес книги, идентифицированный идентификаторами в этом источнике. identifier_type, identifier_value указывают идентификатор, соответствующий URL-адресу. Этот URL-адрес должен быть доступен для просмотра человеком, использующим браузер. Он предназначен для предоставления пользователю интерактивной ссылки, чтобы пользователь мог легко перейти на страницу с книгами в этом источнике. Если URL-адрес не найден, вернуть None. Этот метод должен быть быстрым и последовательным, поэтому используйте его только в том случае, если возможно построить URL-адрес из известной схемы с заданными идентификаторами.
- get_book_url_name(idtype, idval, url)[исходный код]¶
Вернуть человекочитаемое имя из возвращаемого значения get_book_url ().
- get_book_urls(identifiers)[исходный код]¶
Переопределите этот метод, если вы хотите вернуть несколько URL-адресов для этой книги. Вернуть список 3-tuples (кортеж из трех элементов). По умолчанию этот метод просто вызывает
get_book_url()
.
- get_cached_cover_url(identifiers)[исходный код]¶
Возвращает кешированный URL-адрес обложки для книги, идентифицированной словарем идентификаторов, или None, если такой URL-адрес не существует.
Обратите внимание, что этот метод должен возвращать только проверенные 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/и т.д.
Если идентификаторы указаны и совпадений не найдено, и этот источник метаданных не хранит все связанные идентификаторы (например, все ISBN книги), этот метод должен повторить попытку, указав только заголовок и автора (при условии, что они были указаны).
Если этот источник метаданных также предоставляет обложки, URL-адрес обложки должен быть кэширован, чтобы при последующем вызове API получения обложек с тем же ISBN/специальным идентификатором не нужно было снова получать URL-адрес обложки. Используйте для этого API кеширования.
Каждый объект Metadata, помещенный в result_queue этим методом, должен иметь атрибут source_relevance, который является целым числом, указывающим порядок, в котором результаты были возвращены источником метаданных для этого запроса. Это целое число будет использоваться
compare_identify_results()
. Если порядок не важен, установите его в 0 (ноль) для каждого результата.Прежде чем объект Metadata будет помещен в result_queue, убедитесь, что вся информация сопоставления обложки/ISBN закэширована.
- Параметры:
log – Объект журнала, используйте его для вывода отладочной информации/ошибок
result_queue – Очередь результатов, результаты должны быть помещены в неё. Каждый результат - это объект метаданных.
abort – Если abort.is_set() возвращает True, прервать дальнейшую обработку и вернутся как можно скорее.
title – Название книги может быть None
authors – Список авторов книги может быть None
identifiers – Словарь других идентификаторов, чаще всего {„isbn“: „1234 …“}
timeout – Тайм-аут в секундах, ни один сетевой запрос не должен зависать дольше таймаута.
- Результат:
None, если ошибок не было, иначе - представление ошибки в Юникоде, подходящее для показа пользователю.
- 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-адреса обложек для повышения эффективности, при возможности. Когда кэшированных данных нет, большинство плагинов просто вызывают идентификацию и используют её результаты.
Если параметр get_best_cover имеет значение True и этот плагин может получить несколько обложек, он должен получить только «лучшую».
- class calibre.ebooks.metadata.sources.base.InternalMetadataCompareKeyGen(mi, source_plugin, title, authors, identifiers)[исходный код]¶
Сгенерировать ключ сортировки для сравнения релевантности объектов метаданных с учётом поискового запроса. Используется только для сравнения результатов из одного источника метаданных, но не из разных источников.
Ключ сортировки гарантирует, что сортировка в порядке возрастания является сортировкой по убыванию релевантности.
Алгоритм такой:
Предпочитать результаты, у которых есть хотя бы один идентификатор, такой же как у запроса
Предпочитать результаты с кешированным URL обложки
Предпочитать результаты со всеми заполненными полями
Предпочитать результаты на том же языке, что и текущий язык пользовательского интерфейса
Предпочитать результаты, которые точно соответствуют названию запроса
Предпочитать результаты с более длинными комментариями, более чем на 10% длиннее
- Используйте релевантность результата, полученную в результате поиска источника метаданных
движок
Плагины преобразования¶
- class calibre.customize.conversion.InputFormatPlugin(*args)[исходный код]¶
Базовые классы:
Plugin
InputFormatPlugins отвечают за преобразование документа в HTML + OPF + CSS + и т. д. Результаты преобразования должны быть закодированы в UTF-8. Основное действие происходит в
convert()
.- type = 'Ввод для конвертации'¶
Тип плагина. Используется для категоризации в графической оболочке.
- 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. Устанавливается динамически в методе convert, если входные файлы могут быть как коллекциями изображений, так и коллекциями без изображений. Если вы установите для него значение True, то реализуйте метод get_images(), который возвращает список изображений.
- core_usage = 1¶
Количество ядер процессора, используемых этим плагином. Значение -1 означает, что он использует все доступные ядра.
- for_viewer = False¶
Если установлено значение True, плагин ввода будет выполнять специальную обработку, чтобы сделать его вывод подходящим для просмотра.
- output_encoding = 'utf-8'¶
Кодировка, в которой этот модуль ввода создает файлы. Значение None означает, что кодировка не определена и должна определяться индивидуально.
- common_options = {<calibre.customize.conversion.OptionRecommendation object>}¶
Параметры, общие для всех плагинов формата ввода. Не переопределять в подклассах. Вместо этого используйте
options
. Каждая опция должна быть экземпляромOptionRecommendation
.
- options = {}¶
Параметры для настройки поведения этого плагина. Каждая опция должна быть экземпляром
OptionRecommendation
.
- recommendations = {}¶
Набор из 3-tuples (трех кортежей) формы (option_name, recommended_value, recommendation_level)
- get_images()[исходный код]¶
Вернуть список абсолютных путей к изображениям, если этот входной плагин представляет коллекцию изображений. Список изображений находится в том же порядке, что и корешок и оглавление.
- convert(stream, options, file_ext, log, accelerators)[исходный код]¶
Этот метод должен быть реализован в подклассах. Он должен возвращать путь к созданному файлу OPF или экземпляру
OEBBook
. Весь вывод должен содержаться в текущей папке. Если этот плагин создает файлы вне текущей папки, их необходимо удалить/пометить для удаления, прежде чем этот метод вернёт значение.- Параметры:
stream – Файловый объект, содержащий входной файл.
options – Параметры для настройки процесса конвертации. Гарантированно наличие атрибутов, соответствующих всем параметрам, заявленным этим плагином. Кроме того, будет подробный атрибут, принимающий целые значения от нуля и выше. Большие числа означают более подробную информацию. Ещё один полезный атрибут - input_profile, который является экземпляром :class:calibre.customize.profiles.InputProfile.
file_ext – Расширение (без .) входного файла. Гарантируется, что это будет один из file_types, поддерживаемых этим плагином.
log – Объект
calibre.utils.logging.Log
. Весь вывод должен использовать этот объект.accelerators – Словарь различной информации, которую плагин ввода может легко получить, что ускорит последующие этапы преобразования.
- postprocess_book(oeb, opts, log)[исходный код]¶
Вызывается, чтобы разрешить плагину ввода выполнять постобработку после анализа книги.
- specialize(oeb, opts, log, output_fmt)[исходный код]¶
Вызывается, чтобы позволить плагину ввода специализировать анализируемую книгу для определенного формата вывода. Вызывается после postprocess_book и перед выполнением любых преобразований в проанализированной книге.
- gui_configuration_widget(parent, get_option_by_name, get_option_help, db, book_id=None)[исходный код]¶
Вызывается для создания виджета, используемого для настройки этого плагина в графическом интерфейсе calibre. Виджет должен быть экземпляром класса PluginWidget. См. примеры встроенных модулей ввода.
- class calibre.customize.conversion.OutputFormatPlugin(*args)[исходный код]¶
Базовые классы:
Plugin
OutputFormatPlugins отвечают за преобразование документа OEB (OPF + HTML) в выходную электронную книгу.
Предполагается, что документ OEB закодирован в UTF-8. Основное действие происходит в
convert()
.- type = 'Вывод для конвертации'¶
Тип плагина. Используется для категоризации в графической оболочке.
- 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-tuples (трех кортежей) формы (option_name, recommended_value, recommendation_level)
- property description¶
str(object=““) -> str str(bytes_or_buffer[, encoding[, errors]]) -> str
Создайте новый строковый объект из данного объекта. Если указаны кодировка или ошибки, то объект должен предоставить буфер данных, который будет декодирован с использованием данной кодировки и обработчика ошибок. В противном случае возвращает результат object.__str__() (если определено) или repr(object). кодировка по умолчанию sys.getdefaultencoding(). по умолчанию используется „strict“.
- convert(oeb_book, output, input_plugin, opts, log)[исходный код]¶
Отрендерить содержимое oeb_book (который является экземпляром
calibre.ebooks.oeb.OEBBook
) в файл, указанный в output.- Параметры:
output – Либо файл, подобный объекту, либо строка. Если это строка, это путь к папке, которая может существовать, а может и не существовать. Плагин вывода должен записывать свой вывод в эту папку. Если это объект, подобный файлу, плагин вывода должен записывать свой вывод в файл.
input_plugin – Плагин ввода, который использовался в начале конвейера конвертации.
opts – Опции конвертации. Гарантировано наличие атрибутов, соответствующих рекомендациям OptionRecommendations этого плагина.
log – Логгер. Печатать отладочные/информационные сообщения и т. д.
- specialize_options(log, opts, input_fmt)[исходный код]¶
Может использоваться для изменения значений параметров конвертации, используемых конвейером конвертации.
- specialize_css_for_output(log, opts, item, stylizer)[исходный код]¶
Может использоваться для внесения изменений в CSS во время процесса уплощения CSS.
- Параметры:
item – HTML-файл элемента, который обрабатывается
stylizer – Объект Stylizer, содержащий уплощённые стили для элемента. Вы можете получить стиль для любого элемента с помощью stylizer.style(element).
- gui_configuration_widget(parent, get_option_by_name, get_option_help, db, book_id=None)[исходный код]¶
Вызывается для создания виджета, используемого для настройки этого плагина в графическом интерфейсе calibre. Виджет должен быть экземпляром класса PluginWidget. См. примеры встроенных модулей ввода.
Драйверы устройств¶
Базовый класс для всех драйверов устройств DevicePlugin
. Однако, если ваше устройство представляет себя для операционной системы как USBMS-накопитель, следует использовать вместо него класс USBMS, поскольку он реализует всю логику, необходимую для поддержки таких типов устройств.
- class calibre.devices.interface.DevicePlugin(plugin_path)[исходный код]¶
Базовые классы:
Plugin
Определяет интерфейс, который должен быть реализован серверными модулями, которые взаимодействуют с устройством для чтения электронных книг.
- type = 'Интерфейс устройства'¶
Тип плагина. Используется для категоризации в графической оболочке.
- FORMATS = ['lrf', 'rtf', 'pdf', 'txt']¶
Упорядоченный список поддерживаемых форматов
- VENDOR_ID = 0¶
VENDOR_ID может быть целым числом, списком целых чисел или словарем. Если это словарь, то это должен быть словарь словарей в форме:
{ integer_vendor_id : { product_id : [list of BCDs], ... }, ... }
- PRODUCT_ID = 0¶
Целое число или список целых чисел
- BCD = None¶
BCD может иметь значение None, чтобы не различать устройства на основе BCD, или это может быть список BCD номеров всех устройств, поддерживаемых этим драйвером.
- THUMBNAIL_HEIGHT = 68¶
Высота миниатюр на устройстве
- THUMBNAIL_COMPRESSION_QUALITY = 75¶
Качество сжатия миниатюр. Значение ближе к 100 - миниатюры лучшего качества с минимумом артефактов сжатия. Размер файлов миниатюр увеличивается.
- WANTS_UPDATED_THUMBNAILS = False¶
Значение параметра True, если устройство поддерживает обновление миниатюр обложек во время sync_booklists. При значении True у device.py запрашивается обновление миниатюр обложек при сопоставлении книг.
- CAN_SET_METADATA = ['title', 'authors', 'collections']¶
Можно ли установить метаданные книг через графический интерфейс.
- CAN_DO_DEVICE_DB_PLUGBOARD = False¶
Может ли устройство обрабатывать коммутации метаданных device_db
- path_sep = '/'¶
Разделитель путей для путей к книгам на устройстве
- icon = 'reader.png'¶
Значок для этого устройства
- UserAnnotation¶
псевдоним для
Annotation
- OPEN_FEEDBACK_MESSAGE = None¶
В графическом интерфейсе это отображается как сообщение, если в строке статуса не None. Полезно, если открытие может занять много времени
- 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()
после загрузки списков книг для получения информации о диске.
- ASK_TO_ALLOW_CONNECT = False¶
Если установлено значение True, при первом обнаружении устройства calibre спросит пользователя, хочет ли он управлять устройством с помощью calibre. Если установить параметру значение True, то вы должны реализовать
get_device_uid()
иignore_connected_device()
иget_user_blacklisted_devices()
иset_user_blacklisted_devices()
- user_feedback_after_callback = None¶
Установите значение как словарь формы {„title“: title, „msg“: msg, „det_msg“: detail_msg}, чтобы calibre отображал всплывающее сообщение для пользователя после выполнения некоторых обратных вызовов (в настоящее время только 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.
Просканировать устройства, с которыми может работать этот драйвер. Должен возвращать объект устройства, если устройство найдено. Этот объект будет передан методу open() как connected_device. Если устройство не найдено, вернуть None. Возвращаемый объект может быть любым, calibre его не использует, он передается только в open().
Этот метод периодически вызывается графическим интерфейсом пользователя, поэтому убедитесь, что он не слишком ресурсоемкий. Используйте кеш, чтобы избежать повторного сканирования системы.
- Параметры:
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 – Device information from the device scanner
- can_handle_windows(usbdevice, debug=False)[исходный код]¶
Необязательный метод для выполнения дальнейших проверок устройства, чтобы узнать, способен ли этот драйвер обрабатывать его. Если это не так, он должен вернуть False. Этот метод вызывается только после того, как поставщик, идентификаторы продуктов и bcd совпадают, поэтому он может выполнять некоторые относительно трудоемкие проверки. Реализация по умолчанию возвращает True. Этот метод вызывается только в Windows. См. также
can_handle()
.Для устройств на базе USBMS этот метод по умолчанию делегирует
can_handle()
. Таким образом, вам нужно только переопределитьcan_handle()
в подклассе USBMS.- Параметры:
usbdevice – USB-устройство, возвращенное
calibre.devices.winusb.scan_usb_devices()
- 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 – Устройство, которое мы пытаемся открыть. Это кортеж из (идентификатор поставщика, идентификатор продукта, bcd, название производителя, название продукта, серийный номер устройства). Однако у некоторых устройств нет серийного номера, и в Windows присутствуют только первые три поля, остальные - None.
library_uuid – UUID текущей библиотеки calibre. Может иметь значение None, если библиотеки нет (например, при использовании из командной строки).
- eject()[исходный код]¶
Размонтировать/извлечь устройство из ОС. Не проверяется есть ли ожидающие задания графического интерфейса пользователя, которым необходимо взаимодействовать с устройством.
ПРИМЕЧАНИЕ. Этот метод нельзя вызывать в том же потоке, что и остальные методы устройства.
- post_yank_cleanup()[исходный код]¶
Вызывается, если пользователь дергает устройство, не извлекая его предварительно.
- set_progress_reporter(report_progress)[исходный код]¶
Установить функцию для сообщения информации о ходе выполнения.
- Параметры:
report_progress – Функция, которая вызывается с % прогресса (число от 0 до 100) для различных задач. Если она вызывается с -1, это означает, что задача не имеет информации о ходе выполнения.
- get_device_information(end_session=True)[исходный код]¶
Спросить у устройства информацию об устройстве. См. L{DeviceInfoQuery}.
- Результат:
(имя устройства, версия устройства, версия программного обеспечения на устройстве, тип MIME). Кортеж может дополнительно иметь пятый элемент, который является словарем информации о накопителе. См. пример usbms.driver.
- get_driveinfo()[исходный код]¶
Вернуть словарь driveinfo. Обычно вызывается из get_device_information(), но если загрузка информации о диске для этого драйвера происходит медленно, то следует установить 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). Если на конкретном устройстве нет ни одного из этих местоположений, оно должно вернуть 0.
- free_space(end_session=True)[исходный код]¶
- Получить свободное место на точках монтирования:
Основная память
Карта 1
Карта 2
- Результат:
Список из трех элементов со свободным пространством в байтах (1, 2, 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 должен содержать слово «card», еслиon_card
не равно None, в противном случае он должен содержать слово «memory».- Параметры:
files – Список путей
names – Список имен файлов книг которые были уже загружены на устройство. len(names) == len(files)
metadata – Если не None, это список объектов
Metadata
. Идея состоит в том, чтобы использовать метаданные, чтобы определить, где на устройстве разместить книгу. len(metadata) == len(files). Помимо обычной обложки (путь к обложке), также может быть атрибут эскиза, который следует использовать в предпочтении. Атрибут эскиза имеет форму (ширина, высота, данные обложки в формате jpeg).
- Результат:
Список трехэлементных кортежей. Список предназначен для передачи в
add_books_to_metadata()
.
- classmethod add_books_to_metadata(locations, metadata, booklists)[исходный код]¶
Добавить местоположения в списки книг. Эта функция не должна связываться с устройством.
- Параметры:
locations – Результат звонка L {upload_books}
metadata – Список объектов
Metadata
, такой же, как дляupload_books()
.booklists – Кортеж, содержащий результат вызовов (
books (oncard = None)()
,: meth:books(oncard=“carda“),: meth`books(oncard=“cardb“)`).
- delete_books(paths, end_session=True)[исходный код]¶
Удалять книги по путям на устройстве.
- classmethod remove_books_from_metadata(paths, booklists)[исходный код]¶
Удалить книги из списка метаданных. Эта функция не должна связываться с устройством.
- Параметры:
paths – пути к книгам на устройстве.
booklists – Кортеж, содержащий результат вызовов (
books (oncard = None)()
,: meth:books(oncard=“carda“),: meth`books(oncard=“cardb“)`).
- sync_booklists(booklists, end_session=True)[исходный код]¶
Обновить метаданные на устройстве.
- Параметры:
booklists – Кортеж, содержащий результат вызовов (
books (oncard = None)()
,: meth:books(oncard=“carda“),: meth`books(oncard=“cardb“)`).
- get_file(path, outfile, end_session=True)[исходный код]¶
Прочитать файл по
пути
на устройстве и записать его в outfile.- Параметры:
outfile – файловый объект, например
sys.stdout
, или результат вызоваopen()
.
- classmethod config_widget()[исходный код]¶
Должен вернуть QWidget. QWidget содержит настройки интерфейса устройства.
- classmethod save_settings(settings_widget)[исходный код]¶
Должно сохранить настройки на диск. Принимает виджет, созданный в
config_widget()
, и сохраняет все настройки на диск.
- classmethod settings()[исходный код]¶
Должно вернуть объект opts. Объект opts должен иметь как минимум один атрибут format_map, представляющий собой упорядоченный список форматов для устройства.
- set_plugboards(plugboards, pb_func)[исходный код]¶
предоставить драйверу текущий набор коммутационных панелей и функцию для выбора конкретной коммутационной панели. Этот метод вызывается непосредственно перед add_books и sync_booklists.
- pb_func - это вызываемый объект со следующей подписью:
def pb_func(device_name, format, plugboards)
You give it the current device name (either the class name or DEVICE_PLUGBOARD_NAME), the format you are interested in (a „real“ format or „device_db“), and the plugboards (you were given those by set_plugboards, the same place you got this method).
- Результат:
Нет или один экземпляр коммутационной панели.
- set_driveinfo_name(location_code, name)[исходный код]¶
Задать имя устройства в файле информации о диске „name“. Этот параметр будет действовать до тех пор, пока файл не будет создан заново или имя не будет изменено снова.
Недисковые устройства должны реализовывать этот метод на основе кодов местоположения, возвращаемых методом get_device_information().
- prepare_addable_books(paths)[исходный код]¶
Учитывая список путей, возвращает другой список путей. Эти пути указывают на добавляемые версии книг.
Если при подготовке книги произошла ошибка, то вместо пути в возвращаемом списке для этой книги должна быть позиция из трёх кортежей: (исходный_путь, экземпляр исключения, трассировка)
- startup()[исходный код]¶
Вызывается, когда calibre запускает устройство. Выполните любую требуемую инициализацию. Обратите внимание, что можно создать несколько экземпляров класса, и, следовательно, __init__ можно вызывать несколько раз, но только один экземпляр будет вызывать этот метод. Этот метод вызывается в потоке устройства, а не в потоке графического интерфейса пользователя.
- shutdown()[исходный код]¶
Вызывается, когда calibre выключается навсегда или при подготовке к перезапуску. Сделайте любую необходимую очистку. Этот метод вызывается в потоке устройства, а не в потоке графического интерфейса пользователя.
- get_device_uid()[исходный код]¶
Должен возвращать уникальный идентификатор для текущего подключенного устройства (вызывается сразу после успешного вызова open()). Вы должны реализовать этот метод, если вы установите ASK_TO_ALLOW_CONNECT = True
- ignore_connected_device(uid)[исходный код]¶
Должно игнорировать устройство, идентифицированное uid (результат вызова get_device_uid()) в будущем. Вы должны реализовать этот метод, если вы установите ASK_TO_ALLOW_CONNECT = True. Обратите внимание, что эта функция вызывается сразу после open(), поэтому, если open() кэширует какое-то состояние, драйвер должен сбросить это состояние.
- get_user_blacklisted_devices()[исходный код]¶
Вернуть маппинг uid устройства к понятному имени для всех устройств, которые пользователь попросил игнорировать.
- set_user_blacklisted_devices(devices)[исходный код]¶
Задать список идентификаторов устройств, которые должны игнорироваться этим драйвером.
- specialize_global_preferences(device_prefs)[исходный код]¶
Реализуйте этот метод, если ваше устройство хочет переопределить конкретную настройку. Вы должны убедиться, что все сайты вызовов, которым требуется переопределение настроек, используют device_prefs[„something“] вместо 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()[исходный код]¶
Вызывается диспетчером устройств при запуске плагинов. Если этот метод возвращает строку, то а) он поддерживает интерфейс динамического управления диспетчера устройств и б) это имя должно использоваться при разговоре с плагином.
Этот метод можно вызвать в потоке графического интерфейса. Драйвер, реализующий этот метод, должен быть потокобезопасным.
- start_plugin()[исходный код]¶
Этот метод вызывается для запуска плагина. Плагин должен начать принимать подключения устройств, если он это делает. Если плагин уже принимает соединения, ничего не делайте.
Этот метод можно вызвать в потоке графического интерфейса. Драйвер, реализующий этот метод, должен быть потокобезопасным.
- stop_plugin()[исходный код]¶
Этот метод вызывается для остановки плагина. Плагин больше не должен принимать соединения и должен очищаться за собой. Вероятно этот метод должен вызывать выключение. Если плагин уже не принимает подключения, ничего не делайте.
Этот метод можно вызвать в потоке графического интерфейса. Драйвер, реализующий этот метод, должен быть потокобезопасным.
- get_option(opt_string, default=None)[исходный код]¶
Вернуть значение параметра, указанного в opt_string. Этот метод можно вызвать, когда плагин не запущен. Вернуть None, если параметр не существует.
Этот метод можно вызвать в потоке графического интерфейса. Драйвер, реализующий этот метод, должен быть потокобезопасным.
- set_option(opt_string, opt_value)[исходный код]¶
Установить значение параметра, обозначенного opt_string. Этот метод можно вызвать, когда плагин не запущен.
Этот метод можно вызвать в потоке графического интерфейса. Драйвер, реализующий этот метод, должен быть потокобезопасным.
- is_running()[исходный код]¶
Вернуть True, если плагин запущен, иначе false
Этот метод можно вызвать в потоке графического интерфейса. Драйвер, реализующий этот метод, должен быть потокобезопасным.
- synchronize_with_db(db, book_id, book_metadata, first_call)[исходный код]¶
Вызывается во время сопоставления книг, когда книга на устройстве сопоставляется с книгой в базе данных calibre. Метод отвечает за синхронизацию данных с устройства в базу данных calibre (при необходимости).
Метод должен возвращать кортеж с двумя значениями. Первое значение - это набор идентификаторов книг calibre, измененных, если база данных calibre была изменена, или None, если база данных не была изменена. Если первое значение является пустым набором, то метаданные для книги на устройстве обновляются метаданными calibre и возвращаются на устройство, но обновление графического интерфейса этой книги не выполняется. Полезно, если данные calibre верны, но их необходимо отправить на устройство.
Второе значение само по себе является кортежем с двумя значениями. Первое значение в кортеже указывает, следует ли отправлять на устройство формат книги. Цель состоит в том, чтобы разрешить проверку того, что книга на устройстве совпадает с книгой в calibre. Это значение должно быть None, если книга не отправляется, в противном случае возвращается базовое имя файла на устройстве (строка, вроде foobar.epub). Обязательно укажите расширение в имени. Подсистема устройства создаст задание send_books для всех книг, не возвращающих значений not-None. Примечание: кроме последующего извлечения расширения, имя игнорируется в тех случаях, когда устройство использует шаблон для генерации имени файла, в большинстве случаев так и происходит. Второе значение в возвращенном кортеже указывает, датирован ли формат будущей датой. Вернуть True, если это так, в противном случае вернуть False. calibre отобразит для пользователя диалоговое окно со списком всех книг датированных будущим.
Чрезвычайно важно: этот метод вызывается в потоке графического интерфейса. Он должен быть потокобезопасным по отношению к потоку диспетчера устройств.
book_id: идентификатор calibre книги в базе данных. book_metadata: объект метаданных для книги, поступающий с устройства. first_call: True, если это первый вызов во время синхронизации, в противном случае - False.
- class calibre.devices.interface.BookList(oncard, prefix, settings)[исходный код]¶
Базовые классы:
list
Список книг. Каждый объект Book должен иметь поля
название
авторы
размер (размер файла книги)
datetime (кортеж времени в формате UTC)
путь (путь на устройстве к книге)
thumbnail (может быть None). thumbnail - это либо объект str/bytes с данными изображения, либо он должен иметь атрибут image_path, в котором хранится абсолютный (собственный для платформы) путь к изображению.
теги (список строк, может быть пустым).
- supports_collections()[исходный код]¶
Вернуть True, если устройство поддерживает коллекции для этого списка книг.
- add_book(book, replace_metadata)[исходный код]¶
Добавить книгу в список книг. Намерение состоит в том, чтобы поддерживать любые внутренние метаданные устройства. Вернуть True, если необходимо синхронизировать списки книг
- remove_book(book)[исходный код]¶
Удалить книгу из списка книг. Исправить любые метаданные устройства одновременно
- get_collections(collection_attributes)[исходный код]¶
Вернуть словарь коллекций, созданных из collection_attributes. Каждая запись в словаре имеет название коллекции форм:[список книг]
Список книг отсортирован по названию, за исключением сборников, созданных из серий, в этом случае используется series_index.
- Параметры:
collection_attributes – Список атрибутов объекта Book
Устройства на базе USB Mass Storage¶
Базовый класс для таких устройств 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 может иметь значение None, чтобы не различать устройства на основе BCD, или это может быть список BCD номеров всех устройств, поддерживаемых этим драйвером.
- WINDOWS_MAIN_MEM = None¶
Строка, определяющая основную память устройства в строках идентификатора Windows PnP. Это может быть None, строка, список строк или скомпилированное регулярное выражение.
- WINDOWS_CARD_A_MEM = None¶
Строка, идентифицирующая первую карту устройства в строках идентификатора Windows PnP. Это может быть None, строка, список строк или скомпилированное регулярное выражение.
- WINDOWS_CARD_B_MEM = None¶
Строка, идентифицирующая вторую карту устройства в строках идентификатора Windows PnP. Это может быть 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 – Device information from the device scanner
- 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). Если на конкретном устройстве нет ни одного из этих местоположений, оно должно вернуть 0.
- free_space(end_session=True)[исходный код]¶
- Получить свободное место на точках монтирования:
Основная память
Карта 1
Карта 2
- Результат:
Список из трех элементов со свободным пространством в байтах (1, 2, 3). Если конкретное устройство не имеет ни одного из этих местоположений, оно должно вернуть -1.
- windows_sort_drives(drives)[исходный код]¶
Вызывается для устранения неоднозначности основной памяти и карты памяти для устройств, которые не различают их на основе WINDOWS_CARD_NAME. Например: EB600
- can_handle_windows(usbdevice, debug=False)[исходный код]¶
Необязательный метод для выполнения дальнейших проверок устройства, чтобы узнать, способен ли этот драйвер обрабатывать его. Если это не так, он должен вернуть False. Этот метод вызывается только после того, как поставщик, идентификаторы продуктов и bcd совпадают, поэтому он может выполнять некоторые относительно трудоемкие проверки. Реализация по умолчанию возвращает True. Этот метод вызывается только в Windows. См. также
can_handle()
.Для устройств на базе USBMS этот метод по умолчанию делегирует
can_handle()
. Таким образом, вам нужно только переопределитьcan_handle()
в подклассе USBMS.- Параметры:
usbdevice – USB-устройство, возвращенное
calibre.devices.winusb.scan_usb_devices()
- open(connected_device, library_uuid)[исходный код]¶
Выполнить любую инициализацию конкретного устройства. Вызывается после обнаружения устройства, но перед любыми другими функциями, которые обмениваются данными с устройством. Например: для устройств, которые представляют себя как запоминающие устройства USB, этот метод будет отвечать за установку устройства или, если устройство было автоматически смонтировано, за определение места его установки. Метод
calibre.devices.usbms.device.Device.open()
имеет реализацию этой функции, которая должна служить хорошим примером для запоминающих устройств USB.Этот метод может вызвать исключение OpenFeedback для отображения сообщения пользователю.
- Параметры:
connected_device – Устройство, которое мы пытаемся открыть. Это кортеж из (идентификатор поставщика, идентификатор продукта, bcd, название производителя, название продукта, серийный номер устройства). Однако у некоторых устройств нет серийного номера, и в Windows присутствуют только первые три поля, остальные - None.
library_uuid – UUID текущей библиотеки calibre. Может иметь значение None, если библиотеки нет (например, при использовании из командной строки).
- eject()[исходный код]¶
Размонтировать/извлечь устройство из ОС. Не проверяется есть ли ожидающие задания графического интерфейса пользователя, которым необходимо взаимодействовать с устройством.
ПРИМЕЧАНИЕ. Этот метод нельзя вызывать в том же потоке, что и остальные методы устройства.
- post_yank_cleanup()[исходный код]¶
Вызывается, если пользователь дергает устройство, не извлекая его предварительно.
- sanitize_callback(path)[исходный код]¶
Обратный вызов, позволяющий отдельным драйверам устройств отменять очистку пути, используемую
create_upload_path()
.
- filename_callback(default, mi)[исходный код]¶
Обратный вызов, позволяющий драйверам изменять имя файла по умолчанию, установленное
create_upload_path()
.
- sanitize_path_components(components)[исходный код]¶
Выполнить любую специальную очистку устройства в компонентах пути для файлов, которые будут загружены на устройство.
- get_annotations(path_map)[исходный код]¶
Разрешить path_map в annotation_map файлов, найденных на устройстве
- add_annotation_to_library(db, db_id, annotation)[исходный код]¶
Добавить аннотацию в библиотеку calibre
- class calibre.devices.usbms.cli.CLI[исходный код]¶
- class calibre.devices.usbms.driver.USBMS(plugin_path)[исходный код]¶
-
Базовый класс для всех устройств USBMS. Реализует логику отправки/получения/обновления метаданных/кеширования метаданных и т. д.
- description = 'Соединиться с читалкой.'¶
Короткая строка, описывающая, что делает этот плагин
- author = 'John Schember'¶
Автор этого плагина
- supported_platforms = ['windows', 'osx', 'linux']¶
Список платформ, на которых работает этот плагин. Например:
['windows', 'osx', 'linux']
- booklist_class¶
псевдоним для
BookList
- book_class¶
псевдоним для
Book
- FORMATS = []¶
Упорядоченный список поддерживаемых форматов
- CAN_SET_METADATA = []¶
Можно ли установить метаданные книг через графический интерфейс.
- get_device_information(end_session=True)[исходный код]¶
Спросить у устройства информацию об устройстве. См. L{DeviceInfoQuery}.
- Результат:
(имя устройства, версия устройства, версия программного обеспечения на устройстве, тип MIME). Кортеж может дополнительно иметь пятый элемент, который является словарем информации о накопителе. См. пример usbms.driver.
- set_driveinfo_name(location_code, name)[исходный код]¶
Задать имя устройства в файле информации о диске „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 должен содержать слово «card», еслиon_card
не равно None, в противном случае он должен содержать слово «memory».- Параметры:
files – Список путей
names – Список имен файлов книг которые были уже загружены на устройство. len(names) == len(files)
metadata – Если не None, это список объектов
Metadata
. Идея состоит в том, чтобы использовать метаданные, чтобы определить, где на устройстве разместить книгу. len(metadata) == len(files). Помимо обычной обложки (путь к обложке), также может быть атрибут эскиза, который следует использовать в предпочтении. Атрибут эскиза имеет форму (ширина, высота, данные обложки в формате jpeg).
- Результат:
Список трехэлементных кортежей. Список предназначен для передачи в
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 – Список объектов
Metadata
, такой же, как дляupload_books()
.booklists – Кортеж, содержащий результат вызовов (
books (oncard = None)()
,: meth:books(oncard=“carda“),: meth`books(oncard=“cardb“)`).
- delete_books(paths, end_session=True)[исходный код]¶
Удалять книги по путям на устройстве.
- remove_books_from_metadata(paths, booklists)[исходный код]¶
Удалить книги из списка метаданных. Эта функция не должна связываться с устройством.
- Параметры:
paths – пути к книгам на устройстве.
booklists – Кортеж, содержащий результат вызовов (
books (oncard = None)()
,: meth:books(oncard=“carda“),: meth`books(oncard=“cardb“)`).
- sync_booklists(booklists, end_session=True)[исходный код]¶
Обновить метаданные на устройстве.
- Параметры:
booklists – Кортеж, содержащий результат вызовов (
books (oncard = None)()
,: meth:books(oncard=“carda“),: meth`books(oncard=“cardb“)`).
- classmethod normalize_path(path)[исходный код]¶
Вернуть путь с нативными разделителями путей платформы
Действия в пользовательском интерфейсе¶
Если вы добавляете свой собственный плагин в ZIP-файл, вы должны создать подкласс как InterfaceActionBase, так и InterfaceAction. Метод load_actual_plugin()
вашего подкласса InterfaceActionBase должен возвращать экземпляр объекта вашего подкласса InterfaceBase.
- class calibre.gui2.actions.InterfaceAction(parent, site_customization)[исходный код]¶
Базовые классы:
QObject
Плагин, представляющий «действие», которое может быть выполнено в графическом пользовательском интерфейсе. Все элементы на панели инструментов и контекстных меню реализованы этими плагинами.
Обратите внимание, что этот класс является базовым классом для этих подключаемых модулей, однако, чтобы интегрировать подключаемый модуль с системой подключаемых модулей calibre, вам необходимо создать класс-оболочку, который ссылается на фактический подключаемый модуль. См. Примеры модуля
calibre.customize.builtins
.Если два объекта
InterfaceAction
имеют одинаковое имя, приоритет имеет объект с более высоким приоритетом.Подклассы должны реализовывать методы
genesis()
,library_changed()
,location_selected()
,shutting_down()
,initialization_complete()
иtag_browser_context_action()
После инициализации этот плагин получает доступ к графическому интерфейсу основного calibre через член
gui
. Вы можете получить доступ к другим плагинам по имени, например:self.gui.iactions['Save To Disk']
Чтобы получить доступ к собственному плагину, используйте атрибут
interface_action_base_plugin
, этот атрибут становится доступным только после инициализации плагина. Полезно, если вы хотите использовать методы из класса плагина, например do_user_config().QAction, указанный в
action_spec
, создается автоматически и становится доступным как self.qaction.- name = 'Implement me'¶
Название плагина. Если присутствуют два плагина с одинаковым именем, приоритет имеет тот, который имеет более высокий приоритет.
- priority = 1¶
Приоритет плагина. Если присутствуют два плагина с одинаковым именем, приоритет имеет тот, который имеет более высокий приоритет.
- popup_type = 1¶
Тип всплывающего меню, когда этот плагин добавляется на панель инструментов.
- auto_repeat = False¶
Следует ли автоматически повторять это действие при удерживании его сочетания клавиш.
- action_spec = ('text', 'icon', None, None)¶
Форма: (текст, путь к значку, всплывающая подсказка, сочетание клавиш) значок, всплывающая подсказка и сочетание клавиш могут иметь значение None, сочетание клавиш должно быть строкой, None или кортежем сочетаний клавиш. Если None, сочетание клавиш, соответствующее действию, не регистрируется. Если вы передаете пустой кортеж, ярлык регистрируется без привязки клавиш по умолчанию.
- action_shortcut_name = None¶
Если не None, используется для имени, отображаемого пользователю при настройке сочетаний клавиш для указанной выше спецификации действия вместо action_spec[0]
Если 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()
,accept_drag_move_event()
,drop_event()
.
- accept_enter_event(event, mime_data)[исходный код]¶
Этот метод должен возвращать True, если это действие интерфейса способно обрабатывать событие перетаскивания. Не вызывайте accept/ignore для события, о котором позаботится пользовательский интерфейс calibre.
- accept_drag_move_event(event, mime_data)[исходный код]¶
Этот метод должен возвращать True, если это действие интерфейса способно обрабатывать событие перетаскивания. Не вызывайте accept/ignore для события, о котором позаботится пользовательский интерфейс calibre.
- drop_event(event, mime_data)[исходный код]¶
Этот метод должен выполнять некоторые полезные действия и возвращать True, если это действие интерфейса способно обрабатывать событие drop. Не вызывайте accept/ignore для события, о котором позаботится пользовательский интерфейс calibre. В этой функции не следует выполнять блокирующие/длительные операции. Вместо этого отправьте сигнал или используйте QTimer.singleShot и быстро вернитесь. См. примеры встроенных действий.
Удобный метод простого добавления действий в QMenu. Возвращает созданный QAction. Это действие имеет один дополнительный атрибут calibre_shortcut_unique_name, который, если не None, относится к уникальному имени, под которым это действие зарегистрировано диспетчером клавиатуры.
- Параметры:
menu – QMenu вновь созданное действие будет добавлено в
unique_name – Уникальное имя для этого действия, оно должно быть уникальным во всем мире, поэтому сделайте его как можно более описательным. Если сомневаетесь, добавьте к нему UUID.
text – Текст действия.
icon – Либо QIcon, либо имя файла. Имя файла передается встроенной функции QIcon.ic(), поэтому вам не нужно передавать полный путь к папке с изображениями.
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()[исходный код]¶
Установка этого плагина. Вызывается только один раз во время инициализации. self.gui доступен. Действие, указанное в
action_spec
, доступно какself.qaction
.
- location_selected(loc)[исходный код]¶
Вызывается при изменении отображаемого списка книг в calibre. В настоящее время значения loc следующие:
library, main, card и cardb
.Этот метод должен включать/отключать это действие и его вспомогательные действия в зависимости от местоположения.
- library_about_to_change(olddb, db)[исходный код]¶
Вызывается при изменении текущей библиотеки.
- Параметры:
olddb – LibraryDatabase, соответствующая предыдущей библиотеке.
db – LibraryDatabase, соответствующая новой библиотеке.
- library_changed(db)[исходный код]¶
Вызывается при изменении текущей библиотеки.
- Параметры:
db – LibraryDatabase, соответствующая текущей библиотеке.
- gui_layout_complete()[исходный код]¶
Вызывается один раз за действие, когда макет основного графического интерфейса завершен. Если ваше действие требует внесения изменений в макет, они должны быть выполнены здесь, а не в
initialization_complete()
.
- initialization_complete()[исходный код]¶
Вызывается один раз для каждого действия после завершения инициализации основного графического интерфейса.
- tag_browser_context_action(index)[исходный код]¶
Вызывается при отображении контекстного меню в браузере тегов. index - это QModelIndex, который указывает на элемент браузера тегов, нажатый правой кнопкой мыши. Проверьте его на достоверность с помощью index.valid () и получите базовый объект TagTreeItem с помощью index.data (Qt.ItemDataRole.UserRole). Любые объекты действия, полученные этим методом, будут добавлены в контекстное меню.
- shutting_down()[исходный код]¶
Вызывается один раз для каждого плагина, когда основной графический интерфейс находится в процессе завершения работы. Освободите все используемые ресурсы, но постарайтесь не блокировать выключение на длительные периоды времени.
- class calibre.customize.InterfaceActionBase(*args, **kwargs)[исходный код]¶
Базовые классы:
Plugin
- supported_platforms = ['windows', 'osx', 'linux']¶
Список платформ, на которых работает этот плагин. Например:
['windows', 'osx', 'linux']
- author = 'Kovid Goyal'¶
Автор этого плагина
- type = 'Действие в пользовательском интерфейсе'¶
Тип плагина. Используется для категоризации в графической оболочке.
- can_be_disabled = False¶
При False пользователь не сможет отключить этот плагин. Используйте с осторожностью.
- load_actual_plugin(gui)[исходный код]¶
Этот метод должен возвращать фактический объект плагина действия интерфейса.
Плагины параметров¶
- class calibre.customize.PreferencesPlugin(plugin_path)[исходный код]¶
Базовые классы:
Plugin
Плагин, представляющий виджет, отображаемый в диалоговом окне «Настройки».
У этого плагина есть только один важный метод
create_widget()
. Различные поля плагина определяют его категоризацию в пользовательском интерфейсе.- supported_platforms = ['windows', 'osx', 'linux']¶
Список платформ, на которых работает этот плагин. Например:
['windows', 'osx', 'linux']
- author = 'Kovid Goyal'¶
Автор этого плагина
- type = 'Параметры'¶
Тип плагина. Используется для категоризации в графической оболочке.
- can_be_disabled = False¶
При False пользователь не сможет отключить этот плагин. Используйте с осторожностью.
- config_widget = None¶
Путь импорта к модулю, который содержит класс с именем ConfigWidget, который реализует интерфейс ConfigWidgetInterface. Используется
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¶
Установить значение True, если реализован метод
restore_to_defaults()
.
- restore_defaults_desc = 'Восстановление параметров по умолчанию. Вы должны нажать кнопку Применить, чтобы сохранить параметры по умолчанию.'¶
Подсказка для кнопки «Восстановить по умолчанию»
- restart_critical = False¶
Если True, диалоговое окно Preferences не позволит пользователю устанавливать какие-либо другие предпочтения. Действует только в том случае, если
commit()
возвращает True.
- genesis(gui)[исходный код]¶
Вызывается один раз перед отображением виджета, должен выполнить все необходимые настройки.
- Параметры:
gui – Главный графический интерфейс пользователя calibre
- initialize()[исходный код]¶
Следует установить для всех значений конфигурации их начальные значения (значения, хранящиеся в файлах конфигурации). Оператор возврата не является обязательным. Вернуть False, если диалоговое окно не должно отображаться.
- restore_defaults()[исходный код]¶
Должно установить для всех значений конфигурации значения по умолчанию.
- commit()[исходный код]¶
Сохранить все изменённые настройки. Вернуть True, если изменения требуют перезапуска, в противном случае - False. Вызвать исключение
AbortCommit
, чтобы указать, что произошла ошибка. Вы несете ответственность за предоставление пользователю отзыва о том, в чём заключается ошибка и как её исправить.
- refresh_gui(gui)[исходный код]¶
Вызывается один раз после фиксации этого виджета. Отвечает за то, что пользовательский интерфейс перечитывает любые измененные настройки. Обратите внимание, что по умолчанию графический интерфейс в любом случае повторно инициализирует различные элементы, поэтому большинству виджетов не нужно использовать этот метод.
- initial_tab_changed()[исходный код]¶
Вызывается, если изначально отображаемая вкладка изменена до показа виджета, но после его инициализации.
- class calibre.gui2.preferences.ConfigWidgetBase(parent=None)[исходный код]¶
Базовый класс, содержащий код для простого добавления стандартных виджетов конфигурации, таких как флажки, поля со списком, текстовые поля и т. д. См. метод
register()
.Этот класс автоматически обрабатывает уведомление об изменении, сброс до значения по умолчанию, перевод между объектами gui и объектами конфигурации и т. д. для зарегистрированных настроек.
Если ваш виджет конфигурации наследуется от этого класса, но включает в себя незарегистрированные параметры, вам следует переопределить методы
ConfigWidgetInterface
и вызвать методы базового класса внутри переопределений.- changed_signal¶
Этот сигнал должен излучаться всякий раз, когда пользователь изменяет значение в этом виджете.
- supports_restoring_to_defaults = True¶
Установить значение True, если реализован метод
restore_to_defaults()
.
- restart_critical = False¶
Если True, диалоговое окно Preferences не позволит пользователю устанавливать какие-либо другие предпочтения. Действует только в том случае, если
commit()
возвращает 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_obj – Объект конфигурации, который читает/записывает параметр
gui_name – Имя объекта GUI, представляющего интерфейс для изменения настройки. По умолчанию предполагается, что это
'opt_' + name
.choices – Если этот параметр основан на множественном выборе (поле со списком), то это - список вариантов. Список представляет собой список из двух кортежей элементов формы: `` [(имя графического интерфейса, значение), …] ``
setting – Класс, отвечающий за управление этим параметром. Класс по умолчанию обрабатывает почти все случаи, поэтому этот параметр используется редко.
- initialize()[исходный код]¶
Следует установить для всех значений конфигурации их начальные значения (значения, хранящиеся в файлах конфигурации). Оператор возврата не является обязательным. Вернуть False, если диалоговое окно не должно отображаться.
- commit(*args)[исходный код]¶
Сохранить все изменённые настройки. Вернуть True, если изменения требуют перезапуска, в противном случае - False. Вызвать исключение
AbortCommit
, чтобы указать, что произошла ошибка. Вы несете ответственность за предоставление пользователю отзыва о том, в чём заключается ошибка и как её исправить.
- restore_defaults(*args)[исходный код]¶
Должно установить для всех значений конфигурации значения по умолчанию.