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 zawierata wtyczka lub None jeśli jest to wtyczka wbudowana
self.site_customization
: Przechowuje wprowadzony ciąg dostosowywaniaprzez użytkownika
Metody, które powinny być nadpisane w podklasach:
Przydatne metody:
__enter__()
- 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.
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_postconvert = False¶
If True, this plugin is run after a book is converted. In this case the postconvert method of the plugin is called.
- on_postdelete = False¶
If True, this plugin is run after a book file is deleted from the database. In this case the postdelete method of the plugin is called.
- 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.
- postconvert(book_id, book_format, db)[źródło]¶
Called post conversion, i.e., after the conversion output book file has been added to the database. Note that it is run after a conversion only, not after a book is added. It is useful for modifying the book record based on the contents of the newly added file.
- Parametry:
book_id – Identyfikator bazy dodanej książki.
book_format – Typ pliku dodanej książki.
db – Biblioteczna baza danych.
- postdelete(book_id, book_format, db)[źródło]¶
Called post deletion, i.e., after the book file has been deleted from the database. Note that it is not run when a book record is deleted, only when one or more formats from the book are deleted. It is useful for modifying the book record based on the format of the deleted file.
- 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 = (7, 21, 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 = (7, 21, 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]¶
Override this method if you would like to return multiple URLs for this book. Return a list of 3-tuples. By default this method simply calls
get_book_url()
.
- get_cached_cover_url(identifiers)[źródło]¶
Return cached cover URL for the book identified by the identifiers dictionary or None if no such URL exists.
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.accelerators – 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.
- 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]¶
Can be used to make changes to the CSS during the CSS flattening process.
- 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).
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()
iignore_connected_device()
orazget_user_blacklisted_devices()
iset_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:
Pamięć główna
Karta pamięci A
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:
Pamięć główna
Karta A
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 dlaupload_books()
.booklists – Krotka zawierająca wynik wywołań do (
books(oncard=None)()
,books(oncard='carda')()
, :meth`books(oncard=»cardb»)`).
- 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łaniaopen()
.
- 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
tytuł
autorzy
rozmiar (rozmiar pliku książki)
data i godzina (czas UTC)
ścieżka (ścieżka na urządzeniu do książki)
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
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:
Pamięć główna
Karta pamięci A
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:
Pamięć główna
Karta A
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
- class calibre.devices.usbms.driver.USBMS(plugin_path)[źródło]¶
-
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 dlaupload_books()
.booklists – Krotka zawierająca wynik wywołań do (
books(oncard=None)()
,books(oncard='carda')()
, :meth`books(oncard=»cardb»)`).
- 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»)`).
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()
itag_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 jakoself.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_shortcut_name = None¶
If not None, used for the name displayed to the user when customizing the keyboard shortcuts for the above action spec instead of action_spec[0]
Jeśli True, menu jest automatycznie tworzone i dodawane do self.qaction
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.
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 jakoself.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.
- 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ą.
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 = 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.
- 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.
- 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_obj – 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ć.