API dokumentacija za dodatke

Definiše razne apstraktne osnovne klase koje se mogu nasleđivati za kreiranje moćnih dodataka. Korisne klase su:

Plugin

class calibre.customize.Plugin(plugin_path)[изворни код]

Calibre dodatak. Korisni članovi uključuju:

  • self.installation_type: Čuva način na koji je dodatak instaliran.

  • self.plugin_path: Čuva putanju do ZIP datoteke koja sadrži

    ovaj dodatak ili None ako je ugrađeni dodatak

  • self.site_customization: Čuva string za prilagođavanje koji je uneo

    korisnik.

Metode koje bi trebalo da budu pregažene u potklasama:

Korisne metode:

supported_platforms = []

Lista platformi na kojima ovaj dodatak radi. Na primer: ['windows', 'osx', 'linux']

name = 'Trivial Plugin'

Ime ovog dodatka. Morate ga postaviti na nešto drugo osim Trivial Plugin da bi radio.

version = (1, 0, 0)

Verzija ovog dodatka kao 3-torka (glavna, sporedna, revizija)

description = 'Ne radi apsolutno ništa'

Kratak string koji opisuje šta ovaj dodatak radi

author = 'Nepoznato'

Autor ovog dodatka

priority = 1

Kada postoji više od jednog dodatka za tip datoteke, dodaci se pokreću po opadajućem redosledu prioriteta. Dodaci sa višim prioritetom će biti pokrenuti prvi. Najviši mogući prioritet je sys.maxsize. Podrazumevani prioritet je 1.

minimum_calibre_version = (0, 4, 118)

Najranija verzija calibre-a koju ovaj dodatak zahteva

installation_type = None

Način na koji je ovaj dodatak instaliran

can_be_disabled = True

Ako je False, korisnik neće moći da onemogući ovaj dodatak. Koristite pažljivo.

type = 'baza'

Tip ovog dodatka. Koristi se za kategorizaciju dodataka u GUI-ju

initialize()[изворни код]

Poziva se jednom kada se calibre dodaci inicijalizuju. Dodaci se ponovo inicijalizuju svaki put kada se doda novi dodatak. Takođe imajte na umu da ako se dodatak pokreće u radnom procesu, kao što je dodavanje knjiga, onda će dodatak biti inicijalizovan za svaki novi radni proces.

Ovde izvršite bilo kakvu inicijalizaciju specifičnu za dodatak, kao što je izdvajanje resursa iz ZIP datoteke dodatka. Putanja do ZIP datoteke je dostupna kao self.plugin_path.

Imajte na umu da self.site_customization nije dostupno u ovom trenutku.

config_widget()[изворни код]

Implementirajte ovaj metod i save_settings() u vašem dodatku da biste koristili prilagođeni dijalog za konfiguraciju, umesto da se oslanjate na jednostavno podrazumevano prilagođavanje zasnovano na stringovima.

Ovaj metod, ako je implementiran, mora vratiti QWidget. Vidžet može imati opcioni metod validate() koji ne uzima argumente i poziva se odmah nakon što korisnik klikne na OK. Promene se primenjuju ako i samo ako metod vrati True.

Ako iz nekog razloga ne možete da izvršite konfiguraciju u ovom trenutku, vratite torku od dva stringa (message, details), oni će biti prikazani kao dijalog upozorenja korisniku i proces će biti prekinut.

save_settings(config_widget)[изворни код]

Sačuvajte podešavanja koja je korisnik naveo pomoću config_widget.

Параметри:

config_widget -- Vidžet koji vraća config_widget().

do_user_config(parent=None)[изворни код]

Ovaj metod prikazuje dijalog za konfiguraciju za ovaj dodatak. Vraća True ako korisnik klikne na OK, False u suprotnom. Promene se automatski primenjuju.

load_resources(names)[изворни код]

Ako ovaj dodatak dolazi u ZIP datoteci (dodatak koji je dodao korisnik), ovaj metod će vam omogućiti da učitate resurse iz ZIP datoteke.

Na primer za učitavanje slike:

pixmap = QPixmap()
pixmap.loadFromData(self.load_resources(['images/icon.png'])['images/icon.png'])
icon = QIcon(pixmap)
Параметри:

names -- Lista putanja do resursa u ZIP datoteci koristeći / kao separator

Резултат:

Rečnik u obliku {name: file_contents}. Sva imena koja nisu pronađena u ZIP datoteci neće biti prisutna u rečniku.

customization_help(gui=False)[изворни код]

Vraća string koji daje pomoć o tome kako prilagoditi ovaj dodatak. Podrazumevano podiže NotImplementedError, što ukazuje da dodatak ne zahteva prilagođavanje.

Ako ponovo implementirate ovaj metod u vašoj potklasi, od korisnika će biti zatraženo da unese string kao prilagođavanje za ovaj dodatak. String za prilagođavanje će biti dostupan kao self.site_customization.

Prilagođavanje sajta može biti bilo šta, na primer, putanja do potrebne binarne datoteke na računaru korisnika.

Параметри:

gui -- Ako je True vraća HTML pomoć, inače vraća pomoć u običnom tekstu.

temporary_file(suffix)[изворни код]

Vraća objekat sličan datoteci koji je privremena datoteka na sistemu datoteka. Ova datoteka će ostati dostupna čak i nakon zatvaranja i biće uklonjena tek pri gašenju interpretera. Koristite člana name vraćenog objekta da pristupite punoj putanji do kreirane privremene datoteke.

Параметри:

suffix -- Sufiks koji će privremena datoteka imati.

cli_main(args)[изворни код]

Ovaj metod je glavna ulazna tačka za interfejs komandne linije vašeg dodatka. Poziva se kada korisnik uradi: calibre-debug -r "Ime dodatka". Svi prosleđeni argumenti su prisutni u promenljivoj args.

FileTypePlugin

class calibre.customize.FileTypePlugin(plugin_path)[изворни код]

Bases: Plugin

Dodatak koji je povezan sa određenim skupom tipova datoteka.

file_types = {}

Skup tipova datoteka za koje bi ovaj dodatak trebalo da se pokrene. Koristite '*' za sve tipove datoteka. Na primer: {'lit', 'mobi', 'prc'}

on_import = False

Ako je True, ovaj dodatak se pokreće kada se knjige dodaju u bazu podataka

on_postimport = False

Ako je True, ovaj dodatak se pokreće nakon što se knjige dodaju u bazu podataka. U ovom slučaju se pozivaju metode postimport i postadd dodatka.

on_postconvert = False

Ako je True, ovaj dodatak se pokreće nakon što se knjiga konvertuje. U ovom slučaju se poziva metoda postconvert dodatka.

on_postdelete = False

Ako je True, ovaj dodatak se pokreće nakon što se datoteka knjige izbriše iz baze podataka. U ovom slučaju se poziva metoda postdelete dodatka.

on_preprocess = False

Ako je True, ovaj dodatak se pokreće neposredno pre konverzije

on_postprocess = False

Ako je True, ovaj dodatak se pokreće nakon konverzije na konačnoj datoteci koju je proizveo izlazni dodatak za konverziju.

type = 'Tip datoteke'

Tip ovog dodatka. Koristi se za kategorizaciju dodataka u GUI-ju

run(path_to_ebook)[изворни код]

Pokrenite dodatak. Mora biti implementirano u potklasama. Trebalo bi da izvrši sve potrebne modifikacije na e-knjizi i vrati apsolutnu putanju do modifikovane e-knjige. Ako modifikacije nisu potrebne, trebalo bi da vrati putanju do originalne e-knjige. Ako dođe do greške, trebalo bi da podigne Exception. Podrazumevana implementacija jednostavno vraća putanju do originalne e-knjige. Imajte na umu da je putanja do originalne datoteke (pre nego što se pokrenu bilo koji dodaci za tip datoteke) dostupna kao self.original_path_to_file.

Modifikovana datoteka e-knjige bi trebalo da se kreira pomoću metode temporary_file().

Параметри:

path_to_ebook -- Apsolutna putanja do e-knjige.

Резултат:

Apsolutna putanja do modifikovane e-knjige.

postimport(book_id, book_format, db)[изворни код]

Poziva se nakon uvoza, tj. nakon što je datoteka knjige dodata u bazu podataka. Imajte na umu da se ovo razlikuje od postadd() koja se poziva kada se zapis knjige kreira po prvi put. Ova metoda se poziva kad god se nova datoteka doda u zapis knjige. Korisna je za modifikovanje zapisa knjige na osnovu sadržaja novododate datoteke.

Параметри:
  • book_id -- ID baze podataka dodate knjige.

  • book_format -- Tip datoteke knjige koja je dodata.

  • db -- Baza podataka biblioteke.

postconvert(book_id, book_format, db)[изворни код]

Poziva se nakon konverzije, tj. nakon što je izlazna datoteka knjige iz konverzije dodata u bazu podataka. Imajte na umu da se pokreće samo nakon konverzije, a ne nakon dodavanja knjige. Korisno je za izmenu zapisa knjige na osnovu sadržaja novo dodate datoteke.

Параметри:
  • book_id -- ID baze podataka dodate knjige.

  • book_format -- Tip datoteke knjige koja je dodata.

  • db -- Baza podataka biblioteke.

postdelete(book_id, book_format, db)[изворни код]

Poziva se nakon brisanja, tj. nakon što je datoteka knjige izbrisana iz baze podataka. Imajte na umu da se ne pokreće kada se izbriše zapis knjige, već samo kada se izbriše jedan ili više formata iz knjige. Korisno je za izmenu zapisa knjige na osnovu formata izbrisane datoteke.

Параметри:
  • book_id -- ID baze podataka dodate knjige.

  • book_format -- Tip datoteke knjige koja je dodata.

  • db -- Baza podataka biblioteke.

postadd(book_id, fmt_map, db)[изворни код]

Poziva se nakon dodavanja, tj. nakon što je knjiga dodata u bazu podataka. Imajte na umu da se ovo razlikuje od postimport(), koje se poziva nakon što je jedna datoteka knjige dodata knjizi. postadd() se poziva samo kada je po prvi put kreiran ceo zapis knjige sa potencijalno više od jedne datoteke knjige. Ovo je korisno ako želite da izmenite zapis knjige u bazi podataka kada se knjiga prvi put doda u calibre.

Параметри:
  • book_id -- ID baze podataka dodate knjige.

  • fmt_map -- Mapa formata datoteke na putanju sa koje je format datoteke dodat. Imajte na umu da ovo može ili ne mora ukazivati na stvarnu postojeću datoteku, jer se ponekad datoteke dodaju kao tokovi. U tom slučaju to može biti lažna vrednost ili nepostojeća putanja.

  • db -- Baza podataka biblioteke

Dodaci za metapodatke

class calibre.customize.MetadataReaderPlugin(*args, **kwargs)[изворни код]

Bases: Plugin

Dodatak koji implementira čitanje metapodataka iz skupa tipova datoteka.

file_types = {}

Skup tipova datoteka za koje bi ovaj dodatak trebalo da se pokrene. Na primer: set(['lit', 'mobi', 'prc'])

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

Lista platformi na kojima ovaj dodatak radi. Na primer: ['windows', 'osx', 'linux']

version = (9, 16, 0)

Verzija ovog dodatka kao 3-torka (glavna, sporedna, revizija)

author = 'Kovid Goyal'

Autor ovog dodatka

type = 'Metadata čitač'

Tip ovog dodatka. Koristi se za kategorizaciju dodataka u GUI-ju

get_metadata(stream, type)[изворни код]

Vraća metapodatke za datoteku predstavljenu tokom (objekat sličan datoteci koji podržava čitanje). Podiže izuzetak kada dođe do greške sa ulaznim podacima.

Параметри:

type -- Tip datoteke. Garantovano je jedan od unosa u file_types.

Резултат:

calibre.ebooks.metadata.book.Metadata objekat

class calibre.customize.MetadataWriterPlugin(*args, **kwargs)[изворни код]

Bases: Plugin

Dodatak koji implementira čitanje metapodataka iz skupa tipova datoteka.

file_types = {}

Skup tipova datoteka za koje bi ovaj dodatak trebalo da se pokrene. Na primer: set(['lit', 'mobi', 'prc'])

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

Lista platformi na kojima ovaj dodatak radi. Na primer: ['windows', 'osx', 'linux']

version = (9, 16, 0)

Verzija ovog dodatka kao 3-torka (glavna, sporedna, revizija)

author = 'Kovid Goyal'

Autor ovog dodatka

type = 'Metadata pisač'

Tip ovog dodatka. Koristi se za kategorizaciju dodataka u GUI-ju

set_metadata(stream, mi, type)[изворни код]

Postavite metapodatke za datoteku predstavljenu tokom (objekat sličan datoteci koji podržava čitanje). Podiže izuzetak kada postoji greška sa ulaznim podacima.

Параметри:
  • type -- Tip datoteke. Garantovano je jedan od unosa u file_types.

  • mi -- calibre.ebooks.metadata.book.Metadata objekat

Dodaci za kataloge

class calibre.customize.CatalogPlugin(plugin_path)[изворни код]

Bases: Plugin

Dodatak koji implementira generator kataloga.

file_types = {}

Tip izlazne datoteke za koji ovaj dodatak treba da se pokrene. Na primer: 'epub' ili 'xml'

type = 'Generator kataloga'

Tip ovog dodatka. Koristi se za kategorizaciju dodataka u GUI-ju

cli_options = []

Opcije CLI parsera specifične za ovaj dodatak, deklarisane kao 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()[изворни код]

Ako dodatak nije ugrađen, kopiraj .ui i .py datoteke dodatka iz ZIP datoteke u $TMPDIR. Kartica će biti dinamički generisana i dodata u dijalog Opcije kataloga u calibre.gui2.dialogs.catalog.py:Catalog

run(path_to_output, opts, db, ids, notification=None)[изворни код]

Pokrenite dodatak. Mora biti implementirano u potklasama. Trebalo bi da generiše katalog u formatu navedenom u file_types, vraćajući apsolutnu putanju do generisane datoteke kataloga. Ako se naiđe na grešku, trebalo bi da podigne Exception.

Generisana datoteka kataloga treba da bude kreirana pomoću metode temporary_file().

Параметри:
  • path_to_output -- Apsolutna putanja do generisane datoteke kataloga.

  • opts -- Rečnik argumenata ključnih reči

  • db -- LibraryDatabase2 objekat

Dodaci za preuzimanje metapodataka

class calibre.ebooks.metadata.sources.base.Source(*args, **kwargs)[изворни код]

Bases: Plugin

type = 'Izvor metapodataka'

Tip ovog dodatka. Koristi se za kategorizaciju dodataka u GUI-ju

author = 'Kovid Goyal'

Autor ovog dodatka

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

Lista platformi na kojima ovaj dodatak radi. Na primer: ['windows', 'osx', 'linux']

capabilities = frozenset({})

Skup mogućnosti koje podržava ovaj dodatak. Korisne mogućnosti su: 'identify', 'cover'

touched_fields = frozenset({})

Spisak polja metapodataka koja potencijalno mogu biti preuzeta od strane ovog dodatka tokom faze identifikacije

has_html_comments = False

Postavite ovo na True ako vaš dodatak vraća HTML formatirane komentare

supports_gzip_transfer_encoding = False

Postavljanje ovoga na True znači da će objekat pregledača pokazati da podržava gzip kodiranje prenosa. Ovo može ubrzati preuzimanja, ali prvo proverite da li izvor zaista pravilno podržava gzip kodiranje prenosa

ignore_ssl_errors = False

Postavite ovo na True da biste ignorisali greške HTTPS sertifikata prilikom povezivanja sa ovim izvorom.

cached_cover_url_is_reliable = True

Keširani URL-ovi korica ponekad mogu biti nepouzdani (tj. preuzimanje može propasti ili vraćena slika može biti lažna). Ako je to često slučaj sa ovim izvorom, postavite na False

options = ()

Spisak Option objekata. Oni će se koristiti za automatsko konstruisanje vidžeta za konfiguraciju ovog dodatka

config_help_message = None

Niska koja se prikazuje na vrhu vidžeta za konfiguraciju ovog dodatka

can_get_multiple_covers = False

Ako je True, ovaj izvor može vratiti više korica za dati upit

auto_trim_covers = False

Ako je postavljeno na True, korice koje preuzme ovaj dodatak se automatski opsecaju.

prefer_results_with_isbn = True

Ako je postavljeno na True, a ovaj izvor vraća više rezultata za upit, od kojih neki imaju ISBN-ove a neki nemaju, rezultati bez ISBN-ova će biti ignorisani.

is_configured()[изворни код]

Vratite False ako vaš dodatak mora biti konfigurisan pre nego što se može koristiti. Na primer, možda mu je potrebno korisničko ime/lozinka/API ključ.

customization_help(gui=False)[изворни код]

Vraća string koji daje pomoć o tome kako prilagoditi ovaj dodatak. Podrazumevano podiže NotImplementedError, što ukazuje da dodatak ne zahteva prilagođavanje.

Ako ponovo implementirate ovaj metod u vašoj potklasi, od korisnika će biti zatraženo da unese string kao prilagođavanje za ovaj dodatak. String za prilagođavanje će biti dostupan kao self.site_customization.

Prilagođavanje sajta može biti bilo šta, na primer, putanja do potrebne binarne datoteke na računaru korisnika.

Параметри:

gui -- Ako je True vraća HTML pomoć, inače vraća pomoć u običnom tekstu.

config_widget()[изворни код]

Implementirajte ovaj metod i save_settings() u vašem dodatku da biste koristili prilagođeni dijalog za konfiguraciju, umesto da se oslanjate na jednostavno podrazumevano prilagođavanje zasnovano na stringovima.

Ovaj metod, ako je implementiran, mora vratiti QWidget. Vidžet može imati opcioni metod validate() koji ne uzima argumente i poziva se odmah nakon što korisnik klikne na OK. Promene se primenjuju ako i samo ako metod vrati True.

Ako iz nekog razloga ne možete da izvršite konfiguraciju u ovom trenutku, vratite torku od dva stringa (message, details), oni će biti prikazani kao dijalog upozorenja korisniku i proces će biti prekinut.

save_settings(config_widget)[изворни код]

Sačuvajte podešavanja koja je korisnik naveo pomoću config_widget.

Параметри:

config_widget -- Vidžet koji vraća config_widget().

get_author_tokens(authors, only_first_author=True)[изворни код]

Uzima listu autora i vraća listu tokena korisnih za AND upit za pretragu. Ova funkcija pokušava da vrati tokene u redosledu ime srednja imena prezime, pretpostavljajući da ako se u imenu autora nalazi zarez, ime je u obliku prezime, ostala imena.

get_title_tokens(title, strip_joiners=True, strip_subtitle=False)[изворни код]

Uzima naslov i vraća listu tokena korisnih za AND upit za pretragu. Isključuje veznike (opciono) i interpunkciju.

split_jobs(jobs, num)[изворни код]

Podelite listu poslova u najviše num grupa, što je ravnomernije moguće

test_fields(mi)[изворни код]

Vratite prvo polje iz self.touched_fields koje je null na mi objektu

clean_downloaded_metadata(mi)[изворни код]

Pozovite ovaj metod u identify metodu vašeg dodatka da biste normalizovali metapodatke pre nego što stavite Metadata objekat u result_queue. Naravno, možete koristiti prilagođeni algoritam koji odgovara vašem izvoru metapodataka.

get_book_url(identifiers)[изворни код]

Vratite 3-torku ili None. 3-torka je u obliku: (identifier_type, identifier_value, URL). URL je URL za knjigu identifikovanu pomoću identifiers na ovom izvoru. identifier_type, identifier_value određuju identifikator koji odgovara URL-u. Ovaj URL mora biti preglediv za čoveka koji koristi pregledač. Namenjen je da pruži vezu na koju korisnik može da klikne kako bi lako posetio stranicu knjige na ovom izvoru. Ako URL nije pronađen, vratite None. Ovaj metod mora biti brz i dosledan, pa ga implementirajte samo ako je moguće konstruisati URL iz poznate šeme datih identifikatora.

get_book_url_name(idtype, idval, url)[изворни код]

Vratite čitljivo ime iz povratne vrednosti get_book_url().

get_book_urls(identifiers)[изворни код]

Zamenite ovaj metod ako želite da vratite više URL-ova za ovu knjigu. Vratite listu 3-torki. Podrazumevano ovaj metod jednostavno poziva get_book_url().

get_cached_cover_url(identifiers)[изворни код]

Vratite keširani URL korica za knjigu identifikovanu pomoću rečnika identifiers ili None ako takav URL ne postoji.

Imajte na umu da ovaj metod mora vraćati samo validirane URL-ove, tj. ne URL-ove koji bi mogli rezultirati generičkom slikom korica ili greškom da nije pronađeno.

id_from_url(url)[изворни код]

Parsiraj URL i vrati torku u obliku: (identifier_type, identifier_value). Ako se URL ne poklapa sa obrascem za izvor metapodataka, vrati None.

identify_results_keygen(title=None, authors=None, identifiers={})[изворни код]

Vratite funkciju koja se koristi za generisanje ključa koji može sortirati Metadata objekte po njihovoj relevantnosti s obzirom na upit za pretragu (naslov, autori, identifikatori).

Ovi ključevi se koriste za sortiranje rezultata poziva na identify().

Za detalje o podrazumevanom algoritmu pogledajte InternalMetadataCompareKeyGen. Ponovo implementirajte ovu funkciju u vašem dodatku ako podrazumevani algoritam nije odgovarajući.

identify(log, result_queue, abort, title=None, authors=None, identifiers={}, timeout=30)[изворни код]

Identifikujte knjigu po njenom Naslovu/Autoru/ISBN-u/itd.

Ako su identifikator(i) navedeni i nije pronađeno poklapanje, a ovaj izvor metapodataka ne čuva sve povezane identifikatore (na primer, sve ISBN-ove knjige), ovaj metod bi trebalo da pokuša ponovo samo sa naslovom i autorom (pod pretpostavkom da su navedeni).

Ako ovaj izvor metapodataka takođe obezbeđuje korice, URL do korica bi trebalo da bude keširan tako da naknadni poziv API-ju za dobijanje korica sa istim ISBN-om/specijalnim identifikatorom ne mora ponovo da dobija URL korica. Koristite API za keširanje za ovo.

Svaki Metadata objekat stavljen u result_queue od strane ovog metoda mora imati atribut source_relevance koji je ceo broj i ukazuje na redosled kojim su rezultati vraćeni od strane izvora metapodataka za ovaj upit. Ovaj ceo broj će se koristiti od strane compare_identify_results(). Ako redosled nije važan, postavite ga na nulu za svaki rezultat.

Uverite se da su sve informacije o mapiranju korica/ISBN-a keširane pre nego što se Metadata objekat stavi u result_queue.

Параметри:
  • log -- Log objekat, koristite ga za ispis informacija o otklanjanju grešaka/grešaka

  • result_queue -- Red rezultata, rezultati bi trebalo da budu stavljeni u njega. Svaki rezultat je Metadata objekat

  • abort -- Ako abort.is_set() vrati True, prekinite dalju obradu i vratite se što je pre moguće

  • title -- Naslov knjige, može biti None

  • authors -- Lista autora knjige, može biti None

  • identifiers -- Rečnik drugih identifikatora, najčešće {'isbn':'1234...'}

  • timeout -- Vremensko ograničenje u sekundama, nijedan mrežni zahtev ne bi trebalo da traje duže od timeout.

Резултат:

None ako nije bilo grešaka, inače unicode reprezentacija greške prikladna za prikazivanje korisniku

download_cover(log, result_queue, abort, title=None, authors=None, identifiers={}, timeout=30, get_best_cover=False)[изворни код]

Preuzmite korice i stavite ih u result_queue. Svi parametri imaju isto značenje kao za identify(). Stavite (self, cover_data) u result_queue.

Ovaj metod bi trebalo da koristi keširane URL-ove korica za efikasnost kad god je to moguće. Kada keširani podaci nisu prisutni, većina dodataka jednostavno poziva identify i koristi njegove rezultate.

Ako je parametar get_best_cover True i ovaj dodatak može da dobije više korica, trebalo bi da dobije samo onu "najbolju".

class calibre.ebooks.metadata.sources.base.InternalMetadataCompareKeyGen(mi, source_plugin, title, authors, identifiers)[изворни код]

Generišite ključ za sortiranje za poređenje relevantnosti Metadata objekata, s obzirom na upit za pretragu. Ovo se koristi samo za poređenje rezultata iz istog izvora metapodataka, a ne između različitih izvora.

Ključ za sortiranje osigurava da je rastući redosled sortiranja sortiranje po opadajućoj relevantnosti.

Algoritam je:

  • Preferiraj rezultate koji imaju barem jedan identifikator isti kao za upit

  • Preferiraj rezultate sa keširanim URL-om naslovnice

  • Preferiraj rezultate sa svim dostupnim poljima popunjenim

  • Preferiraj rezultate sa istim jezikom kao trenutni jezik korisničkog interfejsa

  • Preferiraj rezultate koji su tačno poklapanje naslova sa upitom

  • Preferiraj rezultate sa dužim komentarima (više od 10% dužim)

  • Koristi relevantnost rezultata kako je prijavljena od strane pretrage izvora metapodataka

    mašina

Dodaci za konverziju

class calibre.customize.conversion.InputFormatPlugin(*args)[изворни код]

Bases: Plugin

InputFormatPlugins su odgovorni za konverziju dokumenta u HTML+OPF+CSS+itd. Rezultati konverzije moraju biti kodirani u UTF-8. Glavna akcija se dešava u convert().

type = 'Ulaz za konverziju'

Tip ovog dodatka. Koristi se za kategorizaciju dodataka u GUI-ju

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

Lista platformi na kojima ovaj dodatak radi. Na primer: ['windows', 'osx', 'linux']

file_types = {}

Skup tipova datoteka za koje bi ovaj dodatak trebalo da se pokrene Na primer: set(['azw', 'mobi', 'prc'])

is_image_collection = False

Ako je True, ovaj ulazni dodatak generiše kolekciju slika, jednu po HTML datoteci. Ovo se može postaviti dinamički, u metodi convert ako ulazne datoteke mogu biti i kolekcije slika i kolekcije koje nisu slike. Ako ovo postavite na True, morate implementirati metodu get_images() koja vraća listu slika.

core_usage = 1

Broj CPU jezgara koje koristi ovaj dodatak. Vrednost -1 znači da koristi sva dostupna jezgra

for_viewer = False

Ako je postavljeno na True, ulazni dodatak će izvršiti specijalnu obradu kako bi njegov izlaz bio pogodan za pregled

output_encoding = 'utf-8'

Kodiranje u kojem ovaj ulazni dodatak kreira fajlove. Vrednost None znači da je kodiranje nedefinisano i mora se pojedinačno detektovati

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

Opcije koje dele svi dodaci za ulazni format. Ne preklapajte u potklasama. Koristite options umesto toga. Svaka opcija mora biti instanca OptionRecommendation.

options = {}

Opcije za prilagođavanje ponašanja ovog dodatka. Svaka opcija mora biti instanca OptionRecommendation.

recommendations = {}

Skup 3-torki u obliku (option_name, recommended_value, recommendation_level)

get_images()[изворни код]

Vraća listu apsolutnih putanja do slika, ako ovaj ulazni dodatak predstavlja kolekciju slika. Lista slika je u istom redosledu kao i kičma i TOC.

convert(stream, options, file_ext, log, accelerators)[изворни код]

Ova metoda mora biti implementirana u potklasama. Mora vratiti putanju do kreiranog OPF fajla ili instancu OEBBook. Sav izlaz treba da bude sadržan u trenutnom folderu. Ako ovaj dodatak kreira fajlove van trenutnog foldera, oni moraju biti obrisani/označeni za brisanje pre nego što se ova metoda završi.

Параметри:
  • stream -- Objekat nalik fajlu koji sadrži ulazni fajl.

  • options -- Opcije za prilagođavanje procesa konverzije. Garantovano ima atribute koji odgovaraju svim opcijama koje je deklarisao ovaj dodatak. Pored toga, imaće verbose atribut koji uzima celobrojne vrednosti od nule naviše. Veći brojevi znače više detalja. Još jedan koristan atribut je input_profile koji je instanca calibre.customize.profiles.InputProfile.

  • file_ext -- Ekstenzija (bez .) ulaznog fajla. Garantovano je da je jedan od file_types koje podržava ovaj dodatak.

  • log -- Objekat calibre.utils.logging.Log. Sav izlaz treba da koristi ovaj objekat.

  • accelerators -- Rečnik raznih informacija koje ulazni dodatak može lako dobiti, a koje bi ubrzale naredne faze konverzije.

postprocess_book(oeb, opts, log)[изворни код]

Poziva se da omogući ulaznom dodatku da izvrši naknadnu obradu nakon što je knjiga parsirana.

specialize(oeb, opts, log, output_fmt)[изворни код]

Poziva se da omogući ulaznom dodatku da specijalizuje parsiranu knjigu za određeni izlazni format. Poziva se nakon postprocess_book i pre nego što se izvrše bilo kakve transformacije na parsiranoj knjizi.

gui_configuration_widget(parent, get_option_by_name, get_option_help, db, book_id=None)[изворни код]

Poziva se za kreiranje vidžeta koji se koristi za konfigurisanje ovog dodatka u calibre GUI-ju. Vidžet mora biti instanca klase PluginWidget. Pogledajte ugrađene ulazne dodatke za primere.

class calibre.customize.conversion.OutputFormatPlugin(*args)[изворни код]

Bases: Plugin

OutputFormatPlugins su odgovorni za konvertovanje OEB dokumenta (OPF+HTML) u izlaznu e-knjigu.

Može se pretpostaviti da je OEB dokument kodiran u UTF-8. Glavna akcija se dešava u convert().

type = 'Izlaz za konverziju'

Tip ovog dodatka. Koristi se za kategorizaciju dodataka u GUI-ju

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

Lista platformi na kojima ovaj dodatak radi. Na primer: ['windows', 'osx', 'linux']

file_type = None

Tip datoteke (ekstenzija bez vodeće tačke) koju ovaj dodatak izbacuje

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

Opcije koje dele svi dodaci za ulazni format. Ne preklapajte u potklasama. Koristite options umesto toga. Svaka opcija mora biti instanca OptionRecommendation.

options = {}

Opcije za prilagođavanje ponašanja ovog dodatka. Svaka opcija mora biti instanca OptionRecommendation.

recommendations = {}

Skup 3-torki u obliku (option_name, recommended_value, recommendation_level)

property description

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

Kreirajte novi string objekat od datog objekta. Ako su navedeni encoding ili errors, onda objekat mora izložiti bafer podataka koji će biti dekodiran koristeći dati encoding i rukovalac greškama. U suprotnom, vraća rezultat object.__str__() (ako je definisan) ili repr(object). encoding podrazumevano je 'utf-8'. errors podrazumevano je 'strict'.

convert(oeb_book, output, input_plugin, opts, log)[изворни код]

Upišite sadržaj objekta oeb_book (instance klase calibre.ebooks.oeb.OEBBook) u fajl naveden parametrom output.

Параметри:
  • output -- Ili objekat nalik datoteci ili string. Ako je string, to je putanja do fascikle koja može ili ne mora postojati. Izlazni dodatak bi trebalo da upiše svoj izlaz u tu fasciklu. Ako je objekat nalik datoteci, izlazni dodatak bi trebalo da upiše svoj izlaz u datoteku.

  • input_plugin -- Ulazni dodatak koji je korišćen na početku cevovoda za konverziju.

  • opts -- Opcije konverzije. Garantovano imaju atribute koji odgovaraju OptionRecommendations ovog dodatka.

  • log -- Loger. Štampajte debug/info poruke itd. koristeći ovo.

specialize_options(log, opts, input_fmt)[изворни код]

Može se koristiti za promenu vrednosti opcija konverzije, kako ih koristi cevovod konverzije.

specialize_css_for_output(log, opts, item, stylizer)[изворни код]

Može se koristiti za izmene u CSS-u tokom procesa izravnavanja CSS-a.

Параметри:
  • item -- Stavka (HTML fajl) koja se obrađuje

  • stylizer -- Stylizer objekat koji sadrži izravnate stilove za stavku. Možete dobiti stil za bilo koji element pomoću stylizer.style(element).

gui_configuration_widget(parent, get_option_by_name, get_option_help, db, book_id=None)[изворни код]

Poziva se za kreiranje vidžeta koji se koristi za konfigurisanje ovog dodatka u calibre GUI-ju. Vidžet mora biti instanca klase PluginWidget. Pogledajte ugrađene izlazne dodatke za primere.

Drajveri uređaja

Osnovna klasa za sve drajvere uređaja je DevicePlugin. Međutim, ako se vaš uređaj predstavlja kao USBMS disk operativnom sistemu, trebalo bi da koristite USBMS klasu umesto nje jer ona implementira svu logiku potrebnu za podršku ovakvim vrstama uređaja.

class calibre.devices.interface.DevicePlugin(plugin_path)[изворни код]

Bases: Plugin

Definiše interfejs koji bi trebalo da implementiraju pozadine koje komuniciraju sa čitačem e-knjiga.

type = 'Interfejs uređaja'

Tip ovog dodatka. Koristi se za kategorizaciju dodataka u GUI-ju

FORMATS: ClassVar[list[str]] = ['lrf', 'rtf', 'pdf', 'txt']

Uređena lista podržanih formata

VENDOR_ID: ClassVar[int | list[int] | dict[int, dict[int, list[int] | None]]] = 0

VENDOR_ID može biti ili ceo broj, lista celih brojeva ili rečnik. Ako je rečnik, mora biti rečnik rečnika, u obliku:

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

Ceo broj ili lista celih brojeva

BCD = None

BCD može biti None da se ne bi razlikovali uređaji na osnovu BCD-a, ili može biti lista BCD brojeva svih uređaja koje podržava ovaj drajver.

THUMBNAIL_HEIGHT = 68

Visina za sličice na uređaju

THUMBNAIL_COMPRESSION_QUALITY = 75

Kvalitet kompresije za sličice. Postavite ovo bliže 100 da biste imali sličice boljeg kvaliteta sa manje artefakata kompresije. Naravno, sličice postaju i veće.

WANTS_UPDATED_THUMBNAILS = False

Postavite ovo na True ako uređaj podržava ažuriranje sličica korica tokom sync_booklists. Postavljanje na true će tražiti od device.py da osveži sličice korica tokom uparivanja knjiga

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

Da li se metapodaci na knjigama mogu postaviti preko GUI-ja.

CAN_DO_DEVICE_DB_PLUGBOARD = False

Da li uređaj može da rukuje device_db metapodacima plugboards

path_sep = '/'

Separator putanje za putanje do knjiga na uređaju

icon = 'reader.png'

Ikona za ovaj uređaj

class UserAnnotation(type, value)

Bases: tuple

type

Alijas za polje broj 0

value

Alijas za polje broj 1

OPEN_FEEDBACK_MESSAGE = None

GUI prikazuje ovo kao poruku ako nije None u statusnoj traci. Korisno ako otvaranje može potrajati dugo

VIRTUAL_BOOK_EXTENSIONS = frozenset({})

Skup ekstenzija koje su "virtuelne knjige" na uređaju i stoga se ne mogu pregledati/sačuvati/dodati u biblioteku. Na primer: frozenset(['kobo'])

VIRTUAL_BOOK_EXTENSION_MESSAGE = None

Poruka koja se prikazuje korisniku za ekstenzije virtuelnih knjiga.

NUKE_COMMENTS = None

Da li da se obrišu komentari u kopiji knjige koja se šalje na uređaj. Ako nije None, ovo bi trebalo da bude kratak string kojim će komentari biti zamenjeni.

MANAGES_DEVICE_PRESENCE = False

Ako je True, označava da ovaj drajver u potpunosti upravlja detekcijom uređaja, izbacivanjem i tako dalje. Ako ovo postavite na True, morate implementirati metode detect_managed_devices i debug_managed_device_detection. Drajver sa ovim postavljenim na True je odgovoran za detekciju uređaja, upravljanje crnom listom uređaja, listom izbačenih uređaja i tako dalje. calibre će periodično pozivati metodu detect_managed_devices() i ako ona vrati detektovani uređaj, calibre će pozvati open(). open() će biti pozvan svaki put kada se uređaj vrati čak i ako su prethodni pozivi open() propali, stoga drajver mora održavati sopstvenu crnu listu propalih uređaja. Slično, prilikom izbacivanja, calibre će pozvati eject() i zatim, pretpostavljajući da sledeći poziv detect_managed_devices() vrati None, pozvaće post_yank_cleanup().

SLOW_DRIVEINFO = False

Ako je postavljeno na True, calibre će pozvati metodu get_driveinfo() nakon što se liste knjiga učitaju da bi dobio informacije o disku.

ASK_TO_ALLOW_CONNECT = False

Ako je postavljeno na True, calibre će pitati korisnika da li želi da upravlja uređajem pomoću calibre-a, prvi put kada bude detektovan. Ako ovo postavite na True, morate implementirati get_device_uid() i ignore_connected_device() i get_user_blacklisted_devices() i set_user_blacklisted_devices()

user_feedback_after_callback = None

Postavite ovo na rečnik u obliku {'title':title, 'msg':msg, 'det_msg':detailed_msg} da bi calibre prikazao iskačuću poruku korisniku nakon što se izvrše neki povratni pozivi (trenutno samo upload_books). Pazite da ne spamujete korisnika sa previše poruka. Ova promenljiva se proverava nakon svakog povratnog poziva, pa je postavite samo kada vam je zaista potrebna.

classmethod get_open_popup_message()[изворни код]

GUI ovo prikazuje kao nemodalni iskačući prozor. Trebalo bi da bude instanca OpenPopupMessage

classmethod model_metadata() → tuple[ModelMetadata, ...][изворни код]

Metapodaci o svim stvarnim modelima uređaja koje ovaj drajver podržava

is_usb_connected(devices_on_system, debug=False, only_presence=False)[изворни код]

Vraća True, device_info ako je uređaj kojim upravlja ovaj dodatak trenutno povezan.

Параметри:

devices_on_system -- Lista trenutno povezanih uređaja

detect_managed_devices(devices_on_system, force_refresh=False)[изворни код]

Poziva se samo ako je MANAGES_DEVICE_PRESENCE True.

Skeniraj uređaje kojima ovaj drajver može da upravlja. Trebalo bi da vrati objekat uređaja ako je uređaj pronađen. Ovaj objekat će biti prosleđen open() metodu kao connected_device. Ako nijedan uređaj nije pronađen, vrati None. Vraćeni objekat može biti bilo šta, calibre ga ne koristi, samo se prosleđuje open().

Ovaj metod se periodično poziva od strane GUI-ja, pa se pobrinite da ne zahteva previše resursa. Koristite keš da biste izbegli ponavljano skeniranje sistema.

Параметри:
  • devices_on_system -- Skup USB uređaja pronađenih na sistemu.

  • force_refresh -- Ako je True i drajver koristi keš da spreči ponavljano skeniranje, keš mora biti ispražnjen.

debug_managed_device_detection(devices_on_system, output)[изворни код]

Poziva se samo ako je MANAGES_DEVICE_PRESENCE True.

Trebalo bi da upiše informacije o uređajima detektovanim na sistemu u output, koji je objekat sličan fajlu.

Trebalo bi da vrati True ako je uređaj detektovan i uspešno otvoren, inače False.

reset(key='-1', log_packets=False, report_progress=None, detected_device=None)[изворни код]
Параметри:
  • key -- Ključ za otključavanje uređaja

  • log_packets -- Ako je true, tok paketa ka/od uređaja se beleži

  • report_progress -- Funkcija koja se poziva sa % napretka (broj između 0 i 100) za razne zadatke. Ako se pozove sa -1 to znači da zadatak nema informacije o napretku

  • detected_device -- Informacije o uređaju iz skenera uređaja

can_handle_windows(usbdevice, debug=False)[изворни код]

Opcioni metod za obavljanje daljih provera na uređaju da bi se videlo da li je ovaj drajver sposoban da njime upravlja. Ako nije, trebalo bi da vrati False. Ovaj metod se poziva samo nakon što se vendor, product ids i bcd poklope, tako da može da obavi neke relativno vremenski zahtevne provere. Podrazumevana implementacija vraća True. Ovaj metod se poziva samo na Windows-u. Pogledajte takođe can_handle().

Imajte na umu da za uređaje bazirane na USBMS ovaj metod podrazumevano delegira na can_handle(). Tako da treba samo da prepišete can_handle() u vašoj potklasi USBMS.

Параметри:

usbdevice -- usbdevice kao što vraća calibre.devices.winusb.scan_usb_devices()

can_handle(device_info, debug=False)[изворни код]

Unix verzija can_handle_windows().

Параметри:

device_info -- Je torka (vid, pid, bcd, proizvođač, proizvod, serijski broj)

open(connected_device, library_uuid)[изворни код]

Izvršite bilo kakvu inicijalizaciju specifičnu za uređaj. Poziva se nakon što je uređaj detektovan, ali pre bilo kojih drugih funkcija koje komuniciraju sa uređajem. Na primer: Za uređaje koji se predstavljaju kao USB Mass storage uređaji, ova metoda bi bila odgovorna za montiranje uređaja ili ako je uređaj automatski montiran, za pronalaženje gde je montiran. Metoda calibre.devices.usbms.device.Device.open() ima implementaciju ove funkcije koja bi trebalo da posluži kao dobar primer za USB Mass storage uređaje.

Ova metoda može podići OpenFeedback izuzetak da bi prikazala poruku korisniku.

Параметри:
  • connected_device -- Uređaj koji pokušavamo da otvorimo. To je torka (vendor id, product id, bcd, ime proizvođača, ime proizvoda, serijski broj uređaja). Međutim, neki uređaji nemaju serijski broj i na Windows-u su prisutna samo prva tri polja, ostala su None.

  • library_uuid -- UUID trenutne calibre biblioteke. Može biti None ako nema biblioteke (na primer kada se koristi iz komandne linije).

eject()[изворни код]

Demontiraj / izbaci uređaj iz OS-a. Ovo ne proverava da li postoje GUI poslovi na čekanju koji treba da komuniciraju sa uređajem.

NAPOMENA: Ova metoda se možda neće pozvati na istoj niti kao ostale metode uređaja.

post_yank_cleanup()[изворни код]

Poziva se ako korisnik izvuče uređaj bez prethodnog izbacivanja.

set_progress_reporter(report_progress)[изворни код]

Postavite funkciju za izveštavanje o informacijama o napretku.

Параметри:

report_progress -- Funkcija koja se poziva sa % napretka (broj između 0 i 100) za razne zadatke. Ako se pozove sa -1 to znači da zadatak nema informacije o napretku

get_device_information(end_session=True)[изворни код]

Pitaj uređaj za informacije o uređaju. Pogledajte L{DeviceInfoQuery}.

Резултат:

(device name, device version, software version on device, MIME type) Torka može opciono imati peti element, koji je rečnik informacija o disku. Pogledajte usbms.driver za primer.

get_driveinfo()[изворни код]

Vraća rečnik driveinfo. Obično se poziva iz get_device_information(), ali ako je učitavanje driveinfo sporo za ovaj drajver, onda bi trebalo da postavi SLOW_DRIVEINFO. U ovom slučaju, ovaj metod će pozvati calibre nakon što se liste knjiga učitaju. Imajte na umu da se ne poziva u niti uređaja, tako da bi drajver trebalo da kešira informacije o disku u metodu books(), a ova funkcija bi trebalo da vrati keširane podatke.

card_prefix(end_session=True)[изворни код]

Vraća listu od 2 elementa prefiksa za putanje na karticama. Ako kartica nije prisutna, None se postavlja za prefiks kartice. Npr. ('/place', '/place2') (None, 'place2') ('place', None) (None, None)

total_space(end_session=True)[изворни код]
Dobijanje ukupnog dostupnog prostora na tačkama montiranja:
  1. Glavna memorija

  2. Memorijska kartica A

  3. Memorijska kartica B

Резултат:

Lista od 3 elementa sa ukupnim prostorom u bajtovima od (1, 2, 3). Ako određeni uređaj nema neku od ovih lokacija, trebalo bi da vrati 0.

free_space(end_session=True)[изворни код]
Dobijanje slobodnog prostora dostupnog na tačkama montiranja:
  1. Glavna memorija

  2. Kartica A

  3. Kartica B

Резултат:

Lista od 3 elementa sa slobodnim prostorom u bajtovima od (1, 2, 3). Ako određeni uređaj nema neku od ovih lokacija, trebalo bi da vrati -1.

books(oncard=None, end_session=True)[изворни код]

Vraća listu e-knjiga na uređaju.

Параметри:

oncard -- Ako je 'carda' ili 'cardb', vraća listu e-knjiga na specifičnoj memorijskoj kartici, inače vraća listu e-knjiga u glavnoj memoriji uređaja. Ako je kartica navedena, a na njoj nema knjiga, vraća praznu listu.

Резултат:

BookList.

upload_books(files, names, on_card=None, end_session=True, metadata=None)[изворни код]

Otpremite listu knjiga na uređaj. Ako datoteka već postoji na uređaju, treba je zameniti. Ovaj metod treba da podigne FreeSpaceError ako nema dovoljno slobodnog prostora na uređaju. Tekst FreeSpaceError mora sadržati reč "card" ako on_card nije None, inače mora sadržati reč "memory".

Параметри:
  • files -- Lista putanja

  • names -- Lista imena datoteka koje knjige treba da imaju nakon otpremanja na uređaj. len(names) == len(files)

  • metadata -- Ako nije None, to je lista Metadata objekata. Ideja je da se metapodaci koriste za određivanje gde na uređaju staviti knjigu. len(metadata) == len(files). Pored obične korice (putanja do korice), može postojati i atribut sličice, koji treba koristiti kao prioritet. Atribut sličice je u obliku (širina, visina, podaci_o_korici kao jpeg).

Резултат:

Lista torki od 3 elementa. Lista je namenjena da se prosledi u add_books_to_metadata().

classmethod add_books_to_metadata(locations, metadata, booklists)[изворни код]

Dodajte lokacije u liste knjiga. Ova funkcija ne sme komunicirati sa uređajem.

Параметри:
  • locations -- Rezultat poziva L{upload_books}

  • metadata -- Lista Metadata objekata, isto kao za upload_books().

  • booklists -- Torka koja sadrži rezultat poziva (books(oncard=None)(), books(oncard='carda')(), :meth`books(oncard='cardb')`).

delete_books(paths, end_session=True)[изворни код]

Izbriši knjige na putanjama na uređaju.

classmethod remove_books_from_metadata(paths, booklists)[изворни код]

Uklonite knjige iz liste metapodataka. Ova funkcija ne sme komunicirati sa uređajem.

Параметри:
  • paths -- putanje do knjiga na uređaju.

  • booklists -- Torka koja sadrži rezultat poziva (books(oncard=None)(), books(oncard='carda')(), :meth`books(oncard='cardb')`).

sync_booklists(booklists, end_session=True)[изворни код]

Ažuriraj metapodatke na uređaju.

Параметри:

booklists -- Torka koja sadrži rezultat poziva (books(oncard=None)(), books(oncard='carda')(), :meth`books(oncard='cardb')`).

get_file(path, outfile, end_session=True)[изворни код]

Pročitajte fajl na path na uređaju i upiši ga u outfile.

Параметри:

outfile -- objekat fajla kao sys.stdout ili rezultat open() poziva.

config_widget()[изворни код]

Treba da vrati QWidget. QWidget sadrži podešavanja za interfejs uređaja

save_settings(config_widget)[изворни код]

Treba da sačuva podešavanja na disk. Uzima vidžet kreiran u config_widget() i čuva sva podešavanja na disk.

classmethod settings()[изворни код]

Treba da vrati opts objekat. Opts objekat treba da ima bar jedan atribut format_map koji je uređena lista formata za uređaj.

set_plugboards(plugboards, pb_func)[изворни код]

obezbedi drajveru trenutni skup plugboard-ova i funkciju za izbor specifičnog plugboard-a. Ovaj metod se poziva neposredno pre add_books i sync_booklists.

pb_func je poziv sa sledećim potpisom:

def pb_func(device_name, format, plugboards)

Dajete mu trenutno ime uređaja (bilo ime klase ili DEVICE_PLUGBOARD_NAME), format za koji ste zainteresovani ('pravi' format ili 'device_db'), i plugboard-ove (dobili ste ih od set_plugboards, na istom mestu gde ste dobili ovaj metod).

Резултат:

None ili jedna instanca plugboard-a.

set_driveinfo_name(location_code, name)[изворни код]

Postavite ime uređaja u driveinfo fajlu na 'name'. Ovo podešavanje će ostati dok se fajl ponovo ne kreira ili se ime ponovo ne promeni.

Uređaji koji nisu diskovi bi trebalo da implementiraju ovaj metod na osnovu kodova lokacije koje vraća metod get_device_information().

prepare_addable_books(paths)[изворни код]

S obzirom na listu putanja, vraća drugu listu putanja. Ove putanje pokazuju na verzije knjiga koje se mogu dodati.

Ako dođe do greške pri pripremi knjige, onda umesto putanje, pozicija u vraćenoj listi za tu knjigu treba da bude torka od tri elementa: (original_path, the exception instance, traceback)

startup()[изворни код]

Poziva se kada calibre pokreće uređaj. Uradite svaku potrebnu inicijalizaciju. Imajte na umu da se može instancirati više instanci klase, i stoga se __init__ može pozvati više puta, ali će samo jedna instanca imati pozvan ovaj metod. Ovaj metod se poziva u niti uređaja, a ne u GUI niti.

shutdown()[изворни код]

Poziva se kada se calibre gasi, bilo zauvek ili u pripremi za ponovno pokretanje. Uradite svako potrebno čišćenje. Ovaj metod se poziva u niti uređaja, a ne u GUI niti.

get_device_uid()[изворни код]

Mora vratiti jedinstveni id za trenutno povezani uređaj (ovo se poziva odmah nakon uspešnog poziva open()). Morate implementirati ovaj metod ako postavite ASK_TO_ALLOW_CONNECT = True

ignore_connected_device(uid)[изворни код]

Trebalo bi da ignoriše uređaj identifikovan pomoću uid (rezultat poziva get_device_uid()) u budućnosti. Morate implementirati ovaj metod ako postavite ASK_TO_ALLOW_CONNECT = True. Imajte na umu da se ova funkcija poziva odmah nakon open(), pa ako open() kešira neko stanje, drajver bi trebalo da resetuje to stanje.

get_user_blacklisted_devices()[изворни код]

Vratite mapu uid uređaja u čitljivo ime za sve uređaje koje je korisnik tražio da se ignorišu.

set_user_blacklisted_devices(devices)[изворни код]

Postavite listu uid-ova uređaja koje bi ovaj drajver trebalo da ignoriše.

specialize_global_preferences(device_prefs)[изворни код]

Implementirajte ovaj metod ako vaš uređaj želi da premosti određenu postavku. Morate osigurati da sva mesta poziva koja žele postavku koja se može premostiti koriste device_prefs['something'] umesto prefs['something']. Vaš metod bi trebalo da pozove device_prefs.set_overrides(pref=val, pref=val, ...). Trenutno se koristi za: upravljanje metapodacima (prefs['manage_device_metadata'])

set_library_info(library_name, library_uuid, field_metadata)[изворни код]

Implementirajte ovaj metod ako želite informacije o trenutnoj calibre biblioteci. Ovaj metod se poziva pri pokretanju i kada se calibre biblioteka promeni dok je povezana.

is_dynamically_controllable()[изворни код]

Poziva ga menadžer uređaja prilikom pokretanja dodataka. Ako ovaj metod vrati string, onda a) podržava interfejs dinamičke kontrole menadžera uređaja, i b) to ime će se koristiti prilikom komunikacije sa dodatkom.

Ova metoda se može pozvati u GUI niti. Drajver koji implementira ovu metodu mora biti bezbedan za niti.

start_plugin()[изворни код]

Ova metoda se poziva za pokretanje dodatka. Dodatak bi trebalo da počne da prihvata konekcije uređaja na bilo koji način. Ako dodatak već prihvata konekcije, onda ne radite ništa.

Ova metoda se može pozvati u GUI niti. Drajver koji implementira ovu metodu mora biti bezbedan za niti.

stop_plugin()[изворни код]

Ova metoda se poziva za zaustavljanje dodatka. Dodatak više ne bi trebalo da prihvata konekcije i trebalo bi da počisti za sobom. Verovatno je da bi ova metoda trebalo da pozove shutdown. Ako dodatak već ne prihvata konekcije, onda ne radite ništa.

Ova metoda se može pozvati u GUI niti. Drajver koji implementira ovu metodu mora biti bezbedan za niti.

get_option(opt_string, default=None)[изворни код]

Vraća vrednost opcije naznačene sa opt_string. Ova metoda se može pozvati kada dodatak nije pokrenut. Vraća None ako opcija ne postoji.

Ova metoda se može pozvati u GUI niti. Drajver koji implementira ovu metodu mora biti bezbedan za niti.

set_option(opt_string, opt_value)[изворни код]

Postavlja vrednost opcije naznačene sa opt_string. Ova metoda se može pozvati kada dodatak nije pokrenut.

Ova metoda se može pozvati u GUI niti. Drajver koji implementira ovu metodu mora biti bezbedan za niti.

is_running()[изворни код]

Vraća True ako je dodatak pokrenut, inače false

Ova metoda se može pozvati u GUI niti. Drajver koji implementira ovu metodu mora biti bezbedan za niti.

synchronize_with_db(db, book_id, book_metadata, first_call)[изворни код]

Poziva se tokom uparivanja knjiga kada se knjiga na uređaju upari sa knjigom u calibre bazi podataka. Metoda je odgovorna za sinhronizaciju podataka sa uređaja u calibre bazu podataka (ako je potrebno).

Metoda mora vratiti torku od dve vrednosti. Prva vrednost je skup promenjenih calibre ID-ova knjiga ako je calibre baza podataka promenjena ili None ako baza podataka nije promenjena. Ako je prva vrednost prazan skup, onda se metapodaci za knjigu na uređaju ažuriraju sa calibre metapodacima i vraćaju uređaju, ali se ne vrši GUI osvežavanje te knjige. Ovo je korisno kada su calibre podaci tačni, ali se moraju poslati na uređaj.

Druga vrednost je sama po sebi torka od 2 vrednosti. Prva vrednost u torci određuje da li format knjige treba poslati na uređaj. Namera je da se omogući provera da li je knjiga na uređaju ista kao knjiga u calibre-u. Ova vrednost mora biti None ako se nijedna knjiga ne šalje, inače vraća osnovno ime datoteke na uređaju (string kao foobar.epub). Obavezno uključite ekstenziju u ime. Podsistem uređaja će konstruisati send_books posao za sve knjige sa vrednostima koje nisu None. Napomena: osim za kasnije preuzimanje ekstenzije, ime se ignoriše u slučajevima kada uređaj koristi šablon za generisanje imena datoteke, što većina radi. Druga vrednost u vraćenoj torci ukazuje da li je format datiran u budućnosti. Vraća True ako jeste, inače vraća False. calibre će prikazati dijalog korisniku sa listom svih knjiga datiranih u budućnosti.

Izuzetno važno: ova metoda se poziva u GUI niti. Mora biti bezbedna za niti u odnosu na nit menadžera uređaja.

book_id: calibre id za knjigu u bazi podataka. book_metadata: Metadata objekat za knjigu koja dolazi sa uređaja. first_call: True ako je ovo prvi poziv tokom sinhronizacije, False inače

class calibre.devices.interface.BookList(oncard=None, prefix=None, settings=None)[изворни код]

Bases: list

Lista knjiga. Svaki Book objekat mora imati polja

  1. naslov

  2. autori

  3. veličina (veličina datoteke knjige)

  4. datetime (UTC vremenska torka)

  5. putanja (putanja na uređaju do knjige)

  6. sličica (može biti None) sličica je ili str/bytes objekat sa podacima slike ili bi trebalo da ima atribut image_path koji čuva apsolutnu (nativnu za platformu) putanju do slike

  7. oznake (lista stringova, može biti prazna).

supports_collections()[изворни код]

Vraća True ako uređaj podržava kolekcije za ovu listu knjiga.

add_book(book, replace_metadata)[изворни код]

Dodajte knjigu na listu knjiga. Namera je da se održe svi interni metapodaci uređaja. Vraća True ako liste knjiga moraju biti sinhronizovane

remove_book(book)[изворни код]

Uklonite knjigu sa liste knjiga. Istovremeno ispravi sve metapodatke uređaja

get_collections(collection_attributes)[изворни код]

Vraća rečnik kolekcija kreiranih iz collection_attributes. Svaki unos u rečniku je u obliku ime kolekcije:[lista knjiga]

Lista knjiga je sortirana po naslovu knjige, osim za kolekcije kreirane iz serija, u kom slučaju se koristi series_index.

Параметри:

collection_attributes -- Lista atributa objekta Book

Uređaji bazirani na USB Mass Storage

Osnovna klasa za takve uređaje je calibre.devices.usbms.driver.USBMS. Ova klasa zauzvrat nasleđuje deo svoje funkcionalnosti od svojih osnova, dokumentovanih ispod. Tipičan osnovni drajver baziran na USBMS izgleda ovako:

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)[изворни код]

Bases: DeviceConfig, DevicePlugin

Ova klasa obezbeđuje logiku zajedničku za sve drajvere za uređaje koji se izvoze kao USB Mass Storage uređaji. Obezbeđuje implementacije za montiranje/izbacivanje USBMS uređaja na svim platformama.

VENDOR_ID: ClassVar[int | list[int] | dict[int, dict[int, list[int] | None]]] = 0

VENDOR_ID može biti ili ceo broj, lista celih brojeva ili rečnik. Ako je rečnik, mora biti rečnik rečnika, u obliku:

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

Ceo broj ili lista celih brojeva

BCD = None

BCD može biti None da se ne bi razlikovali uređaji na osnovu BCD-a, ili može biti lista BCD brojeva svih uređaja koje podržava ovaj drajver.

WINDOWS_MAIN_MEM = None

String koji identifikuje glavnu memoriju uređaja u Windows PnP id stringovima. Ovo može biti None, string, lista stringova ili kompajlirani regex

WINDOWS_CARD_A_MEM = None

String koji identifikuje prvu karticu uređaja u Windows PnP id stringovima. Ovo može biti None, string, lista stringova ili kompajlirani regex

WINDOWS_CARD_B_MEM = None

String koji identifikuje drugu karticu uređaja u Windows PnP id stringovima. Ovo može biti None, string, lista stringova ili kompajlirani regex

OSX_MAIN_MEM_VOL_PAT = None

Koristi se od strane nove detekcije drajvera za razlikovanje glavne memorije od memorijskih kartica. Trebalo bi da bude regularni izraz koji se podudara sa tačkom montiranja glavne memorije koju dodeljuje macOS

MAX_PATH_LEN = 250

Maksimalna dužina putanja kreiranih na uređaju

NEWS_IN_FOLDER = True

Stavi vesti u sopstveni folder

classmethod model_metadata() → tuple[ModelMetadata, ...][изворни код]

Metapodaci o svim stvarnim modelima uređaja koje ovaj drajver podržava

reset(key='-1', log_packets=False, report_progress=None, detected_device=None)[изворни код]
Параметри:
  • key -- Ključ za otključavanje uređaja

  • log_packets -- Ako je true, tok paketa ka/od uređaja se beleži

  • report_progress -- Funkcija koja se poziva sa % napretka (broj između 0 i 100) za razne zadatke. Ako se pozove sa -1 to znači da zadatak nema informacije o napretku

  • detected_device -- Informacije o uređaju iz skenera uređaja

set_progress_reporter(report_progress)[изворни код]

Postavite funkciju za izveštavanje o informacijama o napretku.

Параметри:

report_progress -- Funkcija koja se poziva sa % napretka (broj između 0 i 100) za razne zadatke. Ako se pozove sa -1 to znači da zadatak nema informacije o napretku

card_prefix(end_session=True)[изворни код]

Vraća listu od 2 elementa prefiksa za putanje na karticama. Ako kartica nije prisutna, None se postavlja za prefiks kartice. Npr. ('/place', '/place2') (None, 'place2') ('place', None) (None, None)

total_space(end_session=True)[изворни код]
Dobijanje ukupnog dostupnog prostora na tačkama montiranja:
  1. Glavna memorija

  2. Memorijska kartica A

  3. Memorijska kartica B

Резултат:

Lista od 3 elementa sa ukupnim prostorom u bajtovima od (1, 2, 3). Ako određeni uređaj nema neku od ovih lokacija, trebalo bi da vrati 0.

free_space(end_session=True)[изворни код]
Dobijanje slobodnog prostora dostupnog na tačkama montiranja:
  1. Glavna memorija

  2. Kartica A

  3. Kartica B

Резултат:

Lista od 3 elementa sa slobodnim prostorom u bajtovima od (1, 2, 3). Ako određeni uređaj nema neku od ovih lokacija, trebalo bi da vrati -1.

windows_sort_drives(drives)[изворни код]

Poziva se za razlikovanje glavne memorije i memorijske kartice za uređaje koji ih ne razlikuju na osnovu WINDOWS_CARD_NAME. Na primer: EB600

can_handle_windows(usbdevice, debug=False)[изворни код]

Opcioni metod za obavljanje daljih provera na uređaju da bi se videlo da li je ovaj drajver sposoban da njime upravlja. Ako nije, trebalo bi da vrati False. Ovaj metod se poziva samo nakon što se vendor, product ids i bcd poklope, tako da može da obavi neke relativno vremenski zahtevne provere. Podrazumevana implementacija vraća True. Ovaj metod se poziva samo na Windows-u. Pogledajte takođe can_handle().

Imajte na umu da za uređaje bazirane na USBMS ovaj metod podrazumevano delegira na can_handle(). Tako da treba samo da prepišete can_handle() u vašoj potklasi USBMS.

Параметри:

usbdevice -- usbdevice kao što vraća calibre.devices.winusb.scan_usb_devices()

open(connected_device, library_uuid)[изворни код]

Izvršite bilo kakvu inicijalizaciju specifičnu za uređaj. Poziva se nakon što je uređaj detektovan, ali pre bilo kojih drugih funkcija koje komuniciraju sa uređajem. Na primer: Za uređaje koji se predstavljaju kao USB Mass storage uređaji, ova metoda bi bila odgovorna za montiranje uređaja ili ako je uređaj automatski montiran, za pronalaženje gde je montiran. Metoda calibre.devices.usbms.device.Device.open() ima implementaciju ove funkcije koja bi trebalo da posluži kao dobar primer za USB Mass storage uređaje.

Ova metoda može podići OpenFeedback izuzetak da bi prikazala poruku korisniku.

Параметри:
  • connected_device -- Uređaj koji pokušavamo da otvorimo. To je torka (vendor id, product id, bcd, ime proizvođača, ime proizvoda, serijski broj uređaja). Međutim, neki uređaji nemaju serijski broj i na Windows-u su prisutna samo prva tri polja, ostala su None.

  • library_uuid -- UUID trenutne calibre biblioteke. Može biti None ako nema biblioteke (na primer kada se koristi iz komandne linije).

eject()[изворни код]

Demontiraj / izbaci uređaj iz OS-a. Ovo ne proverava da li postoje GUI poslovi na čekanju koji treba da komuniciraju sa uređajem.

NAPOMENA: Ova metoda se možda neće pozvati na istoj niti kao ostale metode uređaja.

post_yank_cleanup()[изворни код]

Poziva se ako korisnik izvuče uređaj bez prethodnog izbacivanja.

sanitize_callback(path)[изворни код]

Povratni poziv koji omogućava pojedinačnim drajverima uređaja da prepišu sanitizaciju putanje koju koristi create_upload_path().

filename_callback(default, mi)[изворни код]

Povratni poziv koji omogućava drajverima da promene podrazumevano ime datoteke postavljeno od strane create_upload_path().

sanitize_path_components(components)[изворни код]

Izvršite bilo kakvu posebno čišćenje uređaja na komponentama putanje za datoteke koje se otpremaju na uređaj

get_annotations(path_map)[изворни код]

Razrešite path_map u annotation_map datoteka pronađenih na uređaju

add_annotation_to_library(db, db_id, annotation)[изворни код]

Dodajte anotaciju u calibre biblioteku

class calibre.devices.usbms.cli.CLI[изворни код]
class calibre.devices.usbms.driver.USBMS(plugin_path)[изворни код]

Bases: CLI, Device

Osnovna klasa za sve USBMS uređaje. Implementira logiku za slanje/dobijanje/ažuriranje metapodataka/keširanje metapodataka/itd.

description = 'Komunikacija sa čitačem e-knjiga.'

Kratak string koji opisuje šta ovaj dodatak radi

author = 'John Schember'

Autor ovog dodatka

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

Lista platformi na kojima ovaj dodatak radi. Na primer: ['windows', 'osx', 'linux']

booklist_class

alias of BookList

book_class

alias of Book

FORMATS: ClassVar[list[str]] = []

Uređena lista podržanih formata

CAN_SET_METADATA = []

Da li se metapodaci na knjigama mogu postaviti preko GUI-ja.

get_device_information(end_session=True)[изворни код]

Pitaj uređaj za informacije o uređaju. Pogledajte L{DeviceInfoQuery}.

Резултат:

(device name, device version, software version on device, MIME type) Torka može opciono imati peti element, koji je rečnik informacija o disku. Pogledajte usbms.driver za primer.

set_driveinfo_name(location_code, name)[изворни код]

Postavite ime uređaja u driveinfo fajlu na 'name'. Ovo podešavanje će ostati dok se fajl ponovo ne kreira ili se ime ponovo ne promeni.

Uređaji koji nisu diskovi bi trebalo da implementiraju ovaj metod na osnovu kodova lokacije koje vraća metod get_device_information().

books(oncard=None, end_session=True)[изворни код]

Vraća listu e-knjiga na uređaju.

Параметри:

oncard -- Ako je 'carda' ili 'cardb', vraća listu e-knjiga na specifičnoj memorijskoj kartici, inače vraća listu e-knjiga u glavnoj memoriji uređaja. Ako je kartica navedena, a na njoj nema knjiga, vraća praznu listu.

Резултат:

BookList.

upload_books(files, names, on_card=None, end_session=True, metadata=None)[изворни код]

Otpremite listu knjiga na uređaj. Ako datoteka već postoji na uređaju, treba je zameniti. Ovaj metod treba da podigne FreeSpaceError ako nema dovoljno slobodnog prostora na uređaju. Tekst FreeSpaceError mora sadržati reč "card" ako on_card nije None, inače mora sadržati reč "memory".

Параметри:
  • files -- Lista putanja

  • names -- Lista imena datoteka koje knjige treba da imaju nakon otpremanja na uređaj. len(names) == len(files)

  • metadata -- Ako nije None, to je lista Metadata objekata. Ideja je da se metapodaci koriste za određivanje gde na uređaju staviti knjigu. len(metadata) == len(files). Pored obične korice (putanja do korice), može postojati i atribut sličice, koji treba koristiti kao prioritet. Atribut sličice je u obliku (širina, visina, podaci_o_korici kao jpeg).

Резултат:

Lista torki od 3 elementa. Lista je namenjena da se prosledi u add_books_to_metadata().

upload_cover(path, filename, metadata, filepath)[изворни код]

Otpremite korice knjige na uređaj. Podrazumevana implementacija ne radi ništa.

Параметри:
  • path -- Puna putanja do fascikle gde se nalazi povezana knjiga.

  • filename -- Ime datoteke knjige bez ekstenzije.

  • metadata -- metapodaci koji pripadaju knjizi. Koristite metadata.thumbnail za korice

  • filepath -- Puna putanja do e-knjige

add_books_to_metadata(locations, metadata, booklists)[изворни код]

Dodajte lokacije u liste knjiga. Ova funkcija ne sme komunicirati sa uređajem.

Параметри:
  • locations -- Rezultat poziva L{upload_books}

  • metadata -- Lista Metadata objekata, isto kao za upload_books().

  • booklists -- Torka koja sadrži rezultat poziva (books(oncard=None)(), books(oncard='carda')(), :meth`books(oncard='cardb')`).

delete_books(paths, end_session=True)[изворни код]

Izbriši knjige na putanjama na uređaju.

remove_books_from_metadata(paths, booklists)[изворни код]

Uklonite knjige iz liste metapodataka. Ova funkcija ne sme komunicirati sa uređajem.

Параметри:
  • paths -- putanje do knjiga na uređaju.

  • booklists -- Torka koja sadrži rezultat poziva (books(oncard=None)(), books(oncard='carda')(), :meth`books(oncard='cardb')`).

sync_booklists(booklists, end_session=True)[изворни код]

Ažuriraj metapodatke na uređaju.

Параметри:

booklists -- Torka koja sadrži rezultat poziva (books(oncard=None)(), books(oncard='carda')(), :meth`books(oncard='cardb')`).

classmethod normalize_path(path)[изворни код]

Vratite putanju sa separatorima putanje specifičnim za platformu

Akcije korisničkog interfejsa

Ako dodajete sopstveni dodatak u ZIP datoteci, trebalo bi da napravite potklasu i za InterfaceActionBase i za InterfaceAction. Metod load_actual_plugin() vaše InterfaceActionBase potklase mora da vrati instancirani objekat vaše InterfaceAction potklase.

class calibre.gui2.actions.InterfaceAction(parent, site_customization)[изворни код]

Bases: QObject

Dodatak koji predstavlja "akciju" koja se može preduzeti u grafičkom korisničkom interfejsu. Sve stavke na traci sa alatkama i u kontekstnim menijima su implementirane pomoću ovih dodataka.

Imajte na umu da je ova klasa osnovna klasa za ove dodatke, međutim, da biste integrisali dodatak sa sistemom dodataka u programu calibre, morate napraviti omotačku klasu koja referencira stvarni dodatak. Pogledajte modul calibre.customize.builtins za primere.

Ako dva InterfaceAction objekta imaju isto ime, onaj sa višim prioritetom ima prednost.

Potklase bi trebalo da implementiraju metode genesis(), library_changed(), location_selected(), shutting_down(), initialization_complete() i tag_browser_context_action().

Kada se inicijalizuje, ovaj dodatak ima pristup glavnom calibre GUI-ju preko člana gui. Možete pristupiti drugim dodacima po imenu, na primer:

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

Da biste pristupili stvarnom dodatku, koristite atribut interface_action_base_plugin, ovaj atribut postaje dostupan tek nakon što je dodatak inicijalizovan. Korisno ako želite da koristite metode iz klase dodatka kao što je do_user_config().

QAction naveden pomoću action_spec se automatski kreira i postaje dostupan kao self.qaction.

name = 'Implement me'

Ime dodatka. Ako su prisutna dva dodatka sa istim imenom, onaj sa višim prioritetom ima prednost.

priority = 1

Prioritet dodatka. Ako su prisutna dva dodatka sa istim imenom, onaj sa višim prioritetom ima prednost.

popup_type = 1

Tip iskačućeg menija kada se ovaj dodatak doda na traku sa alatkama

auto_repeat = False

Da li ovu akciju treba automatski ponavljati kada se taster prečice drži pritisnut.

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

U obliku: (text, icon_path, tooltip, keyboard shortcut). icon, tooltip i keyboard shortcut mogu biti None. keyboard shortcut mora biti string, None ili torka prečica. Ako je None, prečica na tastaturi koja odgovara akciji se ne registruje. Ako prosledite praznu torku, onda se prečica registruje bez podrazumevane veze sa tasterom.

action_shortcut_name = None

Ako nije None, koristi se za ime koje se prikazuje korisniku prilikom prilagođavanja prečica na tastaturi za gornju specifikaciju akcije umesto action_spec[0]

action_add_menu = False

Ako je True, meni se automatski kreira i dodaje u self.qaction

action_menu_clone_qaction = False

Ako je True, klon self.qaction se dodaje u meni self.qaction. Ako želite da tekst ove akcije bude drugačiji od teksta self.qaction, postavite ovu promenljivu na novi tekst

dont_add_to = frozenset({})

Skup lokacija na koje ova akcija ne sme biti dodata. Pogledajte all_locations za listu mogućih lokacija

dont_remove_from = frozenset({})

Skup lokacija sa kojih ova akcija ne sme biti uklonjena. Pogledajte all_locations za listu mogućih lokacija

action_type = 'global'

Tip akcije 'current' znači da deluje na trenutni prikaz 'global' znači akciju koja ne deluje na trenutni prikaz, već na calibre u celini

accepts_drops = False

Ako je True, onda će ovaj InterfaceAction imati priliku da interaguje sa događajima prevlačenja i puštanja. Pogledajte metode, accept_enter_event(), :meth`:accept_drag_move_event`, drop_event() za detalje.

accept_enter_event(event, mime_data)[изворни код]

Ova metoda treba da vrati True ako i samo ako je ova akcija interfejsa sposobna da obradi događaj prevlačenja. Ne pozivajte accept/ignore na događaju, o tome će se pobrinuti calibre UI.

accept_drag_move_event(event, mime_data)[изворни код]

Ova metoda treba da vrati True ako i samo ako je ova akcija interfejsa sposobna da obradi događaj prevlačenja. Ne pozivajte accept/ignore na događaju, o tome će se pobrinuti calibre UI.

drop_event(event, mime_data)[изворни код]

Ova metoda treba da izvrši neku korisnu akciju i vrati True ako i samo ako je ova akcija interfejsa sposobna da obradi događaj puštanja. Ne pozivajte accept/ignore na događaju, o tome će se pobrinuti calibre UI. Ne bi trebalo da obavljate blokirajuće/duge operacije u ovoj funkciji. Umesto toga emitujte signal ili koristite QTimer.singleShot i vratite se brzo. Pogledajte ugrađene akcije za primere.

create_menu_action(menu, unique_name, text, icon=None, shortcut=None, description=None, triggered=None, shortcut_name=None, persist_shortcut=False)[изворни код]

Metoda pogodnosti za lako dodavanje akcija u QMenu. Vraća kreirani QAction. Ova akcija ima jedan dodatni atribut calibre_shortcut_unique_name koji, ako nije None, ukazuje na jedinstveno ime pod kojim je ova akcija registrovana u menadžeru tastature.

Параметри:
  • menu -- QMenu u koji će novokreirana akcija biti dodata

  • unique_name -- Jedinstveno ime za ovu akciju, ovo mora biti globalno jedinstveno, pa ga učinite što opisnijim. Ako ste u nedoumici, dodajte mu UUID.

  • text -- Tekst akcije.

  • icon -- Ili QIcon ili ime datoteke. Ime datoteke se prosleđuje ugrađenoj funkciji QIcon.ic(), tako da ne morate prosleđivati punu putanju do fascikle sa slikama.

  • shortcut -- String, lista stringova, None ili False. Ako je False, za ovu akciju se ne registruje prečica na tastaturi. Ako je None, registruje se prečica na tastaturi bez podrazumevane prečice. String i lista stringova registruju prečicu sa podrazumevanom prečicom kao što je navedeno.

  • description -- Opis za ovu akciju. Koristi se za postavljanje oblačića sa alatkama.

  • triggered -- Poziv koji je povezan sa aktiviranim signalom kreirane akcije.

  • shortcut_name -- Tekst koji se prikazuje korisniku prilikom prilagođavanja prečica na tastaturi za ovu akciju. Podrazumevano je postavljen na vrednost text.

  • persist_shortcut -- Prečice za akcije koje se ne pojavljuju uvek, ili zavise od biblioteke, mogu nestati kada se uređuju druge prečice na tastaturi osim ako `persist_shortcut` nije postavljeno na True.

load_resources(names)[изворни код]

Ako ovaj dodatak dolazi u ZIP datoteci (dodatak koji je dodao korisnik), ovaj metod će vam omogućiti da učitate resurse iz ZIP datoteke.

Na primer za učitavanje slike:

pixmap = QPixmap()
pixmap.loadFromData(tuple(self.load_resources(['images/icon.png']).values())[0])
icon = QIcon(pixmap)
Параметри:

names -- Lista putanja do resursa u ZIP datoteci koristeći / kao separator

Резултат:

Rečnik u obliku {name : file_contents}. Sva imena koja nisu pronađena u ZIP datoteci neće biti prisutna u rečniku.

genesis()[изворни код]

Podesite ovaj dodatak. Poziva se samo jednom tokom inicijalizacije. self.gui je dostupan. Akcija navedena pomoću action_spec je dostupna kao self.qaction.

location_selected(loc)[изворни код]

Poziva se kad god se promeni spisak knjiga prikazan u programu calibre. Trenutne vrednosti za loc su: library, main, card and cardb.

Ovaj metod bi trebalo da omogući/onemogući ovu akciju i njene podakcije kako je prikladno za lokaciju.

library_about_to_change(olddb, db)[изворни код]

Poziva se kad god se promeni trenutna biblioteka.

Параметри:
  • olddb -- LibraryDatabase koji odgovara prethodnoj biblioteci.

  • db -- LibraryDatabase koji odgovara novoj biblioteci.

library_changed(db)[изворни код]

Poziva se kad god se promeni trenutna biblioteka.

Параметри:

db -- LibraryDatabase koji odgovara trenutnoj biblioteci.

gui_layout_complete()[изворни код]

Poziva se jednom po akciji kada je raspored glavnog GUI-ja završen. Ako vaša akcija treba da napravi promene u rasporedu, to bi trebalo uraditi ovde, a ne u initialization_complete().

initialization_complete()[изворни код]

Poziva se jednom po akciji kada je inicijalizacija glavnog GUI-ja završena.

tag_browser_context_action(index)[изворни код]

Poziva se prilikom prikazivanja kontekstnog menija u Pregledaču oznaka. index je QModelIndex koji pokazuje na stavku Pregledača oznaka na koju je kliknuto desnim tasterom miša. Testirajte njegovu validnost sa index.valid() i dobijte osnovni TagTreeItem objekat sa index.data(Qt.ItemDataRole.UserRole). Svi objekti akcija koje ova metoda vrati biće dodati u kontekstni meni.

shutting_down()[изворни код]

Poziva se jednom po dodatku kada je glavni GUI u procesu gašenja. Oslobodite sve korišćene resurse, ali pokušajte da ne blokirate gašenje na duže vreme.

class calibre.customize.InterfaceActionBase(*args, **kwargs)[изворни код]

Bases: Plugin

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

Lista platformi na kojima ovaj dodatak radi. Na primer: ['windows', 'osx', 'linux']

author = 'Kovid Goyal'

Autor ovog dodatka

type = 'Akcija korisničkog interfejsa'

Tip ovog dodatka. Koristi se za kategorizaciju dodataka u GUI-ju

load_actual_plugin(gui)[изворни код]

Ova metoda mora vratiti stvarni objekat dodatka akcije interfejsa.

Dodaci za podešavanja

class calibre.customize.PreferencesPlugin(plugin_path)[изворни код]

Bases: Plugin

Dodatak koji predstavlja vidžet prikazan u dijalogu Podešavanja.

Ovaj dodatak ima samo jednu važnu metodu create_widget(). Različita polja dodatka kontrolišu kako je kategorisan u korisničkom interfejsu.

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

Lista platformi na kojima ovaj dodatak radi. Na primer: ['windows', 'osx', 'linux']

author = 'Kovid Goyal'

Autor ovog dodatka

type = 'Podešavanja'

Tip ovog dodatka. Koristi se za kategorizaciju dodataka u GUI-ju

config_widget = None

Putanja za uvoz modula koji sadrži klasu pod nazivom ConfigWidget koja implementira ConfigWidgetInterface. Koristi ga create_widget().

category_order = 100

Gde u listi kategorija treba da bude category ovog dodatka.

name_order = 100

Gde u listi imena u kategoriji treba da bude gui_name ovog dodatka

category = None

Kategorija u kojoj bi ovaj dodatak trebalo da bude

gui_category = None

Ime kategorije koje se prikazuje korisniku za ovaj dodatak

gui_name = None

Ime koje se prikazuje korisniku za ovaj dodatak

icon = None

Ikona za ovaj dodatak, treba da bude apsolutna putanja

description = None

Opis koji se koristi za oblačiće i slično

create_widget(parent=None)[изворни код]

Kreirajte i vratite stvarni Qt vidžet koji se koristi za podešavanje ove grupe postavki. Vidžet mora implementirati calibre.gui2.preferences.ConfigWidgetInterface.

Podrazumevana implementacija koristi config_widget za instanciranje vidžeta.

class calibre.gui2.preferences.ConfigWidgetInterface[изворни код]

Ova klasa definiše interfejs koji svi vidžeti prikazani u dijalogu Postavke moraju implementirati. Pogledajte ConfigWidgetBase za osnovnu klasu koja implementira ovaj interfejs i takođe definiše razne metode pogodnosti.

changed_signal = None

Ovaj signal mora biti emitovan kad god korisnik promeni vrednost u ovom vidžetu

supports_restoring_to_defaults = True

Postavite na True ako i samo ako je restore_to_defaults() metoda implementirana.

restore_defaults_desc = 'Vratite podešavanja na podrazumevane vrednosti. Morate da kliknete na Primeni da bi ih zaista i sačuvali.'

Opis alatke za dugme "Vrati na podrazumevano"

restart_critical = False

Ako je True, dijalog za podešavanja neće dozvoliti korisniku da postavi više podešavanja. Ima efekta samo ako commit() vrati True.

genesis(gui)[изворни код]

Poziva se jednom pre nego što se vidžet prikaže, treba da izvrši sva neophodna podešavanja.

Параметри:

gui -- Glavni grafički korisnički interfejs calibre-a

initialize()[изворни код]

Treba da postavi sve vrednosti konfiguracije na njihove početne vrednosti (vrednosti sačuvane u konfiguracionim fajlovima). "return" izjava je opciona. Vrati False ako dijalog ne treba da se prikaže.

restore_defaults()[изворни код]

Treba da postavi sve vrednosti konfiguracije na njihove podrazumevane vrednosti.

commit()[изворни код]

Sačuvajte sva promenjena podešavanja. Vratite True ako je za promene potrebno ponovno pokretanje, a inače False. Ako dođe do greške, podignite izuzetak AbortCommit. Korisniku treba da objasnite šta je pošlo naopako i kako to može da ispravi.

refresh_gui(gui)[изворни код]

Poziva se jednom nakon što je ovaj vidžet potvrđen. Odgovoran za to da gui ponovo pročita sva promenjena podešavanja. Imajte na umu da po podrazumevanom GUI ionako ponovo inicijalizuje različite elemente, tako da većina vidžeta neće morati da koristi ovu metodu.

initial_tab_changed()[изворни код]

Poziva se ako se početno prikazana kartica promeni pre nego što se vidžet prikaže, ali nakon što je inicijalizovan.

class calibre.gui2.preferences.ConfigWidgetBase(parent=None)[изворни код]

Osnovna klasa koja sadrži kod za lako dodavanje standardnih konfiguracionih vidžeta kao što su polja za potvrdu, padajuće liste, tekstualna polja i tako dalje. Pogledajte register() metodu.

Ova klasa automatski obrađuje obaveštenja o promenama, resetovanje na podrazumevano, prevođenje između gui objekata i konfiguracionih objekata, itd. za registrovana podešavanja.

Ako vaš konfiguracioni vidžet nasleđuje ovu klasu, ali uključuje podešavanja koja nisu registrovana, trebalo bi da premostite metode ConfigWidgetInterface i pozovete metode osnovne klase unutar premošćavanja.

changed_signal

Ovaj signal mora biti emitovan kad god korisnik promeni vrednost u ovom vidžetu

supports_restoring_to_defaults = True

Postavite na True ako i samo ako je restore_to_defaults() metoda implementirana.

restart_critical = False

Ako je True, dijalog za podešavanja neće dozvoliti korisniku da postavi više podešavanja. Ima efekta samo ako commit() vrati True.

register(name, config_obj, gui_name=None, choices=None, restart_required=False, empty_string_is_None=True, setting=<class 'calibre.gui2.preferences.Setting'>)[изворни код]

Registrujte podešavanje.

Параметри:
  • name -- Ime podešavanja

  • config_obj -- Konfiguracioni objekat koji čita/piše podešavanje

  • gui_name -- Ime GUI objekta koji predstavlja interfejs za promenu podešavanja. Podrazumevano se pretpostavlja da je 'opt_' + name.

  • choices -- Ako je ovo podešavanje zasnovano na višestrukom izboru (combobox), lista izbora. Lista je lista torki od dva elementa u obliku: [(gui name, value), ...]

  • setting -- Klasa odgovorna za upravljanje ovim podešavanjem. Podrazumevana klasa obrađuje skoro sve slučajeve, tako da se ovaj parametar retko koristi.

initialize()[изворни код]

Treba da postavi sve vrednosti konfiguracije na njihove početne vrednosti (vrednosti sačuvane u konfiguracionim fajlovima). "return" izjava je opciona. Vrati False ako dijalog ne treba da se prikaže.

commit(*args)[изворни код]

Sačuvajte sva promenjena podešavanja. Vratite True ako je za promene potrebno ponovno pokretanje, a inače False. Ako dođe do greške, podignite izuzetak AbortCommit. Korisniku treba da objasnite šta je pošlo naopako i kako to može da ispravi.

restore_defaults(*args)[изворни код]

Treba da postavi sve vrednosti konfiguracije na njihove podrazumevane vrednosti.