Dokumentacja API dla wtyczek

Definiuje różne abstrakcyjne klasy bazowe, które można podzielić na podklasy w celu tworzenia potężnych wtyczek. Przydatnymi klasami są:

Wtyczka

class calibre.customize.Plugin(plugin_path)[źródło]

Wtyczka calibre. Przydatni członkowie to:

  • self.installation_type: Przechowuje sposób instalacji wtyczki.

  • self.plugin_path: Przechowuje ścieżkę do pliku ZIP, który zawiera

    ta wtyczka lub None jeśli jest to wtyczka wbudowana

  • self.site_customization: Przechowuje wprowadzony ciąg dostosowywania

    przez użytkownika

Metody, które powinny być nadpisane w podklasach:

Przydatne metody:

supported_platforms = []

Lista platform, na których pracuje ta wtyczka. Na przykład:

name = 'Trivial Plugin'

Nazwa wtyczki. Musi to być coś innego niż Trivial Plugin, by wtyczka zadziałała.

version = (1, 0, 0)

Wersja wtyczki jako krotka (major, minor, revision)

description = 'Zupełnie nic nie zmienia'

Krótki string, opisujący, co robi ta wtyczka

author = 'Nieznany'

Autor wtyczki

priority = 1

Jeśli dla danego typu pliku istnieje więcej niż jedna wtyczka, wtyczki są uruchamiane w kolejności malejącego priorytetu. Wtyczki o wyższym priorytecie będą uruchamiane jako pierwsze. Najwyższym możliwym priorytetem jest sys.maxsize. Domyślny priorytet to 1.

minimum_calibre_version = (0, 4, 118)

Najwcześniejsza wersja calibre, wymagana przez wtyczkę.

installation_type = None

Sposób instalacji tej wtyczki

can_be_disabled = True

Jeśli False, użytkownik nie będzie mógł wyłączyć wtyczki. Używać z rozwagą.

type = 'Baza'

Typ wtyczki. Używane w celi kategoryzacji wtyczek w GUI.

initialize()[źródło]

Wywoływane raz, gdy inicjowane są wtyczki Calibre. Wtyczki są ponownie inicjowane za każdym razem, gdy dodawana jest nowa wtyczka. Należy również zauważyć, że jeśli wtyczka jest uruchamiana w procesie roboczym, na przykład w celu dodawania książek, wtyczka zostanie zainicjowana dla każdego nowego procesu roboczego.

Wykonaj tutaj inicjalizację specyficzną dla wtyczki, na przykład wyodrębnij zasoby z pliku ZIP wtyczki. Ścieżka do pliku ZIP jest dostępna jako self.plugin_path.

Zauważ, że self.site_customization nie jest dostępna w tym miejscu.

config_widget()[źródło]

Zaimplementuj tę metodę i save_settings() w swojej wtyczce, aby użyć niestandardowego okna konfiguracji, zamiast polegać na prostym domyślnym dostosowaniu opartym na ciągach znaków.

Ta metoda, jeśli jest zaimplementowana, musi zwracać QWidget. Widżet może mieć opcjonalną metodę validate(), która nie przyjmuje żadnych argumentów i jest wywoływana natychmiast po kliknięciu przez użytkownika przycisku OK. Zmiany są stosowane wtedy i tylko wtedy, gdy metoda zwraca True.

Jeśli z jakiegoś powodu nie możesz teraz przeprowadzić konfiguracji, zwróć krotkę dwóch ciągów (wiadomość, szczegóły), zostaną one wyświetlone jako okno dialogowe ostrzeżenia dla użytkownika, a proces zostanie przerwany.

save_settings(config_widget)[źródło]

Zapisz ustawienia określone przez użytkownika za pomocą config_widget.

Parametry:

config_widget – Widget zwrócony przez config_widget().

do_user_config(parent=None)[źródło]

Ta metoda pokazuje okno dialogowe konfiguracji tej wtyczki. Zwraca True, jeśli użytkownik kliknie OK, w przeciwnym razie False. Zmiany są stosowane automatycznie.

load_resources(names)[źródło]

Jeśli ta wtyczka znajduje się w pliku ZIP (wtyczka dodana przez użytkownika), ta metoda pozwoli Ci załadować zasoby z pliku ZIP.

Na przykład, aby załadować obraz:

pixmap = QPixmap()
pixmap.loadFromData(self.load_resources(['images/icon.png'])['images/icon.png'])
icon = QIcon(pixmap)
Parametry:

names – Lista ścieżek do zasobów w pliku ZIP przy użyciu / jako separatora

Zwraca:

Słownik w postaci {name: file_contents}. Wszelkie nazwy, które nie zostały znalezione w pliku ZIP, nie będą obecne w słowniku.

customization_help(gui=False)[źródło]

Zwróć ciąg, który pomoże Ci dostosować tę wtyczkę. Domyślnie podnieś NotImplementedError, co oznacza, że wtyczka nie wymaga dostosowywania.

Jeśli ponownie zaimplementujesz tę metodę w swojej podklasie, użytkownik zostanie poproszony o wprowadzenie ciągu jako dostosowania tej wtyczki. Ciąg dostosowywania będzie dostępny jako self.site_customization.

Dostosowanie witryny może być dowolne, na przykład ścieżką do potrzebnego pliku binarnego na komputerze użytkownika.

Parametry:

gui – Jeśli True zwróć pomoc HTML, w przeciwnym razie zwróć pomoc w postaci zwykłego tekstu.

temporary_file(suffix)[źródło]

Zwróć obiekt podobny do pliku, który jest plikiem tymczasowym w systemie plików. Ten plik pozostanie dostępny nawet po zamknięciu i zostanie usunięty dopiero po zamknięciu tłumacza. Użyj elementu name zwróconego obiektu, aby uzyskać dostęp do pełnej ścieżki do utworzonego pliku tymczasowego.

Parametry:

suffix – Przyrostek, który będzie miał plik tymczasowy.

cli_main(args)[źródło]

Ta metoda jest głównym punktem wejścia dla interfejsu wiersza poleceń wtyczek. Jest wywoływana, gdy użytkownik to zrobi: calibre-debug -r „Nazwa wtyczki”. Wszystkie przekazane argumenty są obecne w zmiennej args.

FileTypePlugin

class calibre.customize.FileTypePlugin(plugin_path)[źródło]

Klasy bazowe: Plugin

Wtyczka powiązana z określonym zestawem typów plików.

file_types = {}

Zestaw typów plików, dla których ta wtyczka powinna zostać uruchomiona. Użyj „*” dla wszystkich typów plików. Na przykład: {'lit', 'mobi', 'prc'}

on_import = False

Jeśli True, ta wtyczka jest uruchamiana, gdy książki są dodawane do bazy danych

on_postimport = False

Jeśli True, ta wtyczka jest uruchamiana po dodaniu książek do bazy danych. W tym przypadku wywoływane są metody postimport i postadd wtyczki.

on_preprocess = False

Jeśli True, ta wtyczka jest uruchamiana tuż przed konwersją

on_postprocess = False

Jeśli True, ta wtyczka jest uruchamiana po konwersji na końcowym pliku utworzonym przez wtyczkę konwersji wyjściowej.

type = 'Typ pliku'

Typ wtyczki. Używane w celi kategoryzacji wtyczek w GUI.

run(path_to_ebook)[źródło]

Uruchom wtyczkę. Musi być zaimplementowana w podklasach. Powinien wykonywać wszelkie modyfikacje wymagane w e-booku i zwracać bezwzględną ścieżkę do zmodyfikowanego e-booka. Jeśli nie są potrzebne żadne modyfikacje, powinien zwrócić ścieżkę do oryginalnego e-booka. Jeśli zostanie napotkany błąd, powinien zgłosić wyjątek. Domyślna implementacja po prostu zwraca ścieżkę do oryginalnego e-booka. Zwróć uwagę, że ścieżka do oryginalnego pliku (przed uruchomieniem wtyczek typu pliku jest dostępna jako self.original_path_to_file).

Zmodyfikowany plik e-booka należy utworzyć za pomocą metody temporary_file().

Parametry:

path_to_ebook – Absolutna ścieżka do ebooka.

Zwraca:

Absolutna ścieżka do zmodyfikowanego e-booka.

postimport(book_id, book_format, db)[źródło]

Nazywany post importem, czyli po dodaniu pliku książki do bazy danych. Zauważ, że różni się to od postadd(), które jest wywoływane, gdy rekord księgi jest tworzony po raz pierwszy. Ta metoda jest wywoływana za każdym razem, gdy do rekordu księgowego dodawany jest nowy plik. Przydaje się do modyfikowania ewidencji księgowej na podstawie zawartości nowo dodanego pliku.

Parametry:
  • book_id – Identyfikator bazy dodanej książki.

  • book_format – Typ pliku dodanej książki.

  • db – Biblioteczna baza danych.

postadd(book_id, fmt_map, db)[źródło]

Nazwany post add, czyli po dodaniu książki do bazy. Zauważ, że różni się to od postimport(), który jest wywoływany po dodaniu pojedynczego pliku książki do książki. postadd() jest wywoływana tylko wtedy, gdy cały rekord księgi z prawdopodobnie więcej niż jednym plikiem księgi został utworzony po raz pierwszy. Jest to przydatne, jeśli chcesz zmodyfikować rekord księgi w bazie danych, gdy księga jest po raz pierwszy dodawana do calibre.

Parametry:
  • book_id – Identyfikator bazy dodanej książki.

  • fmt_map – Mapa formatu pliku na ścieżkę, z której dodano format pliku. Zwróć uwagę, że może to wskazywać, ale nie musi, na rzeczywisty istniejący plik, ponieważ czasami pliki są dodawane jako strumienie. W takim przypadku może to być fikcyjna wartość lub nieistniejąca ścieżka.

  • db – Baza danych biblioteki

Wtyczki metadanych

class calibre.customize.MetadataReaderPlugin(*args, **kwargs)[źródło]

Klasy bazowe: Plugin

Wtyczka implementująca odczytywanie metadanych z zestawu typów plików.

file_types = {}

Zestaw typów plików, dla których ta wtyczka powinna zostać uruchomiona. Na przykład: set([«lit», «mobi», «prc»])`

supported_platforms = ['windows', 'osx', 'linux']

Lista platform, na których pracuje ta wtyczka. Na przykład:

version = (6, 9, 0)

Wersja wtyczki jako krotka (major, minor, revision)

author = 'Kovid Goyal'

Autor wtyczki

type = 'Czytnik metadanych'

Typ wtyczki. Używane w celi kategoryzacji wtyczek w GUI.

get_metadata(stream, type)[źródło]

Zwróć metadane dla pliku reprezentowanego przez strumień (plik podobny do obiektu, który obsługuje odczyt). Zgłoś wyjątek, gdy wystąpi błąd w danych wejściowych.

Parametry:

type – Typ pliku. Gwarantowany jeden z wpisów w file_types.

Zwraca:

A calibre.ebooks.metadata.book.Metadata obiekt

class calibre.customize.MetadataWriterPlugin(*args, **kwargs)[źródło]

Klasy bazowe: Plugin

Wtyczka implementująca odczytywanie metadanych z zestawu typów plików.

file_types = {}

Zestaw typów plików, dla których ta wtyczka powinna zostać uruchomiona. Na przykład: set([«lit», «mobi», «prc»])`

supported_platforms = ['windows', 'osx', 'linux']

Lista platform, na których pracuje ta wtyczka. Na przykład:

version = (6, 9, 0)

Wersja wtyczki jako krotka (major, minor, revision)

author = 'Kovid Goyal'

Autor wtyczki

type = 'Zapisywanie metadanych'

Typ wtyczki. Używane w celi kategoryzacji wtyczek w GUI.

set_metadata(stream, mi, type)[źródło]

Ustaw metadane dla pliku reprezentowanego przez strumień (plik podobny do obiektu, który obsługuje odczyt). Zgłoś wyjątek, gdy wystąpi błąd w danych wejściowych.

Parametry:
  • type – Typ pliku. Gwarantowany jeden z wpisów w file_types.

  • mi – A calibre.ebooks.metadata.book.Metadata obiekt

Katalog wtyczek

class calibre.customize.CatalogPlugin(plugin_path)[źródło]

Klasy bazowe: Plugin

Wtyczka implementująca generator katalogów.

file_types = {}

Typ pliku wyjściowego, dla którego ta wtyczka powinna zostać uruchomiona. Na przykład: „epub” lub „xml”

type = 'Generator katalogu'

Typ wtyczki. Używane w celi kategoryzacji wtyczek w GUI.

cli_options = []

Opcje parsera CLI specyficzne dla tej wtyczki, zadeklarowane jako namedtuple Option:

from collections import 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 in calibre.db.cli.cmd_catalog:option_parser()

initialize()[źródło]

Jeśli wtyczka nie jest wbudowana, skopiuj pliki .ui i .py wtyczki z pliku ZIP do $TMPDIR. Karta zostanie dynamicznie wygenerowana i dodana do okna dialogowego Opcje katalogu w calibre.gui2.dialogs.catalog.py:Catalog

run(path_to_output, opts, db, ids, notification=None)[źródło]

Uruchom wtyczkę. Musi być zaimplementowana w podklasach. Powinien generować katalog w formacie określonym w file_types, zwracając bezwzględną ścieżkę do wygenerowanego pliku katalogu. Jeśli zostanie napotkany błąd, powinien zgłosić wyjątek.

Wygenerowany plik katalogu należy utworzyć za pomocą metody temporary_file().

Parametry:
  • path_to_output – Ścieżka bezwzględna do wygenerowanego pliku katalogu.

  • opts – Słownik argumentów słów kluczowych

  • db – Obiekt LibraryDatabase2

Wtyczki do pobierania metadanych

class calibre.ebooks.metadata.sources.base.Source(*args, **kwargs)[źródło]

Klasy bazowe: Plugin

type = 'Źródło metadanych'

Typ wtyczki. Używane w celi kategoryzacji wtyczek w GUI.

author = 'Kovid Goyal'

Autor wtyczki

supported_platforms = ['windows', 'osx', 'linux']

Lista platform, na których pracuje ta wtyczka. Na przykład:

capabilities = frozenset({})

Zestaw możliwości obsługiwanych przez tę wtyczkę. Przydatne możliwości to: «identify», «cover»

touched_fields = frozenset({})

Lista pól metadanych, które potencjalnie mogą zostać pobrane przez tę wtyczkę podczas fazy identyfikacji

has_html_comments = False

Ustaw to na True, jeśli twoja wtyczka zwraca komentarze w formacie HTML

supports_gzip_transfer_encoding = False

Ustawienie tego na True oznacza, że obiekt przeglądarki wskaże, że obsługuje kodowanie transferu gzip. Może to przyspieszyć pobieranie, ale najpierw upewnij się, że źródło faktycznie obsługuje poprawnie kodowanie transferu gzip

ignore_ssl_errors = False

Ustaw to na True, aby ignorować błędy certyfikatu HTTPS podczas łączenia się z tym źródłem.

cached_cover_url_is_reliable = True

Buforowane adresy URL okładki mogą czasami być niewiarygodne (tj. pobieranie może się nie powieść lub zwrócony obraz może być fałszywy). Jeśli często tak jest w przypadku tego źródła, ustaw wartość False

options = ()

Lista obiektów Option. Zostaną one użyte do automatycznego skonstruowania widżetu konfiguracyjnego dla tej wtyczki

config_help_message = None

Ciąg, który jest wyświetlany u góry widżetu konfiguracyjnego dla tej wtyczki

can_get_multiple_covers = False

Jeśli True, to źródło może zwrócić wiele okładek dla danego zapytania

auto_trim_covers = False

Jeśli ustawione na True, okładki pobrane przez tę wtyczkę są automatycznie przycinane.

prefer_results_with_isbn = True

Jeśli ustawione na True, a to źródło zwróci wiele wyników dla zapytania, z których niektóre mają numery ISBN, a inne nie, wyniki bez numerów ISBN zostaną zignorowane

is_configured()[źródło]

Zwróć False, jeśli wtyczka musi zostać skonfigurowana przed użyciem. Na przykład może potrzebować nazwy użytkownika/hasła/klucza API.

customization_help()[źródło]

Zwróć ciąg, który pomoże Ci dostosować tę wtyczkę. Domyślnie podnieś NotImplementedError, co oznacza, że wtyczka nie wymaga dostosowywania.

Jeśli ponownie zaimplementujesz tę metodę w swojej podklasie, użytkownik zostanie poproszony o wprowadzenie ciągu jako dostosowania tej wtyczki. Ciąg dostosowywania będzie dostępny jako self.site_customization.

Dostosowanie witryny może być dowolne, na przykład ścieżką do potrzebnego pliku binarnego na komputerze użytkownika.

Parametry:

gui – Jeśli True zwróć pomoc HTML, w przeciwnym razie zwróć pomoc w postaci zwykłego tekstu.

config_widget()[źródło]

Zaimplementuj tę metodę i save_settings() w swojej wtyczce, aby użyć niestandardowego okna konfiguracji, zamiast polegać na prostym domyślnym dostosowaniu opartym na ciągach znaków.

Ta metoda, jeśli jest zaimplementowana, musi zwracać QWidget. Widżet może mieć opcjonalną metodę validate(), która nie przyjmuje żadnych argumentów i jest wywoływana natychmiast po kliknięciu przez użytkownika przycisku OK. Zmiany są stosowane wtedy i tylko wtedy, gdy metoda zwraca True.

Jeśli z jakiegoś powodu nie możesz teraz przeprowadzić konfiguracji, zwróć krotkę dwóch ciągów (wiadomość, szczegóły), zostaną one wyświetlone jako okno dialogowe ostrzeżenia dla użytkownika, a proces zostanie przerwany.

save_settings(config_widget)[źródło]

Zapisz ustawienia określone przez użytkownika za pomocą config_widget.

Parametry:

config_widget – Widget zwrócony przez config_widget().

get_author_tokens(authors, only_first_author=True)[źródło]

Weź listę autorów i zwróć listę tokenów przydatnych dla zapytania wyszukiwania AND. Ta funkcja próbuje zwracać tokeny w kolejności imion, drugich imion i nazwisk, zakładając, że jeśli w nazwisku autora występuje przecinek, to imię jest w nazwisku, pozostałe nazwiska tworzą się.

get_title_tokens(title, strip_joiners=True, strip_subtitle=False)[źródło]

Weź tytuł i zwróć listę tokenów przydatnych dla zapytania wyszukiwania AND. Nie obejmuje spójników (opcjonalnie) i interpunkcji.

split_jobs(jobs, num)[źródło]

Podziel listę zadań na maksymalnie num grupy, tak równomiernie, jak to możliwe

test_fields(mi)[źródło]

Zwróć pierwsze pole z self.touched_fields, które ma wartość null w obiekcie mi

clean_downloaded_metadata(mi)[źródło]

Wywołaj tę metodę w metodzie identyfikacji wtyczki, aby znormalizować metadane przed umieszczeniem obiektu Metadata w kolejce wyników. Możesz oczywiście użyć niestandardowego algorytmu dopasowanego do Twojego źródła metadanych.

get_book_url(identifiers)[źródło]

Zwróć krotkę 3 lub Brak. Trójka ma postać: (identifier_type, identifier_value, URL). URL to adres URL książki identyfikowany przez identyfikatory w tym źródle. identifier_type, identifier_value określa identyfikator odpowiadający adresowi URL. Ten adres URL musi być możliwy do przeglądania przez człowieka za pomocą przeglądarki. Ma on na celu udostępnienie użytkownikowi klikalnego linku do łatwego odwiedzania strony książek w tym źródle. Jeśli nie zostanie znaleziony żaden adres URL, zwróć Brak. Ta metoda musi być szybka i spójna, więc zaimplementuj ją tylko wtedy, gdy możliwe jest skonstruowanie adresu URL ze znanego schematu z podanymi identyfikatorami.

get_book_url_name(idtype, idval, url)[źródło]

Zwraca nazwę czytelną dla człowieka z wartości zwracanej przez get_book_url().

get_book_urls(identifiers)[źródło]

Zastąp tę metodę, jeśli chcesz zwrócić wiele adresów URL tej książki. Zwróć listę trzech krotek. Domyślnie ta metoda po prostu wywołuje get_book_url().

get_cached_cover_url(identifiers)[źródło]

Zwróć adres URL okładki w pamięci podręcznej książki zidentyfikowanej przez identyfikatory dict lub Brak, jeśli taki adres URL nie istnieje.

Pamiętaj, że ta metoda musi zwracać tylko zweryfikowane adresy URL, tj. nie adresy URL, które mogą skutkować ogólnym obrazem okładki lub błędem „nie znaleziono”.

id_from_url(url)[źródło]

Przeanalizuj adres URL i zwróć krotkę postaci: (identifier_type, identifier_value). Jeśli adres URL nie pasuje do wzorca źródła metadanych, zwróć Brak.

identify_results_keygen(title=None, authors=None, identifiers={})[źródło]

Zwraca funkcję używaną do wygenerowania klucza, który może sortować obiekty metadanych według ich trafności na podstawie zapytania wyszukiwania (title, authors, identifiers).

Te klucze są używane do sortowania wyników wywołania identify().

Aby uzyskać szczegółowe informacje na temat domyślnego algorytmu, zobacz InternalMetadataCompareKeyGen. Ponownie zaimplementuj tę funkcję we wtyczce, jeśli domyślny algorytm nie jest odpowiedni.

identify(log, result_queue, abort, title=None, authors=None, identifiers={}, timeout=30)[źródło]

Zidentyfikuj książkę według tytułu/autora/ISBN/itd.

Jeśli określono identyfikatory i nie zostanie znalezione żadne dopasowanie, a to źródło metadanych nie przechowuje wszystkich powiązanych identyfikatorów (na przykład wszystkich numerów ISBN książki), ta metoda powinna ponowić próbę tylko z tytułem i autorem (zakładając, że zostały one określone).

Jeśli to źródło metadanych udostępnia również okładki, adres URL okładki powinien być buforowany, aby kolejne wywołanie interfejsu API pobierania okładek z tym samym ISBN/specjalnym identyfikatorem nie wymagało ponownego pobrania adresu URL okładki. Użyj do tego buforowania API.

Każdy obiekt Metadata umieszczony w kolejce wyników za pomocą tej metody musi mieć atrybut source_relevance będący liczbą całkowitą wskazującą kolejność, w jakiej wyniki zostały zwrócone przez źródło metadanych dla tego zapytania. Ta liczba będzie używana przez compare_identify_results(). Jeśli kolejność jest nieistotna, ustaw ją na zero dla każdego wyniku.

Upewnij się, że wszelkie informacje o mapowaniu okładki/ISBN są buforowane, zanim obiekt Metadata zostanie umieszczony w result_queue.

Parametry:
  • log – Obiekt dziennika, użyj go do wyprowadzenia informacji/błędów debugowania

  • result_queue – Kolejka wyników, wyniki powinny być w niej umieszczone. Każdy wynik jest obiektem metadanych

  • abort – Jeśli abort.is_set() zwraca True, przerwij dalsze przetwarzanie i wróć tak szybko, jak to możliwe

  • title – Tytuł książki może brzmieć Brak

  • authors – Lista autorów książki, może być Brak

  • identifiers – Słownik innych identyfikatorów, najczęściej {«isbn»:»1234…»}

  • timeout – Limit czasu w sekundach, żadne żądanie sieciowe nie powinno zawieszać się dłużej niż limit czasu.

Zwraca:

Brak, jeśli nie wystąpiły żadne błędy, w przeciwnym razie reprezentacja błędu w kodzie Unicode odpowiednia do wyświetlenia użytkownikowi

download_cover(log, result_queue, abort, title=None, authors=None, identifiers={}, timeout=30, get_best_cover=False)[źródło]

Pobierz okładkę i wstaw ją do kolejki wyników. Wszystkie parametry mają takie samo znaczenie jak dla identify(). Umieść (self, cover_data) w result_queue.

Ta metoda powinna wykorzystywać buforowane adresy URL okładki, aby zapewnić wydajność, gdy tylko jest to możliwe. Gdy dane w pamięci podręcznej nie są obecne, większość wtyczek po prostu wywołuje identyfikację i wykorzystuje jej wyniki.

Jeśli parametr get_best_cover ma wartość True, a ta wtyczka może otrzymać wiele okładek, powinna otrzymać tylko „najlepszą”.

class calibre.ebooks.metadata.sources.base.InternalMetadataCompareKeyGen(mi, source_plugin, title, authors, identifiers)[źródło]

Wygeneruj klucz sortowania w celu porównania istotności obiektów metadanych dla danego zapytania wyszukiwania. Służy tylko do porównywania wyników z tego samego źródła metadanych, a nie z różnych źródeł.

Klucz sortowania zapewnia, że sortowanie w porządku rosnącym to sortowanie według kolejności malejącej istotności.

Algorytm to:

  • Preferuj wyniki, które mają co najmniej jeden identyfikator taki sam jak dla zapytania

  • Preferuj wyniki z adresem URL okładki w pamięci podręcznej

  • Preferuj wyniki z wypełnionymi wszystkimi dostępnymi polami

  • Preferuj wyniki w tym samym języku, co bieżący język interfejsu użytkownika

  • Preferuj wyniki, które dokładnie odpowiadają tytułowi zapytania

  • Preferuj wyniki z dłuższymi komentarzami (dłuższymi o ponad 10%)

  • Użyj trafności wyniku zgodnie z wynikami wyszukiwania w źródle metadanych

    silnik

Wtyczki do konwersji

class calibre.customize.conversion.InputFormatPlugin(*args)[źródło]

Klasy bazowe: Plugin

InputFormatPlugins są odpowiedzialne za konwersję dokumentu do formatu HTML+OPF+CSS+etc. Wyniki konwersji muszą być zakodowane w UTF-8. Główna akcja odbywa się w convert().

type = 'Źródłowy format do konwersji'

Typ wtyczki. Używane w celi kategoryzacji wtyczek w GUI.

can_be_disabled = False

Jeśli False, użytkownik nie będzie mógł wyłączyć wtyczki. Używać z rozwagą.

supported_platforms = ['windows', 'osx', 'linux']

Lista platform, na których pracuje ta wtyczka. Na przykład:

file_types = {}

Zestaw typów plików, dla których ta wtyczka powinna być uruchamiana Na przykład: set(['azw', 'mobi', 'prc'])

is_image_collection = False

Jeśli True, ta wtyczka wejściowa generuje kolekcję obrazów, po jednym na plik HTML. Można to ustawić dynamicznie w metodzie konwersji, jeśli pliki wejściowe mogą być zarówno kolekcjami obrazów, jak i kolekcjami innymi niż obrazy. Jeśli ustawisz to na True, musisz zaimplementować metodę get_images(), która zwraca listę obrazów.

core_usage = 1

Liczba rdzeni procesora używanych przez tę wtyczkę. Wartość -1 oznacza, że wykorzystuje wszystkie dostępne rdzenie

for_viewer = False

Jeśli ustawiono na True, wtyczka wejściowa wykona specjalne przetwarzanie, aby dane wyjściowe nadawały się do przeglądania

output_encoding = 'utf-8'

Kodowanie, w którym ta wtyczka wejściowa tworzy pliki. Wartość Brak oznacza, że kodowanie jest niezdefiniowane i musi być wykrywane indywidualnie

common_options = {<calibre.customize.conversion.OptionRecommendation object>}

Opcje wspólne dla wszystkich wtyczek formatu wejściowego. Nie zastępuj w podklasach. Zamiast tego użyj options. Każda opcja musi być instancją OptionRecommendation.

options = {}

Opcje dostosowania zachowania tej wtyczki. Każda opcja musi być instancją OptionRecommendation.

recommendations = {}

Zestaw 3 krotek formularza (option_name, recommended_value, recommendation_level)

get_images()[źródło]

Zwróć listę bezwzględnych ścieżek do obrazów, jeśli ta wtyczka wejściowa reprezentuje kolekcję obrazów. Lista obrazów jest w tej samej kolejności co kręgosłup i spis treści.

convert(stream, options, file_ext, log, accelerators)[źródło]

Ta metoda musi być zaimplementowana w podklasach. Musi zwrócić ścieżkę do utworzonego pliku OPF lub instancji OEBBook. Wszystkie dane wyjściowe powinny znajdować się w bieżącym folderze. Jeśli ta wtyczka tworzy pliki poza bieżącym folderem, należy je usunąć/oznaczyć do usunięcia, zanim ta metoda powróci.

Parametry:
  • stream – Plik podobny do obiektu, który zawiera plik wejściowy.

  • options – Opcje dostosowania procesu konwersji. Gwarantowane posiadanie atrybutów odpowiadających wszystkim opcjom zadeklarowanym przez tę wtyczkę. Ponadto będzie miał atrybut gadatliwy, który przyjmuje wartości całkowite od zera w górę. Wyższe liczby oznaczają, że będziesz bardziej gadatliwy. Innym przydatnym atrybutem jest input_profile, który jest instancją calibre.customize.profiles.InputProfile.

  • file_ext – Rozszerzenie (bez .) pliku wejściowego. Jest to gwarantowane, że jest to jeden z file_types obsługiwanych przez tę wtyczkę.

  • log – Obiekt calibre.utils.logging.Log. Wszystkie dane wyjściowe powinny używać tego obiektu.

  • accelarators – Słownik różnych informacji, które wtyczka wejściowa może łatwo uzyskać, przyspieszając kolejne etapy konwersji.

postprocess_book(oeb, opts, log)[źródło]

Wywoływana, aby umożliwić wtyczce wejściowej wykonanie przetwarzania końcowego po przeanalizowaniu książki.

specialize(oeb, opts, log, output_fmt)[źródło]

Wywoływane, aby umożliwić wtyczce wejściowej specjalizację przeanalizowanej książki pod kątem określonego formatu wyjściowego. Wywoływane po postprocess_book i przed wykonaniem jakichkolwiek przekształceń na przeanalizowanej książce.

gui_configuration_widget(parent, get_option_by_name, get_option_help, db, book_id=None)[źródło]

Wywoływany w celu utworzenia widżetu używanego do konfiguracji tej wtyczki w GUI calibre. Widżet musi być instancją klasy PluginWidget. Zobacz przykłady wbudowanych wtyczek wejściowych.

class calibre.customize.conversion.OutputFormatPlugin(*args)[źródło]

Klasy bazowe: Plugin

Wtyczki formatu wyjściowego są odpowiedzialne za konwersję dokumentu OEB (OF+HTML) do wyjściowego e-booka.

Można założyć, że dokument OEB jest zakodowany w UTF-8. Główna akcja odbywa się w convert().

type = 'Docelowy format po konwersji'

Typ wtyczki. Używane w celi kategoryzacji wtyczek w GUI.

can_be_disabled = False

Jeśli False, użytkownik nie będzie mógł wyłączyć wtyczki. Używać z rozwagą.

supported_platforms = ['windows', 'osx', 'linux']

Lista platform, na których pracuje ta wtyczka. Na przykład:

file_type = None

Typ pliku (rozszerzenie bez początkowego okresu), który generuje ta wtyczka

common_options = {<calibre.customize.conversion.OptionRecommendation object>}

Opcje wspólne dla wszystkich wtyczek formatu wejściowego. Nie zastępuj w podklasach. Zamiast tego użyj options. Każda opcja musi być instancją OptionRecommendation.

options = {}

Opcje dostosowania zachowania tej wtyczki. Każda opcja musi być instancją OptionRecommendation.

recommendations = {}

Zestaw 3 krotek formularza (option_name, recommended_value, recommendation_level)

property description

str(object=»») -> str str(bytes_or_buffer[, encoding[, errors]]) -> str

Utwórz nowy obiekt tekstowy z podanego obiektu. Jeśli określono kodowanie lub błędy, obiekt musi uwidaczniać bufor danych, który zostanie zdekodowany przy użyciu danego kodowania i obsługi błędów. W przeciwnym razie zwraca wynik obiektu.__str__() (jeśli zdefiniowano) lub repr(object). domyślnie kodowanie to sys.getdefaultencoding(). błędy domyślnie to «strict».

convert(oeb_book, output, input_plugin, opts, log)[źródło]

Wyrenderuj zawartość oeb_book (który jest instancją calibre.ebooks.oeb.OEBBook) do pliku określonego przez wyjście.

Parametry:
  • output – Albo plik taki jak obiekt lub ciąg. Jeśli jest to ciąg, jest to ścieżka do folderu, który może istnieć lub nie. Wtyczka wyjściowa powinna zapisać swoje dane wyjściowe w tym folderze. Jeśli jest to plik podobny do obiektu, wtyczka wyjścia powinna zapisać swoje dane wyjściowe w pliku.

  • input_plugin – Wtyczka wejściowa użyta na początku potoku konwersji.

  • opts – Opcje konwersji. Gwarantowane posiadanie atrybutów odpowiadających OptionRecommendations tej wtyczki.

  • log – Rejestrator. Wydrukuj komunikaty debugowania/informacje itp. za pomocą tego.

specialize_options(log, opts, input_fmt)[źródło]

Może służyć do zmiany wartości opcji konwersji używanych przez potok konwersji.

specialize_css_for_output(log, opts, item, stylizer)[źródło]

Może być używany do wprowadzania zmian w CSS podczas procesu spłaszczania CSS.

Parametry:
  • item – Przetwarzany element (plik HTML)

  • stylizer – Obiekt Stylizer zawierający spłaszczone style elementu. Możesz uzyskać styl dla dowolnego elementu przez stylizer.style(element).

gui_configuration_widget(parent, get_option_by_name, get_option_help, db, book_id=None)[źródło]

Wywoływany w celu utworzenia widżetu używanego do konfiguracji tej wtyczki w GUI calibre. Widget musi być instancją klasy PluginWidget. Zobacz przykłady wbudowanych wtyczek wyjściowych.

Sterowniki urządzeń

Klasa bazowa dla wszystkich sterowników urządzeń to DevicePlugin. Jednakże, jeśli twoje urządzenie ujawnia się jako dysk USBMS dla systemu operacyjnego, powinieneś zamiast tego użyć klasy USBMS, ponieważ implementuje całą logikę niezbędną do obsługi tego rodzaju urządzeń.

class calibre.devices.interface.DevicePlugin(plugin_path)[źródło]

Klasy bazowe: Plugin

Definiuje interfejs, który powinien być zaimplementowany przez backendy komunikujące się z czytnikiem e-booków.

type = 'Interfejs urządzenia'

Typ wtyczki. Używane w celi kategoryzacji wtyczek w GUI.

FORMATS = ['lrf', 'rtf', 'pdf', 'txt']

Uporządkowana lista obsługiwanych formatów

VENDOR_ID = 0

VENDOR_ID może być liczbą całkowitą, listą liczb całkowitych lub słownikiem Jeśli jest to słownik, to musi to być słownik słowników postaci:

{
 integer_vendor_id : { product_id : [list of BCDs], ... },
 ...
}
PRODUCT_ID = 0

Liczba całkowita lub lista liczb całkowitych

BCD = None

BCD może mieć wartość Brak, aby nie rozróżniać urządzeń opartych na BCD, lub może to być lista numerów BCD wszystkich urządzeń obsługiwanych przez ten sterownik.

THUMBNAIL_HEIGHT = 68

Wysokość miniatur na urządzeniu

THUMBNAIL_COMPRESSION_QUALITY = 75

Jakość kompresji miniatur. Ustaw tę wartość bliżej 100, aby uzyskać miniatury lepszej jakości z mniejszą liczbą artefaktów kompresji. Oczywiście miniatury też się powiększają.

WANTS_UPDATED_THUMBNAILS = False

Ustaw to na True, jeśli urządzenie obsługuje aktualizowanie miniaturek okładek podczas sync_booklists. Ustawienie go na true spowoduje, że device.py odświeży miniatury okładki podczas dopasowywania książki

CAN_SET_METADATA = ['title', 'authors', 'collections']

Czy metadane w książkach można ustawić za pomocą GUI.

CAN_DO_DEVICE_DB_PLUGBOARD = False

Czy urządzenie może obsługiwać wtyczki metadanych device_db?

path_sep = '/'

Separator ścieżek dla ścieżek do książek na urządzeniu

icon = 'reader.png'

Ikona tego urządzenia

UserAnnotation

alias of Annotation

OPEN_FEEDBACK_MESSAGE = None

GUI wyświetla to jako komunikat, jeśli nie Brak na pasku stanu. Przydatne, jeśli otwieranie może zająć dużo czasu

VIRTUAL_BOOK_EXTENSIONS = frozenset({})

Zestaw rozszerzeń, które są „wirtualnymi książkami” na urządzeniu i dlatego nie można ich przeglądać/zapisywać/dodawać do biblioteki. Na przykład: frozenset(['kobo'])

VIRTUAL_BOOK_EXTENSION_MESSAGE = None

Wiadomość do wyświetlenia użytkownikowi w przypadku rozszerzeń książek wirtualnych.

NUKE_COMMENTS = None

Czy odrzucać komentarze w kopii książki wysłanej na urządzenie. Jeśli nie Brak, powinien to być krótki ciąg znaków, którym zostaną zastąpione komentarze.

MANAGES_DEVICE_PRESENCE = False

Jeśli True wskazuje, że ten sterownik całkowicie zarządza wykrywaniem urządzenia, wysuwaniem i tak dalej. Jeśli ustawisz to na True, musisz zaimplementować metody detect_managed_devices i debug_managed_device_detection. Sterownik z tym ustawieniem na true jest odpowiedzialny za wykrywanie urządzeń, zarządzanie czarną listą urządzeń, listą usuniętych urządzeń i tak dalej. caliber będzie okresowo wywoływał metodę detect_managed_devices(), a jeśli zwróci wykryte urządzenie, caliber wywoła metodę open(). open() będzie wywoływane za każdym razem, gdy zwracane jest urządzenie, nawet jeśli poprzednie wywołania open() nie powiodły się, dlatego sterownik musi utrzymywać własną czarną listę nieudanych urządzeń. Podobnie, podczas wysuwania, kaliber wywoła eject(), a następnie zakładając, że następne wywołanie detect_managed_devices() zwróci None, wywoła post_yank_cleanup().

SLOW_DRIVEINFO = False

Jeśli ustawione na True, calibre wywoła metodę get_driveinfo() po załadowaniu list książek w celu uzyskania informacji o dysku.

ASK_TO_ALLOW_CONNECT = False

Jeśli ustawione na True, calibre zapyta użytkownika, czy chce zarządzać urządzeniem z calibre, przy pierwszym wykryciu. Jeśli ustawisz to na True, musisz zaimplementować get_device_uid() i ignore_connected_device() oraz get_user_blacklisted_devices() i set_user_blacklisted_devices()

user_feedback_after_callback = None

Ustaw to na słownik w postaci {«title»:title, «msg»:msg, «det_msg»:detailed_msg}, aby caliber wyświetlał komunikat dla użytkownika po uruchomieniu niektórych wywołań zwrotnych (obecnie tylko upload_books). Uważaj, aby nie spamować użytkownika zbyt dużą liczbą wiadomości. Ta zmienna jest sprawdzana po każdym wywołaniu zwrotnym, więc ustawiaj ją tylko wtedy, gdy naprawdę potrzebujesz.

classmethod get_open_popup_message()[źródło]

GUI wyświetla to jako niemodalne wyskakujące okienko. Powinna być instancją OpenPopupMessage

is_usb_connected(devices_on_system, debug=False, only_presence=False)[źródło]

Zwróć True, device_info, jeśli urządzenie obsługiwane przez tę wtyczkę jest aktualnie podłączone.

Parametry:

devices_on_system – Lista aktualnie podłączonych urządzeń

detect_managed_devices(devices_on_system, force_refresh=False)[źródło]

Wywoływane tylko wtedy, gdy MANAGES_DEVICE_PRESENCE ma wartość True.

Skanuj w poszukiwaniu urządzeń, które obsługuje ten sterownik. Powinna zwrócić obiekt urządzenia, jeśli urządzenie zostanie znalezione. Ten obiekt zostanie przekazany do metody open() jako connect_device. Jeśli nie zostanie znalezione żadne urządzenie, zwróć Brak. Zwrócony obiekt może być dowolny, kaliber go nie używa, jest przekazywany tylko do open().

Ta metoda jest wywoływana okresowo przez GUI, więc upewnij się, że nie wymaga zbyt dużych zasobów. Użyj pamięci podręcznej, aby uniknąć wielokrotnego skanowania systemu.

Parametry:
  • devices_on_system – Zbiór urządzeń USB znalezionych w systemie.

  • force_refresh – Jeśli True, a sterownik używa pamięci podręcznej, aby zapobiec powtórnemu skanowaniu, pamięć podręczna musi zostać opróżniona.

debug_managed_device_detection(devices_on_system, output)[źródło]

Wywoływane tylko wtedy, gdy MANAGES_DEVICE_PRESENCE ma wartość True.

Powinien zapisywać informacje o urządzeniach wykrytych w systemie na wyjściu, które jest plikiem podobnym do obiektu.

Powinien zwrócić True, jeśli urządzenie zostało wykryte i pomyślnie otwarte, w przeciwnym razie False.

reset(key='-1', log_packets=False, report_progress=None, detected_device=None)[źródło]
Parametry:
  • key – Klucz do odblokowania urządzenia

  • log_packets – Jeśli true, strumień pakietów do/z urządzenia jest rejestrowany

  • report_progress – Funkcja wywoływana z postępem % (liczba od 0 do 100) dla różnych zadań. Jeśli zostanie wywołane z -1, oznacza to, że zadanie nie ma żadnych informacji o postępie

  • detected_device – Informacje o urządzeniu ze skanera urządzenia

can_handle_windows(usbdevice, debug=False)[źródło]

Opcjonalna metoda wykonywania dalszych kontroli na urządzeniu, aby sprawdzić, czy ten sterownik jest w stanie je obsłużyć. Jeśli tak nie jest, powinno zwrócić False. Ta metoda jest wywoływana dopiero po dopasowaniu dostawcy, identyfikatorów produktów i bcd, dzięki czemu można przeprowadzić stosunkowo czasochłonne kontrole. Domyślna implementacja zwraca True. Ta metoda jest wywoływana tylko w systemie Windows. Zobacz także can_handle().

Zauważ, że dla urządzeń opartych na USBMS ta metoda domyślnie deleguje do can_handle(). Więc musisz tylko nadpisać can_handle() w swojej podklasie USBMS.

Parametry:

usbdevice – Urządzenie usb zwrócone przez calibre.devices.winusb.scan_usb_devices()

can_handle(device_info, debug=False)[źródło]

Unixowa wersja can_handle_windows().

Parametry:

device_info – Jest krotką (vid, pid, bcd, producent, produkt, sn)

open(connected_device, library_uuid)[źródło]

Wykonaj inicjalizację na dowolnym urządzeniu. Wywoływane po wykryciu urządzenia, ale przed innymi funkcjami, które komunikują się z urządzeniem. Na przykład: W przypadku urządzeń, które prezentują się jako urządzenia pamięci masowej USB, ta metoda byłaby odpowiedzialna za zamontowanie urządzenia lub, jeśli urządzenie zostało zmontowane automatycznie, za sprawdzenie, gdzie zostało zamontowane. Metoda calibre.devices.usbms.device.Device.open() posiada implementację tej funkcji, która powinna służyć jako dobry przykład dla urządzeń pamięci masowej USB.

Ta metoda może zgłosić wyjątek OpenFeedback, aby wyświetlić komunikat dla użytkownika.

Parametry:
  • connected_device – Urządzenie, które próbujemy otworzyć. Jest to krotka z (identyfikator dostawcy, identyfikator produktu, bcd, nazwa producenta, nazwa produktu, numer seryjny urządzenia). Jednak niektóre urządzenia nie mają numeru seryjnego, aw systemie Windows obecne są tylko pierwsze trzy pola, pozostałe to Brak.

  • library_uuid – UUID bieżącej biblioteki kalibrów. Może mieć wartość Brak, jeśli nie ma biblioteki (na przykład, gdy jest używana z wiersza poleceń).

eject()[źródło]

Odmontuj/wysuń urządzenie z systemu operacyjnego. Nie sprawdza to, czy istnieją oczekujące zadania GUI, które wymagają komunikacji z urządzeniem.

UWAGA: Ta metoda nie może być wywoływana w tym samym wątku, co pozostałe metody urządzeń.

post_yank_cleanup()[źródło]

Wywoływane, jeśli użytkownik wyciągnie urządzenie bez jego uprzedniego usunięcia.

set_progress_reporter(report_progress)[źródło]

Ustaw funkcję raportowania informacji o postępie.

Parametry:

report_progress – Funkcja wywoływana z postępem % (liczba od 0 do 100) dla różnych zadań. Jeśli zostanie wywołane z -1, oznacza to, że zadanie nie ma żadnych informacji o postępie

get_device_information(end_session=True)[źródło]

Zapytaj urządzenie o informacje o urządzeniu. Zobacz L{DeviceInfoQuery}.

Zwraca:

(nazwa urządzenia, wersja urządzenia, wersja oprogramowania na urządzeniu, typ MIME) Krotka może opcjonalnie mieć piąty element, który jest słownikiem informacji o napędzie. Zobacz usbms.driver na przykład.

get_driveinfo()[źródło]

Zwróć słownik driveinfo. Zwykle wywoływane z get_device_information(), ale jeśli ładowanie informacji o dysku jest powolne dla tego sterownika, należy ustawić SLOW_DRIVEINFO. W takim przypadku ta metoda zostanie wywołana przez kaliber po załadowaniu list książek. Zauważ, że nie jest on wywoływany w wątku urządzenia, więc sterownik powinien buforować informacje o dysku w metodzie books() i ta funkcja powinna zwracać dane z pamięci podręcznej.

card_prefix(end_session=True)[źródło]

Zwróć dwuelementową listę prefiksu do ścieżek na kartach. Jeśli nie ma karty Brak jest ustawiony dla prefiksu karty. np. («/place», «/place2») (None, «place2») («place», None) (None, None)

total_space(end_session=True)[źródło]
Uzyskaj całkowitą dostępną przestrzeń na punktach montowania:
  1. Pamięć główna

  2. Karta pamięci A

  3. Karta pamięci B

Zwraca:

Lista 3-elementowa z całkowitą przestrzenią w bajtach (1, 2, 3). Jeśli konkretne urządzenie nie ma żadnej z tych lokalizacji, powinno zwrócić 0.

free_space(end_session=True)[źródło]
Uzyskaj wolne miejsce na punktach montażowych:
  1. Pamięć główna

  2. Karta A

  3. Karta B

Zwraca:

Lista 3 elementów z wolnym miejscem w bajtach (1, 2, 3). Jeśli dane urządzenie nie ma żadnej z tych lokalizacji, powinno zwrócić -1.

books(oncard=None, end_session=True)[źródło]

Zwróć listę e-booków na urządzeniu.

Parametry:

oncard – Jeśli «carda» lub «cardb» zwraca listę e-książek na określonej karcie pamięci, w przeciwnym razie zwraca listę e-książek w pamięci głównej urządzenia. Jeśli określono kartę i nie ma na niej żadnych książek, zwróć pustą listę.

Zwraca:

Lista książek.

upload_books(files, names, on_card=None, end_session=True, metadata=None)[źródło]

Prześlij listę książek na urządzenie. Jeśli plik już istnieje na urządzeniu, należy go zastąpić. Ta metoda powinna wywołać FreeSpaceError, jeśli na urządzeniu nie ma wystarczającej ilości wolnego miejsca. Tekst FreeSpaceError musi zawierać słowo „karta”, jeśli „na_karcie” nie ma wartości Brak, w przeciwnym razie musi zawierać słowo „pamięć”.

Parametry:
  • files – Lista ścieżek

  • names – Lista nazw plików, które książki powinny mieć po przesłaniu na urządzenie. dł(nazwy) == dł(pliki)

  • metadata – Jeśli nie Brak, jest to lista obiektów Metadata. Pomysł polega na tym, aby wykorzystać metadane do określenia, gdzie na urządzeniu umieścić książkę. len(metadane) == len(pliki). Oprócz zwykłej okładki (ścieżka do okładki) może istnieć również atrybut miniatury, którego należy używać w pierwszej kolejności. Atrybut miniatury ma postać (width, height, cover_data jako jpeg).

Zwraca:

Lista krotek 3-elementowych. Lista ma być przekazana do add_books_to_metadata().

classmethod add_books_to_metadata(locations, metadata, booklists)[źródło]

Dodaj lokalizacje do list książek. Ta funkcja nie może komunikować się z urządzeniem.

Parametry:
  • locations – Wynik rozmowy z L{upload_books}

  • metadata – Lista obiektów Metadata, taka sama jak dla upload_books().

  • booklists – Krotka zawierająca wynik wywołań do (books(oncard=None)(), books(oncard='carda')(), :meth`books(oncard=»cardb»)`).

delete_books(paths, end_session=True)[źródło]

Usuń książki ze ścieżek na urządzeniu.

classmethod remove_books_from_metadata(paths, booklists)[źródło]

Usuń książki z listy metadanych. Ta funkcja nie może komunikować się z urządzeniem.

Parametry:
  • paths – ścieżki do książek na urządzeniu.

  • booklists – Krotka zawierająca wynik wywołań do (books(oncard=None)(), books(oncard='carda')(), :meth`books(oncard=»cardb»)`).

sync_booklists(booklists, end_session=True)[źródło]

Zaktualizuj metadane na urządzeniu.

Parametry:

booklists – Krotka zawierająca wynik wywołań do (books(oncard=None)(), books(oncard='carda')(), :meth`books(oncard=»cardb»)`).

get_file(path, outfile, end_session=True)[źródło]

Przeczytaj plik w ścieżce na urządzeniu i zapisz go w pliku wyjściowym.

Parametry:

outfile – obiekt plikowy, taki jak sys.stdout lub wynik wywołania open().

classmethod config_widget()[źródło]

Powinien zwrócić QWidget. QWidget zawiera ustawienia interfejsu urządzenia

classmethod save_settings(settings_widget)[źródło]

Powinien zapisać ustawienia na dysku. Pobiera widżet utworzony w config_widget() i zapisuje wszystkie ustawienia na dysku.

classmethod settings()[źródło]

Powinna zwrócić obiekt opts. Obiekt opts powinien mieć co najmniej jeden atrybut „format_map”, który jest uporządkowaną listą formatów urządzenia.

set_plugboards(plugboards, pb_func)[źródło]

zapewnić sterownikowi aktualny zestaw wtyczek i funkcję wyboru konkretnej wtyczek. Ta metoda jest wywoływana bezpośrednio przed add_books i sync_booklists.

pb_func jest wywoływalny z następującą sygnaturą:

def pb_func(device_name, format, plugboards)

Podajesz mu aktualną nazwę urządzenia (albo nazwę klasy lub DEVICE_PLUGBOARD_NAME), format, który Cię interesuje («prawdziwy» format lub «device_db») oraz wtyczki (otrzymałeś je przez set_plugboards, to samo miejsce, w którym masz Ta metoda).

Zwraca:

Brak lub pojedyncza instancja wtyczki.

set_driveinfo_name(location_code, name)[źródło]

Ustaw nazwę urządzenia w pliku driveinfo na „nazwa”. To ustawienie będzie obowiązywać do momentu ponownego utworzenia pliku lub ponownej zmiany nazwy.

Urządzenia niedyskowe powinny implementować tę metodę w oparciu o kody lokalizacji zwracane przez metodę get_device_information().

prepare_addable_books(paths)[źródło]

Biorąc pod uwagę listę ścieżek, zwraca inną listę ścieżek. Te ścieżki wskazują na możliwe do dodania wersje książek.

Jeśli wystąpi błąd podczas przygotowywania książki, to zamiast ścieżki, pozycja na zwróconej liście dla tej książki powinna być krotką trzech: (original_path, the exception instance, traceback)

startup()[źródło]

Wywoływane, gdy calibre uruchamia urządzenie. Wykonaj wszelkie wymagane inicjalizacje. Zauważ, że można utworzyć wiele instancji klasy, a zatem __init__ może być wywoływany wiele razy, ale tylko jedna instancja będzie miała wywołaną tę metodę. Ta metoda jest wywoływana w wątku urządzenia, a nie w wątku GUI.

shutdown()[źródło]

Wywoływane, gdy calibre się wyłącza, na dobre lub w trakcie przygotowań do ponownego uruchomienia. Czy wymagane czyszczenie. Ta metoda jest wywoływana w wątku urządzenia, a nie w wątku GUI.

get_device_uid()[źródło]

Musi zwrócić unikalny identyfikator dla aktualnie podłączonego urządzenia (jest to wywoływane natychmiast po udanym wywołaniu funkcji open()). Musisz zaimplementować tę metodę, jeśli ustawisz ASK_TO_ALLOW_CONNECT=True

ignore_connected_device(uid)[źródło]

Powinna ignorować urządzenie identyfikowane przez uid (wynik wywołania get_device_uid()) w przyszłości. Musisz zaimplementować tę metodę, jeśli ustawisz ASK_TO_ALLOW_CONNECT=True. Zauważ, że ta funkcja jest wywoływana natychmiast po open(), więc jeśli open() buforuje jakiś stan, sterownik powinien zresetować ten stan.

get_user_blacklisted_devices()[źródło]

Zwróć mapę identyfikatora urządzenia do przyjaznej nazwy dla wszystkich urządzeń, które użytkownik poprosił o zignorowanie.

set_user_blacklisted_devices(devices)[źródło]

Ustaw listę identyfikatorów urządzeń, które powinny być ignorowane przez ten sterownik.

specialize_global_preferences(device_prefs)[źródło]

Zastosuj tę metodę, jeśli Twoje urządzenie chce zastąpić określoną preferencję. Musisz upewnić się, że wszystkie strony wywołujące, które chcą ustawienia, które można nadpisać, używają device_prefs[«coś»] zamiast prefs[«coś»]. Twoja metoda powinna wywołać device_prefs.set_overrides(pref=val, pref=val, …). Obecnie używany do: zarządzania metadanymi (prefs[«manage_device_metadata»])

set_library_info(library_name, library_uuid, field_metadata)[źródło]

Zaimplementuj tę metodę, jeśli chcesz uzyskać informacje o bieżącej bibliotece kalibrów. Ta metoda jest wywoływana podczas uruchamiania i gdy biblioteka kalibru zmienia się podczas połączenia.

is_dynamically_controllable()[źródło]

Wywoływane przez menedżera urządzeń podczas uruchamiania wtyczek. Jeśli ta metoda zwraca ciąg znaków, to a) obsługuje interfejs dynamicznego sterowania menedżera urządzeń oraz b) ta nazwa ma być używana podczas komunikacji z wtyczką.

Tę metodę można wywołać w wątku GUI. Sterownik, który implementuje tę metodę, musi być bezpieczny wątkowo.

start_plugin()[źródło]

Ta metoda jest wywoływana w celu uruchomienia wtyczki. Wtyczka powinna zacząć akceptować połączenia urządzeń, jednak robi to. Jeśli wtyczka już akceptuje połączenia, nie rób nic.

Tę metodę można wywołać w wątku GUI. Sterownik, który implementuje tę metodę, musi być bezpieczny wątkowo.

stop_plugin()[źródło]

Ta metoda jest wywoływana, aby zatrzymać wtyczkę. Wtyczka nie powinna już akceptować połączeń i powinna sama sprzątać. Jest prawdopodobne, że ta metoda powinna wywołać zamknięcie. Jeśli wtyczka już nie akceptuje połączeń, nie rób nic.

Tę metodę można wywołać w wątku GUI. Sterownik, który implementuje tę metodę, musi być bezpieczny wątkowo.

get_option(opt_string, default=None)[źródło]

Zwraca wartość opcji wskazanej przez opt_string. Tę metodę można wywołać, gdy wtyczka nie jest uruchomiona. Zwróć Brak, jeśli opcja nie istnieje.

Tę metodę można wywołać w wątku GUI. Sterownik, który implementuje tę metodę, musi być bezpieczny wątkowo.

set_option(opt_string, opt_value)[źródło]

Ustaw wartość opcji wskazanej przez opt_string. Tę metodę można wywołać, gdy wtyczka nie jest uruchomiona.

Tę metodę można wywołać w wątku GUI. Sterownik, który implementuje tę metodę, musi być bezpieczny wątkowo.

is_running()[źródło]

Zwróci True, jeśli wtyczka jest uruchomiona, w przeciwnym razie false

Tę metodę można wywołać w wątku GUI. Sterownik, który implementuje tę metodę, musi być bezpieczny wątkowo.

synchronize_with_db(db, book_id, book_metadata, first_call)[źródło]

Wywoływane podczas dopasowywania książek, gdy książka na urządzeniu zostanie dopasowana do książki w calibre db. Metoda odpowiada za synchronizację danych z urządzenia z bazą danych calibre (w razie potrzeby).

Metoda musi zwrócić krotkę o dwóch wartościach. Pierwsza wartość to zestaw identyfikatorów księgi calibre zmienionych, jeśli baza danych calibre została zmieniona, lub Brak, jeśli baza danych nie została zmieniona. Jeśli pierwsza wartość jest pustym zestawem, metadane książki na urządzeniu są aktualizowane za pomocą metadanych calibre i zwracane do urządzenia, ale nie jest wykonywane odświeżanie GUI tej książki. Jest to przydatne, gdy dane calibre są poprawne, ale muszą zostać przesłane do urządzenia.

Druga wartość sama w sobie jest krotką o dwóch wartościach. Pierwsza wartość w krotce określa, czy format książki powinien zostać wysłany do urządzenia. Celem jest umożliwienie sprawdzenia, czy książka na urządzeniu jest taka sama jak książka w calibre. Ta wartość musi wynosić None, jeśli żadna książka nie ma być wysłana, w przeciwnym razie zwróć nazwę pliku bazowego na urządzeniu (łańcuch, taki jak foobar.epub). Pamiętaj, aby w nazwie uwzględnić rozszerzenie. Podsystem urządzenia utworzy zadanie send_books dla wszystkich książek z wartościami, które nie zostały zwrócone. Uwaga: oprócz późniejszego pobrania rozszerzenia, nazwa jest ignorowana w przypadkach, gdy urządzenie używa szablonu do wygenerowania nazwy pliku, co najczęściej robi. Druga wartość w zwróconej krotce wskazuje, czy format jest datowany na przyszłość. Zwróć True, jeśli tak, w przeciwnym razie zwróć False. Calibre wyświetli użytkownikowi okno dialogowe z listą wszystkich przyszłych datowanych książek.

Niezwykle ważne: ta metoda jest wywoływana w wątku GUI. Musi być bezpieczny wątkowo w odniesieniu do wątku menedżera urządzeń.

book_id: identyfikator calibre książki w bazie danych. book_metadata: obiekt Metadata dla książki pochodzącej z urządzenia. first_call: prawda, jeśli jest to pierwsze wywołanie podczas synchronizacji, w przeciwnym razie fałsz

class calibre.devices.interface.BookList(oncard, prefix, settings)[źródło]

Klasy bazowe: list

Lista książek. Każdy obiekt książki musi mieć pola

  1. tytuł

  2. autorzy

  3. rozmiar (rozmiar pliku książki)

  4. data i godzina (czas UTC)

  5. ścieżka (ścieżka na urządzeniu do książki)

  6. miniatura (może być Brak) miniatura jest albo obiektem str/bytes z danymi obrazu, albo powinna mieć atrybut image_path, który przechowuje bezwzględną (natywną platformę) ścieżkę do obrazu

  7. tagi (lista ciągów, może być pusta).

supports_collections()[źródło]

Zwróć True, jeśli urządzenie obsługuje kolekcje dla tej listy książek.

add_book(book, replace_metadata)[źródło]

Dodaj książkę do listy książek. Intencją jest zachowanie wszelkich wewnętrznych metadanych urządzenia. Zwróć True, jeśli listy książek muszą być zsynchronizowane

remove_book(book)[źródło]

Usuń książkę z listy książek. Popraw jednocześnie wszystkie metadane urządzenia

get_collections(collection_attributes)[źródło]

Zwróć słownik kolekcji utworzonych na podstawie collection_attributes. Każdy wpis w słowniku ma postać nazwa kolekcji:[lista książek]

Lista książek jest posortowana według tytułu książki, z wyjątkiem zbiorów utworzonych z serii, w których używany jest indeks_serii.

Parametry:

collection_attributes – Lista atrybutów obiektu książki

Urządzenia oparte na pamięci masowej USB

Bazową klasą dla takich urządzeń jest calibre.devices.usbms.driver.USBMS. Ta klasa z kolei dziedziczy część swojej funkcjonalności ze swoich baz, udokumentowanych poniżej. Typowy podstawowy sterownik USBMS wygląda tak:

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)[źródło]

Klasy bazowe: DeviceConfig, DevicePlugin

Ta klasa udostępnia logikę wspólną dla wszystkich sterowników urządzeń, które eksportują się jako urządzenia pamięci masowej USB. Zapewnia implementacje do montażu/wysuwania urządzeń USBMS na wszystkich platformach.

VENDOR_ID = 0

VENDOR_ID może być liczbą całkowitą, listą liczb całkowitych lub słownikiem Jeśli jest to słownik, to musi to być słownik słowników postaci:

{
 integer_vendor_id : { product_id : [list of BCDs], ... },
 ...
}
PRODUCT_ID = 0

Liczba całkowita lub lista liczb całkowitych

BCD = None

BCD może mieć wartość Brak, aby nie rozróżniać urządzeń opartych na BCD, lub może to być lista numerów BCD wszystkich urządzeń obsługiwanych przez ten sterownik.

WINDOWS_MAIN_MEM = None

Ciąg identyfikujący pamięć główną urządzenia w ciągach identyfikatorów PnP systemu Windows Może to być Brak, ciąg, lista ciągów lub skompilowane wyrażenie regularne

WINDOWS_CARD_A_MEM = None

Ciąg identyfikujący pierwszą kartę urządzenia w ciągach identyfikatorów PnP systemu Windows Może to być Brak, ciąg, lista ciągów lub skompilowane wyrażenie regularne

WINDOWS_CARD_B_MEM = None

Ciąg identyfikujący drugą kartę urządzenia w ciągach identyfikatora PnP systemu Windows Może to być Brak, ciąg, lista ciągów lub skompilowane wyrażenie regularne

OSX_MAIN_MEM_VOL_PAT = None

Używany przez wykrywanie nowego sterownika do odróżnienia pamięci głównej od kart pamięci. Powinno być wyrażeniem regularnym, które pasuje do punktu montowania pamięci głównej przypisanego przez macOS

BACKLOADING_ERROR_MESSAGE = None
MAX_PATH_LEN = 250

Maksymalna długość ścieżek utworzonych na urządzeniu

NEWS_IN_FOLDER = True

Umieść wiadomości w osobnym folderze

reset(key='-1', log_packets=False, report_progress=None, detected_device=None)[źródło]
Parametry:
  • key – Klucz do odblokowania urządzenia

  • log_packets – Jeśli true, strumień pakietów do/z urządzenia jest rejestrowany

  • report_progress – Funkcja wywoływana z postępem % (liczba od 0 do 100) dla różnych zadań. Jeśli zostanie wywołane z -1, oznacza to, że zadanie nie ma żadnych informacji o postępie

  • detected_device – Informacje o urządzeniu ze skanera urządzenia

set_progress_reporter(report_progress)[źródło]

Ustaw funkcję raportowania informacji o postępie.

Parametry:

report_progress – Funkcja wywoływana z postępem % (liczba od 0 do 100) dla różnych zadań. Jeśli zostanie wywołane z -1, oznacza to, że zadanie nie ma żadnych informacji o postępie

card_prefix(end_session=True)[źródło]

Zwróć dwuelementową listę prefiksu do ścieżek na kartach. Jeśli nie ma karty Brak jest ustawiony dla prefiksu karty. np. («/place», «/place2») (None, «place2») («place», None) (None, None)

total_space(end_session=True)[źródło]
Uzyskaj całkowitą dostępną przestrzeń na punktach montowania:
  1. Pamięć główna

  2. Karta pamięci A

  3. Karta pamięci B

Zwraca:

Lista 3-elementowa z całkowitą przestrzenią w bajtach (1, 2, 3). Jeśli konkretne urządzenie nie ma żadnej z tych lokalizacji, powinno zwrócić 0.

free_space(end_session=True)[źródło]
Uzyskaj wolne miejsce na punktach montażowych:
  1. Pamięć główna

  2. Karta A

  3. Karta B

Zwraca:

Lista 3 elementów z wolnym miejscem w bajtach (1, 2, 3). Jeśli dane urządzenie nie ma żadnej z tych lokalizacji, powinno zwrócić -1.

windows_sort_drives(drives)[źródło]

Wywoływany w celu rozróżnienia pamięci głównej i karty pamięci dla urządzeń, które nie rozróżniają ich na podstawie WINDOWS_CARD_NAME. Na przykład: EB600

can_handle_windows(usbdevice, debug=False)[źródło]

Opcjonalna metoda wykonywania dalszych kontroli na urządzeniu, aby sprawdzić, czy ten sterownik jest w stanie je obsłużyć. Jeśli tak nie jest, powinno zwrócić False. Ta metoda jest wywoływana dopiero po dopasowaniu dostawcy, identyfikatorów produktów i bcd, dzięki czemu można przeprowadzić stosunkowo czasochłonne kontrole. Domyślna implementacja zwraca True. Ta metoda jest wywoływana tylko w systemie Windows. Zobacz także can_handle().

Zauważ, że dla urządzeń opartych na USBMS ta metoda domyślnie deleguje do can_handle(). Więc musisz tylko nadpisać can_handle() w swojej podklasie USBMS.

Parametry:

usbdevice – Urządzenie usb zwrócone przez calibre.devices.winusb.scan_usb_devices()

open(connected_device, library_uuid)[źródło]

Wykonaj inicjalizację na dowolnym urządzeniu. Wywoływane po wykryciu urządzenia, ale przed innymi funkcjami, które komunikują się z urządzeniem. Na przykład: W przypadku urządzeń, które prezentują się jako urządzenia pamięci masowej USB, ta metoda byłaby odpowiedzialna za zamontowanie urządzenia lub, jeśli urządzenie zostało zmontowane automatycznie, za sprawdzenie, gdzie zostało zamontowane. Metoda calibre.devices.usbms.device.Device.open() posiada implementację tej funkcji, która powinna służyć jako dobry przykład dla urządzeń pamięci masowej USB.

Ta metoda może zgłosić wyjątek OpenFeedback, aby wyświetlić komunikat dla użytkownika.

Parametry:
  • connected_device – Urządzenie, które próbujemy otworzyć. Jest to krotka z (identyfikator dostawcy, identyfikator produktu, bcd, nazwa producenta, nazwa produktu, numer seryjny urządzenia). Jednak niektóre urządzenia nie mają numeru seryjnego, aw systemie Windows obecne są tylko pierwsze trzy pola, pozostałe to Brak.

  • library_uuid – UUID bieżącej biblioteki kalibrów. Może mieć wartość Brak, jeśli nie ma biblioteki (na przykład, gdy jest używana z wiersza poleceń).

eject()[źródło]

Odmontuj/wysuń urządzenie z systemu operacyjnego. Nie sprawdza to, czy istnieją oczekujące zadania GUI, które wymagają komunikacji z urządzeniem.

UWAGA: Ta metoda nie może być wywoływana w tym samym wątku, co pozostałe metody urządzeń.

post_yank_cleanup()[źródło]

Wywoływane, jeśli użytkownik wyciągnie urządzenie bez jego uprzedniego usunięcia.

sanitize_callback(path)[źródło]

Wywołanie zwrotne umożliwiające poszczególnym sterownikom urządzeń zastąpienie oczyszczania ścieżki używanego przez create_upload_path().

filename_callback(default, mi)[źródło]

Wywołanie zwrotne umożliwiające sterownikom zmianę domyślnej nazwy pliku ustawionej przez create_upload_path().

sanitize_path_components(components)[źródło]

Wykonaj dowolne oczyszczanie specyficzne dla urządzenia na komponentach ścieżki dla plików, które mają być przesłane do urządzenia

get_annotations(path_map)[źródło]

Zamień path_map na annotation_map plików znalezionych na urządzeniu

add_annotation_to_library(db, db_id, annotation)[źródło]

Dodaj adnotację do biblioteki calibre

class calibre.devices.usbms.cli.CLI[źródło]
class calibre.devices.usbms.driver.USBMS(plugin_path)[źródło]

Klasy bazowe: CLI, Device

Klasa bazowa dla wszystkich urządzeń USBMS. Implementuje logikę wysyłania/pobierania/aktualizowania metadanych/buforowania metadanych/itd.

description = 'Umożliwia komunikację z czytnikiem.'

Krótki string, opisujący, co robi ta wtyczka

author = 'John Schember'

Autor wtyczki

supported_platforms = ['windows', 'osx', 'linux']

Lista platform, na których pracuje ta wtyczka. Na przykład:

booklist_class

alias of BookList

book_class

alias of Book

FORMATS = []

Uporządkowana lista obsługiwanych formatów

CAN_SET_METADATA = []

Czy metadane w książkach można ustawić za pomocą GUI.

get_device_information(end_session=True)[źródło]

Zapytaj urządzenie o informacje o urządzeniu. Zobacz L{DeviceInfoQuery}.

Zwraca:

(nazwa urządzenia, wersja urządzenia, wersja oprogramowania na urządzeniu, typ MIME) Krotka może opcjonalnie mieć piąty element, który jest słownikiem informacji o napędzie. Zobacz usbms.driver na przykład.

set_driveinfo_name(location_code, name)[źródło]

Ustaw nazwę urządzenia w pliku driveinfo na „nazwa”. To ustawienie będzie obowiązywać do momentu ponownego utworzenia pliku lub ponownej zmiany nazwy.

Urządzenia niedyskowe powinny implementować tę metodę w oparciu o kody lokalizacji zwracane przez metodę get_device_information().

books(oncard=None, end_session=True)[źródło]

Zwróć listę e-booków na urządzeniu.

Parametry:

oncard – Jeśli «carda» lub «cardb» zwraca listę e-książek na określonej karcie pamięci, w przeciwnym razie zwraca listę e-książek w pamięci głównej urządzenia. Jeśli określono kartę i nie ma na niej żadnych książek, zwróć pustą listę.

Zwraca:

Lista książek.

upload_books(files, names, on_card=None, end_session=True, metadata=None)[źródło]

Prześlij listę książek na urządzenie. Jeśli plik już istnieje na urządzeniu, należy go zastąpić. Ta metoda powinna wywołać FreeSpaceError, jeśli na urządzeniu nie ma wystarczającej ilości wolnego miejsca. Tekst FreeSpaceError musi zawierać słowo „karta”, jeśli „na_karcie” nie ma wartości Brak, w przeciwnym razie musi zawierać słowo „pamięć”.

Parametry:
  • files – Lista ścieżek

  • names – Lista nazw plików, które książki powinny mieć po przesłaniu na urządzenie. dł(nazwy) == dł(pliki)

  • metadata – Jeśli nie Brak, jest to lista obiektów Metadata. Pomysł polega na tym, aby wykorzystać metadane do określenia, gdzie na urządzeniu umieścić książkę. len(metadane) == len(pliki). Oprócz zwykłej okładki (ścieżka do okładki) może istnieć również atrybut miniatury, którego należy używać w pierwszej kolejności. Atrybut miniatury ma postać (width, height, cover_data jako jpeg).

Zwraca:

Lista krotek 3-elementowych. Lista ma być przekazana do add_books_to_metadata().

upload_cover(path, filename, metadata, filepath)[źródło]

Prześlij okładkę książki do urządzenia. Domyślna implementacja nic nie robi.

Parametry:
  • path – Pełna ścieżka do folderu, w którym znajduje się powiązana książka.

  • filename – Nazwa pliku książki bez rozszerzenia.

  • metadata – metadane należące do książki. Użyj metadata.thumbnail jako okładki

  • filepath – Pełna ścieżka do pliku e-booka

add_books_to_metadata(locations, metadata, booklists)[źródło]

Dodaj lokalizacje do list książek. Ta funkcja nie może komunikować się z urządzeniem.

Parametry:
  • locations – Wynik rozmowy z L{upload_books}

  • metadata – Lista obiektów Metadata, taka sama jak dla upload_books().

  • booklists – Krotka zawierająca wynik wywołań do (books(oncard=None)(), books(oncard='carda')(), :meth`books(oncard=»cardb»)`).

delete_books(paths, end_session=True)[źródło]

Usuń książki ze ścieżek na urządzeniu.

remove_books_from_metadata(paths, booklists)[źródło]

Usuń książki z listy metadanych. Ta funkcja nie może komunikować się z urządzeniem.

Parametry:
  • paths – ścieżki do książek na urządzeniu.

  • booklists – Krotka zawierająca wynik wywołań do (books(oncard=None)(), books(oncard='carda')(), :meth`books(oncard=»cardb»)`).

sync_booklists(booklists, end_session=True)[źródło]

Zaktualizuj metadane na urządzeniu.

Parametry:

booklists – Krotka zawierająca wynik wywołań do (books(oncard=None)(), books(oncard='carda')(), :meth`books(oncard=»cardb»)`).

classmethod normalize_path(path)[źródło]

Ścieżka zwrotna z natywnymi separatorami ścieżek platformy

Akcje interfejsu użytkownika

Jeśli dodajesz własną wtyczkę w pliku ZIP, powinieneś podklasy zarówno InterfaceActionBase, jak i InterfaceAction. Metoda load_actual_plugin() twojej podklasy InterfaceActionBase musi zwracać instancję obiektu twojej podklasy InterfaceBase.

class calibre.gui2.actions.InterfaceAction(parent, site_customization)[źródło]

Klasy bazowe: QObject

Wtyczka reprezentująca „działanie”, które można wykonać w graficznym interfejsie użytkownika. Wszystkie elementy na pasku narzędzi i menu kontekstowe są zaimplementowane przez te wtyczki.

Zauważ, że ta klasa jest klasą bazową dla tych wtyczek, jednak aby zintegrować wtyczkę z systemem wtyczek calibre, musisz utworzyć klasę opakowującą, która odwołuje się do rzeczywistej wtyczki. Zobacz moduł calibre.customize.builtins po przykłady.

Jeśli dwa obiekty InterfaceAction mają taką samą nazwę, pierwszeństwo ma ten o wyższym priorytecie.

Podklasy powinny implementować metody genesis(), library_changed(), location_selected(), shutting_down(), initialization_complete() i tag_browser_context_action().

Po zainicjowaniu wtyczka ta ma dostęp do głównego interfejsu użytkownika calibre poprzez członka gui. Możesz uzyskać dostęp do innych wtyczek według nazwy, na przykład:

self.gui.iactions['Save To Disk']

Aby uzyskać dostęp do właściwej wtyczki, użyj atrybutu interface_action_base_plugin, ten atrybut staje się dostępny dopiero po zainicjowaniu wtyczki. Przydatne, jeśli chcesz używać metod z klasy wtyczek, takich jak do_user_config().

QAction określone przez action_spec jest automatycznie tworzone i udostępniane jako self.qaction.

name = 'Implement me'

Nazwa wtyczki. Jeśli istnieją dwie wtyczki o tej samej nazwie, pierwszeństwo ma ta o wyższym priorytecie.

priority = 1

Priorytet wtyczki. Jeśli istnieją dwie wtyczki o tej samej nazwie, pierwszeństwo ma ta o wyższym priorytecie.

popup_type = 1

Typ wyskakującego menu, gdy ta wtyczka jest dodawana do paska narzędzi

auto_repeat = False

Czy ta akcja powinna być automatycznie powtarzana po przytrzymaniu klawisza skrótu.

action_spec = ('text', 'icon', None, None)

Of the form: (text, icon_path, tooltip, keyboard shortcut). icon, tooltip and keyboard shortcut can be None. keyboard shortcut must be either a string, None or tuple of shortcuts. If None, a keyboard shortcut corresponding to the action is not registered. If you pass an empty tuple, then the shortcut is registered with no default key binding.

action_add_menu = False

Jeśli True, menu jest automatycznie tworzone i dodawane do self.qaction

action_menu_clone_qaction = False

Jeśli True, klon self.qaction jest dodawany do menu self.qaction Jeśli chcesz, aby tekst tej akcji różnił się od self.qaction, ustaw tę zmienną na nowy tekst

dont_add_to = frozenset({})

Zestaw lokalizacji, do których nie należy dodawać tej akcji. Zobacz all_locations, aby zobaczyć listę możliwych lokalizacji

dont_remove_from = frozenset({})

Zestaw lokalizacji, z których nie można usunąć tej akcji. Zobacz all_locations, aby zobaczyć listę możliwych lokalizacji

action_type = 'global'

Rodzaj działania „bieżący” oznacza działanie na bieżący widok „globalny” oznacza działanie, które nie działa na bieżący widok, ale raczej na kaliber jako całość

accepts_drops = False

Jeśli True, wtedy to InterfaceAction będzie miało możliwość interakcji ze zdarzeniami przeciągania i upuszczania. Zobacz metody, accept_enter_event(), :meth`:accept_drag_move_event`, drop_event(), aby uzyskać szczegółowe informacje.

accept_enter_event(event, mime_data)[źródło]

Ta metoda powinna zwrócić True, jeśli ta akcja interfejsu jest w stanie obsłużyć zdarzenie przeciągania. Nie dzwoń do akceptacji/ignorowania wydarzenia, o które zadba interfejs calibre.

accept_drag_move_event(event, mime_data)[źródło]

Ta metoda powinna zwrócić True, jeśli ta akcja interfejsu jest w stanie obsłużyć zdarzenie przeciągania. Nie dzwoń do akceptacji/ignorowania wydarzenia, o które zadba interfejs calibre.

drop_event(event, mime_data)[źródło]

Ta metoda powinna wykonać jakąś użyteczną akcję i zwrócić True, jeśli ta akcja interfejsu jest w stanie obsłużyć zdarzenie drop. Nie dzwoń do akceptacji/ignorowania wydarzenia, o które zadba interfejs calibre. W tej funkcji nie należy wykonywać operacji blokujących/długich. Zamiast tego wyemituj sygnał lub użyj QTimer.singleShot i wróć szybko. Zobacz wbudowane akcje dla przykładów.

create_menu_action(menu, unique_name, text, icon=None, shortcut=None, description=None, triggered=None, shortcut_name=None, persist_shortcut=False)[źródło]

Wygodna metoda łatwego dodawania akcji do QMenu. Zwraca utworzone QAction. Ta akcja ma jeden dodatkowy atrybut calibre_shortcut_unique_name, który, jeśli nie, brak, odnosi się do unikalnej nazwy, pod którą ta akcja jest zarejestrowana w menedżerze klawiatury.

Parametry:
  • menu – QMenu, do którego zostanie dodana nowo utworzona akcja

  • unique_name – Unikalna nazwa tej akcji, musi być globalnie unikalna, więc postaraj się, aby była jak najbardziej opisowa. W razie wątpliwości dodaj do niego UUID.

  • text – Tekst akcji.

  • 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 – Ciąg, lista ciągów, Brak lub Fałsz. Jeśli False, dla tej akcji nie jest zarejestrowany żaden skrót klawiaturowy. Jeśli Brak, rejestrowany jest skrót klawiaturowy bez domyślnego przypisania klawiszy. Ciąg i lista ciągów rejestrują skrót z domyślnym przypisaniem klawiszy, jak określono.

  • description – Opis tej akcji. Służy do ustawiania podpowiedzi.

  • triggered – Wywołany, który jest połączony z wyzwalanym sygnałem tworzonej akcji.

  • shortcut_name – Tekst wyświetlany użytkownikowi podczas dostosowywania skrótów klawiaturowych dla tej akcji. Domyślnie jest ustawiona na wartość text.

  • persist_shortcut – Skróty do czynności, które nie zawsze się pojawiają lub są zależne od biblioteki, mogą zniknąć, gdy inne skróty klawiaturowe są edytowane, chyba że `persist_shortcut` ma wartość True.

load_resources(names)[źródło]

Jeśli ta wtyczka znajduje się w pliku ZIP (wtyczka dodana przez użytkownika), ta metoda pozwoli Ci załadować zasoby z pliku ZIP.

Na przykład, aby załadować obraz:

pixmap = QPixmap()
pixmap.loadFromData(tuple(self.load_resources(['images/icon.png']).values())[0])
icon = QIcon(pixmap)
Parametry:

names – Lista ścieżek do zasobów w pliku ZIP przy użyciu / jako separatora

Zwraca:

Słownik w postaci {name : file_contents}. Wszelkie nazwy, które nie zostały znalezione w pliku ZIP, nie będą obecne w słowniku.

genesis()[źródło]

Skonfiguruj tę wtyczkę. Wywoływane tylko raz podczas inicjalizacji. self.gui jest dostępny. Akcja określona przez action_spec jest dostępna jako self.qaction.

location_selected(loc)[źródło]

Wywoływane, gdy zmienia się lista książek wyświetlana w calibre. Obecnie wartości dla loc to: library, main, card i cardb.

Ta metoda powinna włączać/wyłączać tę akcję i jej podakcje odpowiednio do lokalizacji.

library_about_to_change(olddb, db)[źródło]

Wywoływane, gdy bieżąca biblioteka zostanie zmieniona.

Parametry:
  • olddb – LibraryDatabase odpowiadająca poprzedniej bibliotece.

  • db – LibraryDatabase odpowiadająca nowej bibliotece.

library_changed(db)[źródło]

Wywoływane, gdy bieżąca biblioteka zostanie zmieniona.

Parametry:

db – LibraryDatabase odpowiadająca bieżącej bibliotece.

gui_layout_complete()[źródło]

Wywoływane raz na akcję, gdy układ głównego GUI zostanie ukończony. Jeśli Twoja akcja wymaga wprowadzenia zmian w układzie, należy to zrobić tutaj, a nie w initialization_complete().

initialization_complete()[źródło]

Wywoływane raz na akcję po zakończeniu inicjalizacji głównego GUI.

tag_browser_context_action(index)[źródło]

Wywoływane podczas wyświetlania menu kontekstowego w przeglądarce znaczników. index to QModelIndex, który wskazuje na element przeglądarki Tag, który został kliknięty prawym przyciskiem myszy. Przetestuj go pod kątem ważności za pomocą index.valid() i uzyskaj bazowy obiekt TagTreeItem za pomocą index.data(Qt.ItemDataRole.UserRole). Wszelkie obiekty akcji uzyskane tą metodą zostaną dodane do menu kontekstowego.

shutting_down()[źródło]

Wywoływane raz na wtyczkę, gdy główny GUI jest w trakcie zamykania. Zwolnij wszystkie używane zasoby, ale staraj się nie blokować wyłączania przez dłuższy czas.

class calibre.customize.InterfaceActionBase(*args, **kwargs)[źródło]

Klasy bazowe: Plugin

supported_platforms = ['windows', 'osx', 'linux']

Lista platform, na których pracuje ta wtyczka. Na przykład:

author = 'Kovid Goyal'

Autor wtyczki

type = 'Akcja interfejsu użytkownika'

Typ wtyczki. Używane w celi kategoryzacji wtyczek w GUI.

can_be_disabled = False

Jeśli False, użytkownik nie będzie mógł wyłączyć wtyczki. Używać z rozwagą.

load_actual_plugin(gui)[źródło]

Ta metoda musi zwracać rzeczywisty obiekt wtyczki akcji interfejsu.

Preferencje wtyczki

class calibre.customize.PreferencesPlugin(plugin_path)[źródło]

Klasy bazowe: Plugin

Wtyczka reprezentująca widżet wyświetlany w oknie dialogowym Preferencje.

Ta wtyczka ma tylko jedną ważną metodę create_widget(). Różne pola wtyczki kontrolują sposób jej kategoryzacji w interfejsie użytkownika.

supported_platforms = ['windows', 'osx', 'linux']

Lista platform, na których pracuje ta wtyczka. Na przykład:

author = 'Kovid Goyal'

Autor wtyczki

type = 'Ustawienia'

Typ wtyczki. Używane w celi kategoryzacji wtyczek w GUI.

can_be_disabled = False

Jeśli False, użytkownik nie będzie mógł wyłączyć wtyczki. Używać z rozwagą.

config_widget = None

Importuj ścieżkę do modułu, który zawiera klasę o nazwie ConfigWidget, która implementuje ConfigWidgetInterface. Używany przez create_widget().

category_order = 100

Gdzie na liście kategorii powinien znajdować się category tej wtyczki.

name_order = 100

Gdzie na liście nazw w kategorii powinien znajdować się gui_name tej wtyczki

category = None

Kategoria, w której powinna należeć ta wtyczka

gui_category = None

Nazwa kategorii wyświetlana użytkownikowi dla tej wtyczki

gui_name = None

Nazwa wyświetlana użytkownikowi dla tej wtyczki

icon = None

Ikona tej wtyczki powinna być ścieżką bezwzględną

description = None

Opis używany w podpowiedziach i tym podobnych

create_widget(parent=None)[źródło]

Utwórz i zwróć rzeczywisty widżet Qt używany do ustawiania tej grupy preferencji. Widget musi implementować calibre.gui2.preferences.ConfigWidgetInterface.

Domyślna implementacja używa config_widget do utworzenia instancji widżetu.

class calibre.gui2.preferences.ConfigWidgetInterface[źródło]

Ta klasa definiuje interfejs, który muszą zaimplementować wszystkie widżety wyświetlane w oknie dialogowym Preferencje. Zobacz ConfigWidgetBase, aby zapoznać się z klasą bazową, która implementuje ten interfejs i definiuje również różne wygodne metody.

changed_signal = None

Ten sygnał musi być emitowany za każdym razem, gdy użytkownik zmieni wartość w tym widżecie

supports_restoring_to_defaults = True

Ustaw na True, jeśli zaimplementowano metodę restore_to_defaults().

restore_defaults_desc = 'Przywróć domyślne wartości. Musisz kliknąć Zastosuj, aby zapisać domyślne ustawienia.'

Etykietka przycisku „Przywróć domyślne”

restart_critical = False

Jeśli True, okno dialogowe Preferencje nie pozwoli użytkownikowi na ustawienie dalszych preferencji. Działa tylko wtedy, gdy commit() zwraca True.

genesis(gui)[źródło]

Wywoływany raz przed wyświetleniem widżetu, powinien wykonać wszelkie niezbędne ustawienia.

Parametry:

gui – Graficzny interfejs użytkownika głównego calibre

initialize()[źródło]

Powinien ustawić wszystkie wartości konfiguracyjne na ich początkowe wartości (wartości przechowywane w plikach konfiguracyjnych). Oświadczenie „zwrotu” jest opcjonalne. Zwróć False, jeśli okno dialogowe nie ma być pokazywane.

restore_defaults()[źródło]

Powinna ustawić wszystkie wartości konfiguracyjne na wartości domyślne.

commit()[źródło]

Zapisz wszystkie zmienione ustawienia. Zwróć True, jeśli zmiany wymagają ponownego uruchomienia, w przeciwnym razie False. Podnieś wyjątek AbortCommit, aby wskazać, że wystąpił błąd. Jesteś odpowiedzialny za przekazanie opinii użytkowników o tym, na czym polega błąd i jak go poprawić.

refresh_gui(gui)[źródło]

Wywoływana raz po zatwierdzeniu tego widżetu. Odpowiedzialny za spowodowanie ponownego odczytania przez interfejs użytkownika wszelkich zmienionych ustawień. Zauważ, że domyślnie GUI i tak ponownie inicjuje różne elementy, więc większość widżetów nie będzie musiała używać tej metody.

initial_tab_changed()[źródło]

Called if the initially displayed tab is changed before the widget is shown, but after it is initialized.

class calibre.gui2.preferences.ConfigWidgetBase(parent=None)[źródło]

Klasa bazowa zawierająca kod umożliwiający łatwe dodawanie standardowych widżetów konfiguracyjnych, takich jak pola wyboru, pola kombi, pola tekstowe i tak dalej. Zobacz metodę register().

Ta klasa automatycznie obsługuje powiadomienia o zmianach, przywracanie ustawień domyślnych, translację między obiektami gui i obiektami konfiguracyjnymi itp. dla zarejestrowanych ustawień.

Jeśli twój widżet konfiguracji dziedziczy z tej klasy, ale zawiera ustawienia, które nie są zarejestrowane, powinieneś nadpisać metody ConfigWidgetInterface i wywołać metody klasy bazowej wewnątrz nadpisań.

changed_signal

Ten sygnał musi być emitowany za każdym razem, gdy użytkownik zmieni wartość w tym widżecie

supports_restoring_to_defaults = True

Ustaw na True, jeśli zaimplementowano metodę restore_to_defaults().

restart_critical = False

Jeśli True, okno dialogowe Preferencje nie pozwoli użytkownikowi na ustawienie dalszych preferencji. Działa tylko wtedy, gdy commit() zwraca True.

register(name, config_obj, gui_name=None, choices=None, restart_required=False, empty_string_is_None=True, setting=<class 'calibre.gui2.preferences.Setting'>)[źródło]

Zarejestruj ustawienie.

Parametry:
  • name – Nazwa ustawienia

  • config – Obiekt konfiguracyjny, który odczytuje/zapisuje ustawienie

  • gui_name – Nazwa obiektu GUI, który przedstawia interfejs do zmiany ustawienia. Domyślnie przyjmuje się, że jest to 'opt_' + name.

  • choices – Jeśli to ustawienie jest ustawieniem opartym na wielokrotnym wyborze (pole rozwijane), lista opcji do wyboru. Lista jest listą dwóch elementów krotek postaci: [(gui name, value), ...]

  • setting – Klasa odpowiedzialna za zarządzanie tym ustawieniem. Klasa domyślna obsługuje prawie wszystkie przypadki, więc ten parametr jest rzadko używany.

initialize()[źródło]

Powinien ustawić wszystkie wartości konfiguracyjne na ich początkowe wartości (wartości przechowywane w plikach konfiguracyjnych). Oświadczenie „zwrotu” jest opcjonalne. Zwróć False, jeśli okno dialogowe nie ma być pokazywane.

commit(*args)[źródło]

Zapisz wszystkie zmienione ustawienia. Zwróć True, jeśli zmiany wymagają ponownego uruchomienia, w przeciwnym razie False. Podnieś wyjątek AbortCommit, aby wskazać, że wystąpił błąd. Jesteś odpowiedzialny za przekazanie opinii użytkowników o tym, na czym polega błąd i jak go poprawić.

restore_defaults(*args)[źródło]

Powinna ustawić wszystkie wartości konfiguracyjne na wartości domyślne.