API-dokumentation för insticksmoduler

Definierar olika abstrakta basklasser som du kan skapa underklasser av för att utveckla kraftfulla insticksmoduler. De användbara klasserna är:

Plugin

class calibre.customize.Plugin(plugin_path: str | None)[source]

En insticksmodul för calibre. Användbara medlemmar är:

  • self.installation_type: Lagrar hur insticksmodulen installerades.

  • self.plugin_path: Lagrar sökväg till ZIP-filen som innehåller

    denna insticksmodul eller None om den är en inbyggd insticksmodul

  • self.site_customization: Lagrar en anpassningssträng som har angetts

    av användaren.

Metoder som ska åsidosättas i underklasser:

Användbara metoder:

supported_platforms = []

Lista över plattformar som den här insticksmodulen fungerar på. Till exempel: ['windows', 'osx', 'linux']

name = 'Trivial Plugin'

Namnet på denna insticksmodul. Du måste ange något annat än Trivial Plugin för att den ska fungera.

version = (1, 0, 0)

Insticksmodulens version som en tupel med tre element (major, minor, revision)

description = 'Gör absolut ingenting'

En kort sträng som beskriver vad denna insticksmodul gör

author = 'Okänd'

Insticksmodulens upphovsperson

priority = 1

När flera insticksmoduler finns för samma filtyp körs de i fallande prioritetsordning. Moduler med högre prioritet körs först. Högsta möjliga prioritet är sys.maxsize. Standardprioriteten är 1.

minimum_calibre_version = (0, 4, 118)

Den tidigaste versionen av calibre som denna insticksmodul kräver

installation_type: PluginInstallationType | None = None

Hur denna insticksmodul är installerad

can_be_disabled = True

Om False kan användaren inte inaktivera denna insticksmodul. Använd med försiktighet.

type = 'Grund'

Insticksmodulens typ. Används för att kategorisera insticksmoduler i användargränssnittet.

initialize() → None[source]

Anropas en gång när calibres insticksmoduler initieras. Insticksmodulerna initieras på nytt varje gång en ny insticksmodul läggs till. Om insticksmodulen körs i en arbetsprocess, till exempel för att lägga till böcker, initieras den för varje ny arbetsprocess.

Utför eventuell initiering som är specifik för insticksmodulen här, till exempel att packa upp resurser från insticksmodulens ZIP-fil. Sökvägen till ZIP-filen finns i self.plugin_path.

Observera att self.site_customization inte är tillgänglig vid detta tillfälle.

config_widget() → QWidget | __annotationlib_name_1__[source]

Implementera denna metod och save_settings() i din insticksmodul för att använda en anpassad konfigurationsdialog, snarare än att förlita sig på en enkel strängbaserad standardanpassning.

Om metoden implementeras måste den returnera en QWidget. Komponenten kan ha en valfri metod validate() utan argument, som anropas direkt efter att användaren klickat på OK. Ändringarna tillämpas endast om metoden returnerar True.

Om du av någon anledning inte kan utföra konfigurationen nu ska du returnera en tupel med två strängar (message, details). Dessa visas i en varningsdialogruta för användaren och processen avbryts.

save_settings(config_widget: QWidget) → None[source]

Spara inställningarna som anges av användaren med config_widget.

Parametrar:

config_widget – Gränssnittskomponenten som returneras av config_widget().

do_user_config(parent: QWidget | None = None) → int[source]

Denna metod visar en inställningsdialogruta för denna insticksmodul. Den returnerar True om användaren klickar på OK, annars False. Ändringarna tillämpas automatiskt.

load_resources(names: Collection[__annotationlib_name_1__]) → dict[str, bytes][source]

Om insticksmodulen levereras i en ZIP-fil (en insticksmodul som lagts till av användaren) kan du använda denna metod för att läsa in resurser från ZIP-filen.

Till exempel kan du läsa in en bild så här:

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

names – Förteckning över sökvägar till resurser i ZIP-filen som använder / som avskiljare

Returer:

En ordbok av formen {name: file_contents}. Namn som inte finns i ZIP-filen kommer inte att vara närvarande i ordboken.

customization_help(gui: bool = False) → str[source]

Returnera en hjälptext om hur insticksmodulen anpassas. Standardimplementeringen genererar NotImplementedError, vilket anger att modulen inte behöver anpassas.

Om du implementerar denna metod på nytt i underklassen ombeds användaren att ange en anpassningssträng för insticksmodulen. Strängen blir tillgänglig som self.site_customization.

Den lokala anpassningen kan vara vad som helst, till exempel sökvägen till en nödvändig körbar fil på användarens dator.

Parametrar:

gui – Om True returneras HTML-hjälp, annars returneras oformaterad hjälptext.

temporary_file(suffix: str) → PersistentTemporaryFile[source]

Returnera ett filliknande objekt som motsvarar en tillfällig fil i filsystemet. Filen finns kvar även efter att den har stängts och tas bort först när tolken avslutas. Använd medlemmen name i det returnerade objektet för att komma åt hela sökvägen till den skapade tillfälliga filen.

Parametrar:

suffix – Suffixet som den tillfälliga filen ska ha.

cli_main(args: list[str]) → None[source]

Denna metod är huvudingången till insticksmodulens kommandoradsgränssnitt. Den anropas när användaren kör: calibre-debug -r ”Plugin Name”. Eventuella argument som skickas finns i variabeln args.

FileTypePlugin

class calibre.customize.FileTypePlugin(plugin_path: str | None)[source]

Baser: Plugin

En insticksmodul som är associerad med en viss uppsättning filtyper.

file_types = {}

En mängd med filtyper som insticksmodulen ska köras för. Använd ’*’ för alla filtyper. Till exempel: {'lit', 'mobi', 'prc'}

on_import = False

Om True, körs denna insticksmodul när böcker läggs till i databasen

on_postimport = False

Om True körs denna insticksmodul efter att böcker har lagts till i databasen. Då anropas insticksmodulens metoder postimport och postadd.

on_postconvert = False

Om True körs insticksmodulen efter att en bok har konverterats. Då anropas insticksmodulens metod postconvert.

on_postdelete = False

Om True körs insticksmodulen efter att en bokfil har tagits bort från databasen. Då anropas insticksmodulens metod postdelete.

on_preprocess = False

Om True, körs denna insticksmodul alldeles innan en konvertering

on_postprocess = False

Om True, körs denna insticksmodul efter konvertering på den slutliga filen som produceras av insticksmodulen för konverteringsutmatning.

type = 'Filtyp'

Insticksmodulens typ. Används för att kategorisera insticksmoduler i användargränssnittet.

original_path_to_file: str

Sökvägen till originalfilen, innan några filtypsinsticksmoduler körs. Anges precis innan run() anropas.

run(path_to_ebook: str) → str[source]

Kör insticksmodulen. Metoden måste implementeras i underklasser. Den ska göra nödvändiga ändringar i e-boken och returnera den absoluta sökvägen till den ändrade filen. Om inga ändringar behövs returneras sökvägen till originalfilen. Om ett fel uppstår ska ett undantag genereras. Standardimplementeringen returnerar originalfilens sökväg. Sökvägen före körning av filtypsinsticksmoduler finns i self.original_path_to_file.

Den ändrade e-bokfilen ska skapas med metoden temporary_file().

Parametrar:

path_to_ebook – Absolut sökväg till e-boken.

Returer:

Absolut sökväg till den modifierade e-boken.

postimport(book_id: int, book_format: str, db: FileTypePluginDB) → None[source]

Anropas efter import, dvs. efter att bokfilen har lagts till i databasen. Observera att detta skiljer sig från postadd(), som anropas när bokposten skapas för första gången. Denna metod anropas varje gång en ny fil läggs till i en bokpost. Den är användbar för att ändra bokposten utifrån innehållet i den nytillagda filen.

Parametrar:
  • book_id – Databas-ID för den tillagda boken.

  • book_format – Filtypen för boken som lades till.

  • db – Biblioteksdatabas.

postconvert(book_id: int, book_format: str, db: FileTypePluginDB) → None[source]

Anropas efter konvertering, när den konverterade bokfilen har lagts till i databasen. Metoden körs endast efter en konvertering, inte när en bok läggs till. Den är användbar för att ändra bokposten utifrån innehållet i den nytillagda filen.

Parametrar:
  • book_id – Databas-ID för den tillagda boken.

  • book_format – Filtypen för boken som lades till.

  • db – Biblioteksdatabas.

postdelete(book_id: int, book_format: str, db: FileTypePluginDB) → None[source]

Anropas efter borttagning, när bokfilen har tagits bort från databasen. Metoden körs när ett eller flera format tas bort från en bok, men inte när själva bokposten tas bort. Den är användbar för att ändra bokposten utifrån den borttagna filens format.

Parametrar:
  • book_id – Databas-ID för den tillagda boken.

  • book_format – Filtypen för boken som lades till.

  • db – Biblioteksdatabas.

postadd(book_id: int, fmt_map: dict[str, str], db: FileTypePluginDB) → None[source]

Anropas efter att en bok har lagts till i databasen. Detta skiljer sig från postimport(), som anropas efter att en enskild bokfil har lagts till i en bok. postadd() anropas endast när en hel bokpost skapas för första gången, eventuellt med flera bokfiler. Metoden är användbar för att ändra bokposten i databasen när boken först läggs till i calibre.

Parametrar:
  • book_id – Databas-ID för den tillagda boken.

  • fmt_map – Mappning från filformat till den sökväg som formatet lades till från. Observera att sökvägen inte nödvändigtvis pekar på en befintlig fil, eftersom filer ibland läggs till som strömmar. I sådana fall kan värdet vara ett platshållarvärde eller en obefintlig sökväg.

  • db – Biblioteksdatabas

Metadatainsticksmoduler

class calibre.customize.MetadataReaderPlugin(plugin_path: str | None)[source]

Baser: Plugin

En insticksmodul som implementerar läsning av metadata från en uppsättning filtyper.

file_types = {}

En mängd med filtyper som insticksmodulen ska köras för. Till exempel: set(['lit', 'mobi', 'prc'])

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

Lista över plattformar som den här insticksmodulen fungerar på. Till exempel: ['windows', 'osx', 'linux']

version = (9, 18, 0)

Insticksmodulens version som en tupel med tre element (major, minor, revision)

author = 'Kovid Goyal'

Insticksmodulens upphovsperson

type = 'Metadataläsare'

Insticksmodulens typ. Används för att kategorisera insticksmoduler i användargränssnittet.

get_metadata(stream: IO[__annotationlib_name_1__], type: str) → Metadata | None[source]

Returnera metadata för filen som representeras av stream, ett filliknande objekt som stöder läsning. Generera ett undantag om indata är felaktiga.

Parametrar:

type – Filtypen. Garanterat en av posterna i file_types.

Returer:

Ett calibre.ebooks.metadata.book.Metadata-objekt

class calibre.customize.MetadataWriterPlugin(plugin_path: str | None)[source]

Baser: Plugin

En insticksmodul som implementerar läsning av metadata från en uppsättning filtyper.

file_types = {}

En mängd med filtyper som insticksmodulen ska köras för. Till exempel: set(['lit', 'mobi', 'prc'])

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

Lista över plattformar som den här insticksmodulen fungerar på. Till exempel: ['windows', 'osx', 'linux']

version = (9, 18, 0)

Insticksmodulens version som en tupel med tre element (major, minor, revision)

author = 'Kovid Goyal'

Insticksmodulens upphovsperson

type = 'Metadataskrivare'

Insticksmodulens typ. Används för att kategorisera insticksmoduler i användargränssnittet.

set_metadata(stream: IO[__annotationlib_name_1__], mi: Metadata, type: str) → None[source]

Ange metadata för filen som representeras av stream, ett filliknande objekt som kan läsas. Generera ett undantag om indata är felaktiga.

Parametrar:
  • type – Filtypen. Garanterat en av posterna i file_types.

  • mi – Ett calibre.ebooks.metadata.book.Metadata-objekt

Kataloginsticksmoduler

class calibre.customize.CatalogPlugin(plugin_path: str | None)[source]

Baser: Plugin

En insticksmodul som implementerar en kataloggenerator.

file_types = {}

Utmatningsfiltypen som insticksmodulen ska köras för. Till exempel: ’epub’ eller ’xml’

type = 'Kataloggenerator'

Insticksmodulens typ. Används för att kategorisera insticksmoduler i användargränssnittet.

cli_options = []

Alternativ för kommandoradstolken som är specifika för denna insticksmodul, deklarerade som 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() → None[source]

Om insticksmodulen inte är inbyggd kopierar du dess .ui- och .py-filer från ZIP-filen till $TMPDIR. En flik skapas dynamiskt och läggs till i dialogrutan Katalogalternativ i calibre.gui2.dialogs.catalog.py:Catalog.

run(path_to_output: str, opts: Values, db: LibraryDatabase, ids: Collection[__annotationlib_name_1__] | None = None, notification: Callable[[float, str], object] | None = None) → object[source]

Kör insticksmodulen. Metoden måste implementeras i underklasser. Den ska skapa katalogen i det format som anges i file_types och returnera den absoluta sökvägen till katalogfilen. Om ett fel uppstår ska ett undantag genereras.

Den genererade katalogfilen ska skapas med metoden temporary_file().

Parametrar:
  • path_to_output – Absoluta sökvägen till den genererade katalogfilen.

  • opts – En ordbok med nyckelordsargument

  • db – Ett LibraryDatabase2-objekt

Insticksmoduler för metadatahämtning

class calibre.ebooks.metadata.sources.base.Source(*args: str | None, **kwargs: str | None)[source]

Baser: Plugin

type = 'Metadatakälla'

Insticksmodulens typ. Används för att kategorisera insticksmoduler i användargränssnittet.

author = 'Kovid Goyal'

Insticksmodulens upphovsperson

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

Lista över plattformar som den här insticksmodulen fungerar på. Till exempel: ['windows', 'osx', 'linux']

capabilities: frozenset[str] = frozenset({})

Uppsättning funktioner som stöds av denna insticksmodul. Användbara funktioner är: ”identify”, ”cover”

touched_fields: frozenset[str] = frozenset({})

Lista med metadatafält som potentiellt kan hämtas av denna insticksmodul under identifieringsfasen

has_html_comments = False

Ange detta som True om din insticksmodul returnerar HTML-formaterade kommentarer

supports_gzip_transfer_encoding = False

Om värdet är True anger webbläsarobjektet att det stöder gzip-överföringskodning. Det kan göra hämtningarna snabbare, men kontrollera först att källan stöder gzip-överföringskodning korrekt.

ignore_ssl_errors = False

Ställ in detta till True för att ignorera HTTPS-certifikatfel när du ansluter till den här källan.

cached_cover_url_is_reliable = True

Cachelagrade omslags-URL:er kan ibland vara opålitliga, exempelvis genom att hämtningen misslyckas eller den returnerade bilden är ogiltig. Om detta ofta inträffar med källan anger du False

options: Sequence[Option] = ()

En lista med Option-objekt. De används för att automatiskt skapa insticksmodulens konfigurationskomponent.

config_help_message: str | None = None

En sträng som visas högst upp på gränssnittskomponenten för denna insticksmodul

can_get_multiple_covers = False

Om True kan denna källa returnera flera omslag för en viss förfrågan

auto_trim_covers = False

Om inställt till True beskärs hämtade omslag automatiskt med denna insticksmodul.

prefer_results_with_isbn = True

Om värdet är True och denna källa returnerar flera resultat för en förfrågan, varav vissa har ISBN och andra saknar det, ignoreras resultaten utan ISBN

uses_camoufox_worker = False

Om detta sätts till True använder källan Camoufox-webbläsaren som delas av alla metadatahämtningar, se calibre.web.automate.metadata. Webbläsaren startas då innan metadata hämtas, så att den är redo i tid. När det första resultatet från någon källa kommer in väntar programmet också längre på sådana källor, eftersom hämtning med en webbläsare går långsamt.

dl_time_spent: float

Antalet sekunder som den senaste körningen av identify() tog, anges av calibre.ebooks.metadata.sources.identify.identify()

is_configured() → bool[source]

Returnera False om din insticksmodul måste anpassas innan den kan användas. Till exempel kan den behöva ett användarnamn/lösenord/API-nyckel.

customization_help(gui: bool = False) → str[source]

Returnera en hjälptext om hur insticksmodulen anpassas. Standardimplementeringen genererar NotImplementedError, vilket anger att modulen inte behöver anpassas.

Om du implementerar denna metod på nytt i underklassen ombeds användaren att ange en anpassningssträng för insticksmodulen. Strängen blir tillgänglig som self.site_customization.

Den lokala anpassningen kan vara vad som helst, till exempel sökvägen till en nödvändig körbar fil på användarens dator.

Parametrar:

gui – Om True returneras HTML-hjälp, annars returneras oformaterad hjälptext.

config_widget() → ConfigWidget[source]

Implementera denna metod och save_settings() i din insticksmodul för att använda en anpassad konfigurationsdialog, snarare än att förlita sig på en enkel strängbaserad standardanpassning.

Om metoden implementeras måste den returnera en QWidget. Komponenten kan ha en valfri metod validate() utan argument, som anropas direkt efter att användaren klickat på OK. Ändringarna tillämpas endast om metoden returnerar True.

Om du av någon anledning inte kan utföra konfigurationen nu ska du returnera en tupel med två strängar (message, details). Dessa visas i en varningsdialogruta för användaren och processen avbryts.

save_settings(config_widget: QWidget) → None[source]

Spara inställningarna som anges av användaren med config_widget.

Parametrar:

config_widget – Gränssnittskomponenten som returneras av config_widget().

get_author_tokens(authors: Sequence[str] | None, only_first_author: bool = True) → Iterator[str][source]

Ta en lista över författare och returnera en lista med söktermer som kan användas i en AND-sökning. Funktionen försöker ordna termerna som förnamn, mellannamn och efternamn. Om ett författarnamn innehåller ett kommatecken antas det ha formen efternamn, övriga namn.

get_title_tokens(title: str | None, strip_joiners: bool = True, strip_subtitle: bool = False) → Iterator[str][source]

Ta en titel och returnera en lista med söktermer som kan användas i en AND-sökning. Skiljetecken och, valfritt, bindeord utelämnas.

split_jobs(jobs: Iterable, num: int) → list[list[T]][source]

Dela upp en lista med jobb i högst num grupper, så jämnt som möjligt

test_fields(mi: Metadata) → str | None[source]

Returnera det första fältet i self.touched_fields som är null i mi-objektet.

clean_downloaded_metadata(mi: Metadata) → None[source]

Anropa denna metod från insticksmodulens identify-metod för att normalisera metadata innan Metadata-objektet placeras i result_queue. Du kan naturligtvis använda en egen algoritm som passar metadatakällan.

get_book_url(identifiers: Identifiers) → BookURL | None[source]

Returnera en 3-tupel eller None. Tupeln ska ha formen (identifier_type, identifier_value, URL). URL är adressen till den bok som motsvarar identifieraren hos den här källan. identifier_type och identifier_value anger identifierarens typ och värde. URL:en måste kunna öppnas av en användare i en webbläsare och är avsedd att fungera som en klickbar länk till bokens sida hos källan. Returnera None om ingen URL hittas. Metoden måste vara snabb och ge konsekventa resultat, så implementera den bara om URL:en kan konstrueras enligt ett känt schema från identifierarna.

get_book_url_name(idtype: str, idval: str, url: str) → str[source]

Returnera ett läsbart namn utifrån returvärdet från get_book_url().

get_book_urls(identifiers: Identifiers) → Sequence[BookURL][source]

Åsidosätt den här metoden om du vill returnera flera URL:er för den här boken. Returnera en lista med 3-tupler. Som standard anropar den här metoden helt enkelt get_book_url().

get_cached_cover_url(identifiers: Identifiers) → str | None[source]

Returnera den cachelagrade omslags-URL:en för boken som identifieras av identifierarordboken, eller None om ingen sådan URL finns.

Observera att metoden endast får returnera validerade URL:er, inte URL:er som kan ge en generisk omslagsbild eller ett ”hittades inte”-fel.

id_from_url(url: str) → tuple[str, str] | None[source]

Analysera en URL och returnera en tupel av formen: (identifier_type, identifier_value). Om URL:en inte matchar mönstret för metadatakällan, returnera None.

identify_results_keygen(title: str | None = None, authors: Sequence[str] | None = None, identifiers: Identifiers | None = None) → Callable[[Metadata], InternalMetadataCompareKeyGen][source]

Returnera en funktion som skapar en nyckel för att sortera Metadata-objekt efter relevans för en sökfråga (title, authors, identifiers).

Dessa nycklar används för att sortera resultatet av ett anrop till identify().

Mer information om standardalgoritmen finns i InternalMetadataCompareKeyGen. Implementera funktionen på nytt i insticksmodulen om standardalgoritmen inte är lämplig.

identify(log: Log, result_queue: IdentifyQueue, abort: Event, title: str | None = None, authors: Sequence[str] | None = None, identifiers: Identifiers | None = None, timeout: float = 30) → str | None[source]

Identifiera en bok med dess titel/författare/ISBN/etc.

Om en eller flera identifierare anges men ingen träff hittas, och metadatakällan inte lagrar alla relaterade identifierare (till exempel alla ISBN för en bok), bör metoden försöka igen med enbart titel och författare, förutsatt att dessa har angetts.

Om metadatakällan också tillhandahåller omslag bör omslagets URL cachelagras, så att ett senare anrop till API:et för omslagshämtning med samma ISBN eller särskilda identifierare inte behöver hämta omslagets URL igen. Använd cache-API:et för detta.

Varje Metadata-objekt som denna metod placerar i result_queue måste ha attributet source_relevance. Det ska vara ett heltal som anger i vilken ordning metadatakällan returnerade resultaten för sökfrågan. Heltalet används av compare_identify_results(). Om ordningen saknar betydelse anger du noll för alla resultat.

Se till att all information om kopplingen mellan omslag och ISBN cachelagras innan Metadata-objektet placeras i result_queue.

Parametrar:
  • log – Ett loggobjekt som används för att skriva felsökningsinformation och fel

  • result_queue – En resultatkö (Queue) där resultaten ska placeras. Varje resultat är ett Metadata-objekt.

  • abort – Om abort.is_set() returnerar True ska du avbryta fortsatt bearbetning och returnera så snart som möjligt

  • title – Titeln på boken, kan vara None

  • authors – En lista med bokens författare, kan vara None

  • identifiers – En ordbok med andra identifierare, oftast {’isbn’:’1234…’}

  • timeout – Tidsbegränsning i sekunder, ingen nätverksförfrågan ska dröja längre än tidsbegränsningen.

Returer:

None om inga fel har inträffat, annars en Unicode-representation av felet som är lämplig för att visa för användaren

download_cover(log: Log, result_queue: CoverQueue, abort: Event, title: str | None = None, authors: Sequence[str] | None = None, identifiers: Identifiers | None = None, timeout: float = 30, get_best_cover: bool = False) → None[source]

Hämta ett omslag och placera det i result_queue. Alla parametrar har samma betydelse som för identify(). Placera (self, cover_data) i result_queue.

Metoden bör om möjligt använda cachelagrade omslags-URL:er för effektivitetens skull. Om cachelagrade data saknas anropar de flesta insticksmoduler identify och använder dess resultat.

Om parametern get_best_cover är True och insticksmodulen kan hämta flera omslag ska den endast hämta det bästa.

class calibre.ebooks.metadata.sources.base.InternalMetadataCompareKeyGen(mi: Metadata, source_plugin: Source, title: str | None, authors: Sequence[str] | None, identifiers: Identifiers)[source]

Skapa en sorteringsnyckel för att jämföra Metadata-objektens relevans för en sökfråga. Nyckeln används endast för att jämföra resultat från samma metadatakälla, inte mellan olika källor.

Sorteringsnyckeln gör att stigande sortering efter nyckeln ger fallande relevans.

Algoritmen är:

  • Föredra resultat som har åtminstone en identifierare som är samma som för förfrågan

  • Föredra resultat med en cachad omslags-URL

  • Föredra resultat med alla tillgängliga fält ifyllda

  • Föredra resultat på samma språk som det aktuella användargränssnittet

  • Föredra resultat som är en exakt titelmatchning på förfrågan

  • Föredra resultat med längre kommentarer (mer än 10% längre)

  • Använd den relevans som anges av metadatakällans

    sökmotor

Konverteringsinsticksmoduler

class calibre.customize.conversion.InputFormatPlugin(plugin_path: str | None)[source]

Baser: Plugin

InputFormatPlugins ansvarar för att konvertera ett dokument till HTML+OPF+CSS+etc. Resultatet av konverteringen måste kodas i UTF-8. Huvudarbetet utförs i convert().

type = 'Konverteringsinmatning'

Insticksmodulens typ. Används för att kategorisera insticksmoduler i användargränssnittet.

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

Lista över plattformar som den här insticksmodulen fungerar på. Till exempel: ['windows', 'osx', 'linux']

file_types = {}

En mängd med filtyper som insticksmodulen ska köras för. Till exempel: set(['azw', 'mobi', 'prc'])

is_image_collection = False

Om True skapar denna inmatningsinsticksmodul en bildsamling med en bild per HTML-fil. Värdet kan anges dynamiskt i metoden convert om indatafilerna kan vara både bildsamlingar och andra typer av innehåll. Om du anger True måste du implementera metoden get_images(), som returnerar en lista med bilder.

core_usage = 1

Antal CPU-kärnor som används av denna insticksmodul. Ett värde av -1 betyder att den använder alla tillgängliga kärnor

for_viewer = False

Om True utför inmatningsinsticksmodulen särskild bearbetning för att göra resultatet lämpligt för visning.

output_encoding = 'utf-8'

Teckenkodningen som inmatningsinsticksmodulen skapar filer med. None innebär att kodningen är odefinierad och måste identifieras separat för varje fil.

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

Alternativ som delas av alla inmatningsformatsinsticksmoduler. Åsidosätt inte dessa i underklasser. Använd options i stället. Varje alternativ måste vara en instans av OptionRecommendation.

options = {}

Alternativ för att anpassa beteendet för denna insticksmodul. Varje alternativ ska vara en instans av OptionRecommendation.

recommendations = {}

En uppsättning av 3-tupler av formen (option_name, recommended_value, recommendation_level)

get_images() → list[str][source]

Returnera en lista med absoluta sökvägar till bilderna om inmatningsinsticksmodulen representerar en bildsamling. Bilderna anges i samma ordning som i läsordningen (spine) och innehållsförteckningen.

convert(stream: IO[bytes], options: Values, file_ext: str, log: Log, accelerators: dict[str, str]) → __annotationlib_name_1__ | OEBBook | None[source]

Denna metod måste implementeras i underklasser. Den måste returnera sökvägen till den skapade OPF-filen eller en OEBBook-instans. All utmatning ska ingå i den aktuella mappen. Om denna insticksmodul skapar filer utanför den aktuella mappen måste de tas bort/markeras för borttagning innan denna metod avslutas.

Parametrar:
  • stream – Ett filliknande objekt som innehåller indatafilen.

  • options – Alternativ för att anpassa konverteringen. Objektet har garanterat attribut för alla alternativ som insticksmodulen deklarerar. Det har dessutom attributet verbose, som tar heltalsvärden från noll och uppåt. Högre tal ger mer utförlig utmatning. Ett annat användbart attribut är input_profile, som är en instans av calibre.customize.profiles.InputProfile.

  • file_ext – Indatafilens filändelse (utan punkten). Den är garanterat en av de file_types som denna insticksmodul stöder.

  • log – Ett calibre.utils.logging.Log-objekt. All utmatning ska ske via detta objekt.

  • accelerators – En ordbok med uppgifter som inmatningsinsticksmodulen enkelt kan hämta och som kan påskynda de senare konverteringsstegen.

postprocess_book(oeb: OEBBook, opts: Values, log: Log) → None[source]

Anropas för att låta inmatningsinsticksmodulen utföra efterbehandling när boken har analyserats.

specialize(oeb: OEBBook, opts: Values, log: Log, output_fmt: str) → None[source]

Anropas för att låta inmatningsinsticksmodulen anpassa den analyserade boken till ett visst utmatningsformat. Anropet sker efter postprocess_book och innan några omvandlingar utförs på den analyserade boken.

gui_configuration_widget(parent: QWidget, get_option_by_name: Callable[[__annotationlib_name_1__], __annotationlib_name_2__], get_option_help: Callable[[__annotationlib_name_3__], __annotationlib_name_4__], db: LibraryDatabase, book_id: int | None = None) → Widget | None[source]

Anropas för att skapa gränssnittskomponenten som används för att konfigurera insticksmodulen i calibres användargränssnitt. Komponenten måste vara en instans av klassen PluginWidget. Exempel finns i de inbyggda inmatningsinsticksmodulerna.

class calibre.customize.conversion.OutputFormatPlugin(plugin_path: str | None)[source]

Baser: Plugin

OutputFormatPlugins ansvarar för att konvertera ett OEB-dokument (OPF+HTML) till en e-bok i utmatningsformatet.

OEB-dokumentet kan antas vara kodat i UTF-8. Huvudarbetet utförs i convert().

type = 'Konverteringsutmatning'

Insticksmodulens typ. Används för att kategorisera insticksmoduler i användargränssnittet.

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

Lista över plattformar som den här insticksmodulen fungerar på. Till exempel: ['windows', 'osx', 'linux']

file_type: str | None = None

Filtypen (filändelsen utan inledande punkt) som insticksmodulen producerar

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

Alternativ som delas av alla inmatningsformatsinsticksmoduler. Åsidosätt inte dessa i underklasser. Använd options i stället. Varje alternativ måste vara en instans av OptionRecommendation.

options = {}

Alternativ för att anpassa beteendet för denna insticksmodul. Varje alternativ ska vara en instans av OptionRecommendation.

recommendations = {}

En uppsättning av 3-tupler av formen (option_name, recommended_value, recommendation_level)

property description: str

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

Skapa ett nytt strängobjekt från det angivna objektet. Om encoding eller errors anges måste objektet tillhandahålla en databuffert som avkodas med den angivna teckenkodningen och felhanteringen. Annars returneras resultatet av object.__str__(), om metoden finns, eller repr(object). Standardvärdet för encoding är ’utf-8’ och för errors ’strict’.

convert(oeb_book: OEBBook, output: str, input_plugin: InputFormatPlugin, opts: Values, log: Log) → None[source]

Skriv innehållet i oeb_book (en instans av calibre.ebooks.oeb.OEBBook) till filen som anges av output.

Parametrar:
  • output – Antingen ett filliknande objekt eller en sträng. En sträng är sökvägen till en mapp som kan finnas eller saknas; utmatningsinsticksmodulen ska skriva resultatet dit. Om värdet är ett filliknande objekt ska resultatet skrivas till objektet.

  • input_plugin – Inmatningsinsticksmodulen som användes i början av konverteringsprocessen.

  • opts – Konverteringsalternativ. Objektet har garanterat attribut som motsvarar insticksmodulens OptionRecommendations.

  • log – Loggobjektet. Använd det för att skriva felsöknings- och informationsmeddelanden med mera.

specialize_options(log: Log, opts: Values, input_fmt: str) → None[source]

Kan användas för att ändra värdena för konverteringsalternativ, som används av konverteringsprocessen.

specialize_css_for_output(log: Log, opts: Values, item: Manifest.Item, stylizer: Stylizer) → None[source]

Kan användas för att göra ändringar i CSS under CSS-utplattningsprocessen.

Parametrar:
  • item – Elementet (HTML-fil) som bearbetas

  • stylizer – Ett Stylizer-objekt som innehåller de utplattade stilarna för item. Du kan hämta stilen för ett valfritt element med stylizer.style(element).

gui_configuration_widget(parent: QWidget, get_option_by_name: Callable[[__annotationlib_name_1__], __annotationlib_name_2__], get_option_help: Callable[[__annotationlib_name_3__], __annotationlib_name_4__], db: LibraryDatabase, book_id: int | None = None) → Widget | None[source]

Anropas för att skapa gränssnittskomponenten som används för att konfigurera insticksmodulen i calibres användargränssnitt. Komponenten måste vara en instans av klassen PluginWidget. Exempel finns i de inbyggda utmatningsinsticksmodulerna.

Enhetsdrivrutiner

Basklass för alla drivrutiner är DevicePlugin. Men om din enhet exponerar sig som en USBMS-enhet till operativsystemet, bör du använda USBMS-klassen i stället eftersom den genomför all logik som behövs för att stödja dessa typer av enheter.

class calibre.devices.interface.DevicePlugin(plugin_path: str | None)[source]

Baser: Plugin

Definierar gränssnittet som ska implementeras av bakomliggande system som kommunicerar med en e-boksläsare.

type = 'Enhetsgränssnitt'

Insticksmodulens typ. Används för att kategorisera insticksmoduler i användargränssnittet.

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

Ordnad lista med format som stöds

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

VENDOR_ID kan vara ett heltal, en lista med heltal eller en ordbok. Om värdet är en ordbok måste det vara en ordbok med ordböcker i följande form:

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

Ett heltal eller en lista med heltal

BCD = None

BCD kan vara None om enheter inte ska skiljas åt utifrån BCD, eller en lista med BCD-numren för alla enheter som denna drivrutin stöder.

THUMBNAIL_HEIGHT = 68

Höjd för omslagsminiatyrbilder på enheten

THUMBNAIL_COMPRESSION_QUALITY = 75

Komprimeringskvalitet för miniatyrbilder. Ange ett värde närmare 100 för högre bildkvalitet med färre komprimeringsartefakter. Filerna blir då också större.

WANTS_UPDATED_THUMBNAILS = False

Ange True om enheten stöder uppdatering av omslagsminiatyrer under sync_booklists. När värdet är True uppmanas device.py att uppdatera omslagsminiatyrerna när böcker matchas.

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

Huruvida metadata om böckerna kan ställas in via GUI.

CAN_DO_DEVICE_DB_PLUGBOARD = False

Huruvida enheten kan hantera device_db-metadatakopplingar

path_sep = '/'

Sökvägsavskiljare för sökvägar till böcker på enheten

icon = 'reader.png'

Ikon för denna enhet

class UserAnnotation(type, value)[source]

Baser: NamedTuple

type: str

Alias för fält nummer 0

value: Any

Alias för fält nummer 1

OPEN_FEEDBACK_MESSAGE = None

Om värdet inte är None visar användargränssnittet det som ett meddelande i statusfältet. Användbart om det kan ta lång tid att öppna enheten

VIRTUAL_BOOK_EXTENSIONS = frozenset({})

En uppsättning filändelser som representerar ”virtuella böcker” på enheten och därför inte kan visas, sparas eller läggas till i biblioteket. Exempel: frozenset(['kobo'])

VIRTUAL_BOOK_EXTENSION_MESSAGE = None

Meddelande som visas för användaren för filändelser som representerar virtuella böcker.

NUKE_COMMENTS = None

Om kommentarer ska tas bort ur den kopia av boken som skickas till enheten. Om värdet inte är None ska det vara en kort sträng som ersätter kommentarerna.

MANAGES_DEVICE_PRESENCE = False

Om True hanterar drivrutinen själv enhetsidentifiering, utmatning och liknande. Du måste då implementera metoderna detect_managed_devices och debug_managed_device_detection. Drivrutinen ansvarar för att upptäcka enheter och hantera en svartlista, en lista över utmatade enheter med mera. calibre anropar regelbundet detect_managed_devices(). Om metoden returnerar en upptäckt enhet anropar calibre open(). Detta sker varje gång en enhet returneras, även om tidigare anrop till open() har misslyckats. Därför måste drivrutinen hålla en egen svartlista över enheter som inte kunde öppnas. Vid utmatning anropar calibre eject(). Om nästa anrop till detect_managed_devices() sedan returnerar None anropas post_yank_cleanup().

SLOW_DRIVEINFO = False

Om True anropar calibre metoden get_driveinfo() efter att boklistorna har lästs in, för att hämta enhetsinformationen.

ASK_TO_ALLOW_CONNECT = False

Om värdet är True frågar calibre användaren första gången enheten upptäcks om enheten ska hanteras med calibre. Om du anger True måste du implementera get_device_uid(), ignore_connected_device(), get_user_blacklisted_devices() och set_user_blacklisted_devices().

user_feedback_after_callback = None

Ange detta som en ordbok av formen {’title’:title, ’msg’:msg, ’det_msg’:detailed_msg} för att låta calibre visa ett meddelande för användaren efter att vissa återanrop har körts, för närvarande endast upload_books. Var försiktig så att användaren inte får alltför många meddelanden. Variabeln kontrolleras efter varje återanrop, så ange den bara när det verkligen behövs.

classmethod get_open_popup_message() → OpenPopupMessage | None[source]

Det grafiska användargränssnittet visar detta som en icke-modal popup. Bör vara en instans av OpenPopupMessage

classmethod model_metadata() → tuple[ModelMetadata, ...][source]

Metadata om alla faktiska enhetsmodeller som denna drivrutin stöder

is_usb_connected(devices_on_system: Collection[DetectedDevice], debug: bool = False, only_presence: bool = False) → tuple[bool, DetectedDevice | None][source]

Returnera True, device_info om en enhet som hanteras av denna insticksmodul är ansluten.

Parametrar:

devices_on_system – Lista med för närvarande anslutna enheter

detect_managed_devices(devices_on_system: Collection[DetectedDevice], force_refresh: bool = False) → object[source]

Anropas bara om MANAGES_DEVICE_PRESENCE är True.

Skanna efter enheter som drivrutinen kan hantera. Om en enhet hittas ska ett enhetsobjekt returneras. Objektet skickas till metoden open() som connected_device. Returnera None om ingen enhet hittas. Det returnerade objektet kan vara vad som helst; calibre använder det inte utan skickar det endast vidare till open().

Denna metod anropas periodiskt av användargränssnittet, så se till att den inte är för resurskrävande. Använd en cache för att undvika att upprepade gånger skanna systemet.

Parametrar:
  • devices_on_system – Uppsättning av USB-enheter hittade på systemet.

  • force_refresh – Om True och drivrutinen använder en cache för att förhindra upprepad skanning måste cachen tömmas.

debug_managed_device_detection(devices_on_system: Collection[DetectedDevice], output: IO[str]) → bool[source]

Anropas bara om MANAGES_DEVICE_PRESENCE är True.

Skriv information om de enheter som identifierats i systemet till output, som är ett filliknande objekt.

Ska returnera True om en enhet upptäcktes och öppnades, annars False.

reset(key: str = '-1', log_packets: bool = False, report_progress: ProgressReporter | None = None, detected_device: DetectedDevice | None = None) → None[source]
Parametrar:
  • key – Nyckeln för att låsa upp enheten

  • log_packets – Om True loggas paketströmmen till och från enheten

  • report_progress – Funktion som anropas med framsteg i procent (tal mellan 0 och 100) för olika uppgifter. Om den anropas med -1 betyder det att uppgiften inte har någon förloppsinformation

  • detected_device – Enhetsinformation från enhetsskannaren

can_handle_windows(usbdevice: WinUSBDevice, debug: bool = False) → bool[source]

Valfri metod för ytterligare kontroller av om drivrutinen kan hantera enheten. Om den inte kan det ska False returneras. Metoden anropas först efter att leverantörs-ID, produkt-ID och bcd har matchats, så den kan utföra relativt tidskrävande kontroller. Standardimplementeringen returnerar True. Metoden anropas endast i Windows. Se även can_handle().

För USBMS-baserade enheter delegerar denna metod som standard till can_handle(). Du behöver därför bara åsidosätta can_handle() i din underklass av USBMS.

Parametrar:

usbdevice – En USB-enhet som returneras av calibre.devices.winusb.scan_usb_devices()

can_handle(device_info: USBDeviceInfo, debug: bool = False) → bool[source]

Unix-version av can_handle_windows().

Parametrar:

device_info – En tupel med (vid, pid, bcd, tillverkare, produkt, serienummer)

open(connected_device: object, library_uuid: str | None) → None[source]

Utför den enhetsspecifika initiering som behövs. Metoden anropas efter att enheten har upptäckts men före andra funktioner som kommunicerar med enheten. För USB-masslagringsenheter ansvarar den till exempel för att montera enheten eller ta reda på var den har monterats automatiskt. Implementeringen i calibre.devices.usbms.device.Device.open() är ett användbart exempel för USB-masslagringsenheter.

Metoden kan generera ett OpenFeedback-undantag för att visa ett meddelande för användaren.

Parametrar:
  • connected_device – Enheten som ska öppnas. Den anges som en tupel med (leverantörs-id, produkt-id, bcd, tillverkarnamn, produktnamn, enhetens serienummer). Vissa enheter saknar serienummer, och i Windows finns endast de tre första fälten; övriga är None.

  • library_uuid – UUID:et för det aktuella calibre-biblioteket. Kan vara None om det inte finns något bibliotek (till exempel när det används från kommandoraden).

eject() → None[source]

Avmontera eller mata ut enheten från operativsystemet. Metoden kontrollerar inte om det finns väntande jobb i användargränssnittet som behöver kommunicera med enheten.

OBS: Denna metod kan anropas från en annan tråd än de övriga enhetsmetoderna.

post_yank_cleanup() → None[source]

Anropas om användaren kopplar ur enheten utan att först mata ut den.

set_progress_reporter(report_progress: ProgressReporter) → None[source]

Ange en funktion för att rapportera förloppsinformation.

Parametrar:

report_progress – Funktion som anropas med framsteg i procent (tal mellan 0 och 100) för olika uppgifter. Om den anropas med -1 betyder det att uppgiften inte har någon förloppsinformation

get_device_information(end_session: bool = True) → DeviceInformation[source]

Begär enhetsinformation från enheten. Se L{DeviceInfoQuery}.

Returer:

(enhetsnamn, enhetsversion, mjukvaruversion på enheten, MIME-typ) Tupeln kan valfritt ha ett femte element, som är en enhetsinformationsordbok. Se usbms.driver för ett exempel.

get_driveinfo() → DriveInfo[source]

Returnera driveinfo-ordboken. Funktionen anropas vanligtvis från get_device_information(). Om det går långsamt att läsa in enhetsinformationen för drivrutinen bör den ange SLOW_DRIVEINFO. Då anropar calibre metoden efter att boklistorna har lästs in. Observera att den inte anropas från enhetstråden. Drivrutinen bör därför cachelagra enhetsinformationen i metoden books(), och den här funktionen ska returnera de cachelagrade uppgifterna.

card_prefix(end_session: bool = True) → tuple[str | None, str | None][source]

Returnera en lista med två element som innehåller prefixen för sökvägarna på korten. Om ett kort inte finns anges None som kortets prefix. Exempel: (’/place’, ’/place2’) (None, ’place2’) (’place’, None) (None, None)

total_space(end_session: bool = True) → tuple[int, int, int][source]
Hämta det totala utrymmet på monteringspunkterna:
  1. Huvudminne

  2. Minneskort A

  3. Minneskort B

Returer:

En lista med tre element som anger det totala utrymmet i byte för (1, 2, 3). Om enheten saknar någon av dessa platser ska 0 returneras för den platsen.

free_space(end_session: bool = True) → tuple[int, int, int][source]
Hämta det lediga utrymmet på monteringspunkterna:
  1. Huvudminne

  2. Kort A

  3. Kort B

Returer:

En lista med tre element som anger det lediga utrymmet i byte för (1, 2, 3). Om enheten saknar någon av dessa platser ska -1 returneras för den platsen.

books(oncard: str | None = None, end_session: bool = True) → BookList[source]

Returnera en lista med e-böcker på enheten.

Parametrar:

oncard – Om värdet är ’carda’ eller ’cardb’ returneras en lista med e-böcker på det angivna minneskortet. Annars returneras en lista med e-böcker i enhetens huvudminne. Om ett kort anges men inga böcker finns på det returneras en tom lista.

Returer:

En BookList.

upload_books(files: Sequence[str], names: Sequence[str], on_card: str | None = None, end_session: bool = True, metadata: Sequence[Metadata] | None = None) → Sequence[tuple[object, ...]][source]

Överför en lista med böcker till enheten. Om en fil redan finns ska den ersättas. Metoden ska generera FreeSpaceError om enheten inte har tillräckligt med ledigt utrymme. Feltexten för FreeSpaceError måste innehålla ordet ”card” om on_card inte är None; annars måste den innehålla ordet ”memory”.

Parametrar:
  • files – En lista med sökvägar

  • names – En lista med de filnamn som böckerna ska ha när de har överförts till enheten. len(names) == len(files)

  • metadata – Om värdet inte är None är det en lista med Metadata-objekt. Metadata används för att avgöra var boken ska placeras på enheten. len(metadata) == len(files). Förutom det vanliga omslaget (sökvägen till omslaget) kan ett thumbnail-attribut finnas och bör då användas i första hand. Attributet har formen (width, height, cover_data as jpeg).

Returer:

En lista med tupler med tre element. Listan är avsedd att skickas till add_books_to_metadata().

classmethod add_books_to_metadata(locations: Sequence[tuple[object, ...]], metadata: Sequence[Metadata], booklists: Sequence[BookList]) → None[source]

Lägg till platser i boklistorna. Denna funktion får inte kommunicera med enheten.

Parametrar:
  • locations – Resultat av ett anrop till L{upload_books}

  • metadata – Lista med Metadata-objekt, samma som för upload_books().

  • booklists – En tupel som innehåller resultaten av anropen (books(oncard=None)(), books(oncard='carda')(), books(oncard='cardb')()).

delete_books(paths: Sequence[str], end_session: bool = True) → None[source]

Ta bort böcker på de angivna sökvägarna på enheten.

classmethod remove_books_from_metadata(paths: Sequence[str], booklists: Sequence[BookList]) → None[source]

Ta bort böcker från metadatalistan. Funktionen får inte kommunicera med enheten.

Parametrar:
  • paths – sökvägar till böcker på enheten.

  • booklists – En tupel som innehåller resultaten av anropen (books(oncard=None)(), books(oncard='carda')(), books(oncard='cardb')()).

sync_booklists(booklists: Sequence[BookList | None], end_session: bool = True) → None[source]

Uppdatera metadata på enheten.

Parametrar:

booklists – En tupel som innehåller resultaten av anropen (books(oncard=None)(), books(oncard='carda')(), books(oncard='cardb')()).

get_file(path: str, outfile: IO[bytes], end_session: bool = True) → None[source]

Läs filen vid path på enheten och skriv den till outfile.

Parametrar:

outfile – ett filobjekt som sys.stdout eller resultatet av ett anrop till open().

config_widget() → QWidget[source]

Ska returnera en QWidget-gränssnittskomponent som innehåller inställningarna för enhetens gränssnitt

save_settings(config_widget: QWidget) → None[source]

Ska spara inställningarna på disken. Tar gränssnittskomponenten skapad i config_widget() och sparar alla inställningar på disken.

classmethod settings() → OptionValues[source]

Ska returnera ett opts-objekt med åtminstone attributet format_map, som är en ordnad lista över format för enheten.

set_plugboards(plugboards: dict[str, dict[str, object]], pb_func: Callable[[...], object]) → None[source]

ge drivrutinen den aktuella uppsättningen metadatakopplingar och en funktion för att välja en viss metadatakoppling. Denna metod anropas omedelbart före add_books och sync_booklists.

pb_func är anropbar med följande signatur:

def pb_func(device_name, format, plugboards)

Du anger det aktuella enhetsnamnet (antingen klassnamnet eller DEVICE_PLUGBOARD_NAME), formatet du är intresserad av (ett ’riktigt’ format eller ’device_db’) och metadatakopplingarna (som du fick från set_plugboards tillsammans med denna metod).

Returer:

None eller en enskild metadatakopplingsinstans.

set_driveinfo_name(location_code: str, name: str) → None[source]

Ange enhetens namn i driveinfo-filen till ’name’. Inställningen kvarstår tills filen återskapas eller namnet ändras igen.

För enheter som inte fungerar som diskar bör metoden implementeras utifrån de platskoder som returneras av metoden get_device_information().

prepare_addable_books(paths: list[str]) → Sequence[str | tuple[str, Exception, str]][source]

Tar en lista med sökvägar och returnerar en annan lista med sökvägar. Dessa pekar på versioner av böckerna som kan läggas till.

Om ett fel uppstår när en bok förbereds ska motsvarande position i den returnerade listan, i stället för en sökväg, innehålla en tupel med tre värden: (original_path, undantagsinstansen, traceback)

startup() → None[source]

Anropas när calibre startar enheten. Utför den initiering som behövs. Flera instanser av klassen kan skapas, så __init__ kan anropas flera gånger, men denna metod anropas endast för en instans. Anropet sker i enhetstråden, inte i användargränssnittets tråd.

shutdown() → None[source]

Anropas när calibre stängs, antingen helt eller inför en omstart. Utför nödvändig städning. Metoden anropas i enhetstråden, inte i användargränssnittets tråd.

get_device_uid() → str | None[source]

Måste returnera ett unikt id för den för närvarande anslutna enheten (detta anropas omedelbart efter ett lyckat anrop till open()). Du måste implementera den här metoden om du ställer in ASK_TO_ALLOW_CONNECT = True

ignore_connected_device(uid: str) → None[source]

Metoden ska göra så att enheten som identifieras av uid (resultatet av ett anrop till get_device_uid()) ignoreras i fortsättningen. Du måste implementera metoden om du anger ASK_TO_ALLOW_CONNECT = True. Observera att funktionen anropas omedelbart efter open(). Om open() cachelagrar ett tillstånd bör drivrutinen därför återställa det.

get_user_blacklisted_devices() → dict[str, str][source]

Returnera en mappning från enheternas uid till läsbara namn för alla enheter som användaren har valt att ignorera.

set_user_blacklisted_devices(devices: dict[str, str]) → None[source]

Ställ in listan med enheters uid:er som ska ignoreras av denna drivrutin.

specialize_global_preferences(device_prefs: DevicePrefs) → None[source]

Implementera denna metod om enheten behöver åsidosätta en viss inställning. Alla anropsställen som hämtar en inställning som kan åsidosättas måste använda device_prefs[’something’] i stället för prefs[’something’]. Metoden ska anropa device_prefs.set_overrides(pref=val, pref=val, …). Används för närvarande för metadatahantering (prefs[’manage_device_metadata’]).

set_library_info(library_name: str, library_uuid: str, field_metadata: FieldMetadata) → None[source]

Implementera den här metoden om du vill ha information om det aktuella calibre-biblioteket. Denna metod anropas vid start och när calibre-biblioteket ändras medan det är anslutet.

is_dynamically_controllable() → str | None[source]

Anropas av enhetshanteraren när insticksmoduler startas. Om metoden returnerar en sträng innebär det dels att insticksmodulen stöder enhetshanterarens dynamiska styrgränssnitt, dels att strängen ska användas som namn vid kommunikation med insticksmodulen.

Metoden kan anropas i användargränssnittets tråd. En drivrutin som implementerar den måste vara trådsäker.

start_plugin() → str | None[source]

Metoden anropas för att starta insticksmodulen. Insticksmodulen ska börja ta emot enhetsanslutningar på det sätt den använder för detta. Om insticksmodulen redan tar emot anslutningar ska inget göras. Returnera ett felmeddelande om insticksmodulen inte kunde startas, annars None.

Metoden kan anropas i användargränssnittets tråd. En drivrutin som implementerar den måste vara trådsäker.

stop_plugin() → None[source]

Anropas för att stoppa insticksmodulen. Den ska sluta ta emot anslutningar och frigöra sina resurser. Metoden bör sannolikt anropa shutdown. Om insticksmodulen redan har slutat ta emot anslutningar ska inget göras.

Metoden kan anropas i användargränssnittets tråd. En drivrutin som implementerar den måste vara trådsäker.

get_option(opt_string: str, default: object = None) → object[source]

Returnera värdet för alternativet som anges av opt_string. Metoden kan anropas även när insticksmodulen inte har startats. Returnera None om alternativet inte finns.

Metoden kan anropas i användargränssnittets tråd. En drivrutin som implementerar den måste vara trådsäker.

set_option(opt_string: str, opt_value: object) → None[source]

Ange värdet för alternativet som anges av opt_string. Metoden kan anropas även när insticksmodulen inte har startats.

Metoden kan anropas i användargränssnittets tråd. En drivrutin som implementerar den måste vara trådsäker.

is_running() → bool[source]

Returnera True om insticksmodulen har startats, annars False.

Metoden kan anropas i användargränssnittets tråd. En drivrutin som implementerar den måste vara trådsäker.

synchronize_with_db(db: LibraryDatabase, book_id: int, book_metadata: Metadata, first_call: bool) → tuple[set[int] | None, tuple[str | None, bool]][source]

Anropas vid bokmatchning när en bok på enheten matchar en bok i calibres databas. Metoden ansvarar för att synkronisera data från enheten till calibres databas (om det behövs).

Metoden ska returnera en tupel med två värden. Det första värdet är en mängd med ID:n för de calibre-böcker som ändrades om calibres databas ändrades, eller None om databasen inte ändrades. Om det första värdet är en tom mängd uppdateras metadata för boken på enheten med calibres metadata och skickas tillbaka till enheten, men boken uppdateras inte i det grafiska gränssnittet. Detta är användbart när uppgifterna i calibre är korrekta men behöver skickas till enheten.

Det andra värdet är i sig en tupel med två värden. Det första anger om ett bokformat ska skickas till enheten. Syftet är att kontrollera att boken på enheten är samma bok som i calibre. Värdet ska vara None om ingen bok ska skickas; annars ska basfilnamnet på enheten returneras, exempelvis foobar.epub. Ta med filnamnstillägget. Enhetsundersystemet skapar ett send_books-jobb för alla böcker vars returnerade värde inte är None. Om enheten använder en mall för att skapa filnamnet, vilket de flesta enheter gör, används namnet endast för att senare hämta filnamnstillägget. Det andra värdet i den returnerade tupeln anger om formatet har ett framtida datum. Returnera True om det har det, annars False. calibre visar en dialogruta med alla framtidsdaterade böcker.

Mycket viktigt: metoden anropas i användargränssnittets tråd. Den måste vara trådsäker i förhållande till enhetshanterarens tråd.

book_id: bokens calibre-ID i databasen. book_metadata: Metadata-objektet för boken från enheten. first_call: True om detta är det första anropet under en synkronisering, annars False.

class calibre.devices.interface.BookList(oncard: str | None = None, prefix: str | None = None, settings: object = None)[source]

Baser: list

En lista med böcker. Varje Book-objekt måste ha fälten

  1. title

  2. authors

  3. size (bokens filstorlek)

  4. datetime (en tupel med UTC-tid)

  5. path (sökvägen till boken på enheten)

  6. thumbnail (kan vara None). thumbnail är antingen ett str-/bytes-objekt med bilddata eller ett objekt med attributet image_path, som innehåller en absolut sökväg till bilden i plattformens eget format.

  7. tags (en lista med strängar, kan vara tom).

supports_collections() → bool[source]

Returnera True om enheten stöder samlingar för denna boklista.

add_book(book: Metadata, replace_metadata: bool) → Metadata | None[source]

Lägg till boken i boklistan. Syftet är att underhålla eventuella metadata som enheten lagrar internt. Returnera boken (ett värde som tolkas som sant) om boklistorna måste synkroniseras

remove_book(book: Metadata) → None[source]

Ta bort en bok från boklistan. Korrigera samtidigt enhetens metadata.

get_collections(collection_attributes: Sequence[str]) → dict[str, list[Metadata]][source]

Returnera en ordbok med samlingar som skapats från collection_attributes. Varje post i ordboken är på formen samlingsnamn:[lista med böcker]

Boklistan sorteras efter boktitel, utom för samlingar som har skapats från serier. För dem används series_index.

Parametrar:

collection_attributes – En lista med attribut för Book-objektet

USB-masslagringsbaserade enheter

Basklassen för sådana enheter är calibre.devices.usbms.driver.USBMS. Klassen ärver i sin tur en del av sin funktionalitet från sina basklasser, som dokumenteras nedan. En enkel USBMS-baserad drivrutin ser vanligtvis ut så här:

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: str | None)[source]

Baser: DeviceConfig, DevicePlugin

Klassen tillhandahåller gemensam logik för alla drivrutiner för enheter som presenterar sig som USB-masslagringsenheter. Den innehåller implementationer för montering och utmatning av USBMS-enheter på alla plattformar.

VENDOR_ID = 0

VENDOR_ID kan vara ett heltal, en lista med heltal eller en ordbok. Om värdet är en ordbok måste det vara en ordbok med ordböcker i följande form:

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

Ett heltal eller en lista med heltal

BCD = None

BCD kan vara None om enheter inte ska skiljas åt utifrån BCD, eller en lista med BCD-numren för alla enheter som denna drivrutin stöder.

WINDOWS_MAIN_MEM = None

Sträng som identifierar enhetens huvudminne i Windows PnP-id-strängar. Värdet kan vara None, en sträng, en lista med strängar eller ett kompilerat reguljärt uttryck.

WINDOWS_CARD_A_MEM = None

Sträng som identifierar enhetens första kort i Windows PnP-id-strängar. Värdet kan vara None, en sträng, en lista med strängar eller ett kompilerat reguljärt uttryck.

WINDOWS_CARD_B_MEM = None

Sträng som identifierar enhetens andra kort i Windows PnP-id-strängar. Värdet kan vara None, en sträng, en lista med strängar eller ett kompilerat reguljärt uttryck.

OSX_MAIN_MEM_VOL_PAT = None

Används av den nya drivrutinsidentifieringen för att skilja huvudminnet från minneskorten. Ska vara ett reguljärt uttryck som matchar huvudminnets monteringspunkt i macOS.

MAX_PATH_LEN = 250

Den maximala längden på sökvägar som skapas på enheten

NEWS_IN_FOLDER = True

Lägg nyheter i sin egen mapp

classmethod model_metadata() → tuple[ModelMetadata, ...][source]

Metadata om alla faktiska enhetsmodeller som denna drivrutin stöder

reset(key: str = '-1', log_packets: bool = False, report_progress: ProgressReporter | None = None, detected_device: DetectedDevice | None = None) → None[source]
Parametrar:
  • key – Nyckeln för att låsa upp enheten

  • log_packets – Om True loggas paketströmmen till och från enheten

  • report_progress – Funktion som anropas med framsteg i procent (tal mellan 0 och 100) för olika uppgifter. Om den anropas med -1 betyder det att uppgiften inte har någon förloppsinformation

  • detected_device – Enhetsinformation från enhetsskannaren

set_progress_reporter(report_progress: ProgressReporter | None) → None[source]

Ange en funktion för att rapportera förloppsinformation.

Parametrar:

report_progress – Funktion som anropas med framsteg i procent (tal mellan 0 och 100) för olika uppgifter. Om den anropas med -1 betyder det att uppgiften inte har någon förloppsinformation

card_prefix(end_session: bool = True) → tuple[str | None, str | None][source]

Returnera en lista med två element som innehåller prefixen för sökvägarna på korten. Om ett kort inte finns anges None som kortets prefix. Exempel: (’/place’, ’/place2’) (None, ’place2’) (’place’, None) (None, None)

total_space(end_session: bool = True) → tuple[int, int, int][source]
Hämta det totala utrymmet på monteringspunkterna:
  1. Huvudminne

  2. Minneskort A

  3. Minneskort B

Returer:

En lista med tre element som anger det totala utrymmet i byte för (1, 2, 3). Om enheten saknar någon av dessa platser ska 0 returneras för den platsen.

free_space(end_session: bool = True) → tuple[int, int, int][source]
Hämta det lediga utrymmet på monteringspunkterna:
  1. Huvudminne

  2. Kort A

  3. Kort B

Returer:

En lista med tre element som anger det lediga utrymmet i byte för (1, 2, 3). Om enheten saknar någon av dessa platser ska -1 returneras för den platsen.

windows_sort_drives(drives: dict[str, str]) → dict[str, str][source]

Anropas för att skilja huvudminnet från minneskortet på enheter där detta inte kan göras med WINDOWS_CARD_NAME, till exempel EB600.

can_handle_windows(usbdevice: WinUSBDevice, debug: bool = False) → bool[source]

Valfri metod för ytterligare kontroller av om drivrutinen kan hantera enheten. Om den inte kan det ska False returneras. Metoden anropas först efter att leverantörs-ID, produkt-ID och bcd har matchats, så den kan utföra relativt tidskrävande kontroller. Standardimplementeringen returnerar True. Metoden anropas endast i Windows. Se även can_handle().

För USBMS-baserade enheter delegerar denna metod som standard till can_handle(). Du behöver därför bara åsidosätta can_handle() i din underklass av USBMS.

Parametrar:

usbdevice – En USB-enhet som returneras av calibre.devices.winusb.scan_usb_devices()

open(connected_device: object, library_uuid: str | None) → None[source]

Utför den enhetsspecifika initiering som behövs. Metoden anropas efter att enheten har upptäckts men före andra funktioner som kommunicerar med enheten. För USB-masslagringsenheter ansvarar den till exempel för att montera enheten eller ta reda på var den har monterats automatiskt. Implementeringen i calibre.devices.usbms.device.Device.open() är ett användbart exempel för USB-masslagringsenheter.

Metoden kan generera ett OpenFeedback-undantag för att visa ett meddelande för användaren.

Parametrar:
  • connected_device – Enheten som ska öppnas. Den anges som en tupel med (leverantörs-id, produkt-id, bcd, tillverkarnamn, produktnamn, enhetens serienummer). Vissa enheter saknar serienummer, och i Windows finns endast de tre första fälten; övriga är None.

  • library_uuid – UUID:et för det aktuella calibre-biblioteket. Kan vara None om det inte finns något bibliotek (till exempel när det används från kommandoraden).

eject() → None[source]

Avmontera eller mata ut enheten från operativsystemet. Metoden kontrollerar inte om det finns väntande jobb i användargränssnittet som behöver kommunicera med enheten.

OBS: Denna metod kan anropas från en annan tråd än de övriga enhetsmetoderna.

post_yank_cleanup() → None[source]

Anropas om användaren kopplar ur enheten utan att först mata ut den.

sanitize_callback(path: str) → str[source]

Återanrop som låter enskilda drivrutiner åsidosätta den sökvägssanering som används av create_upload_path().

filename_callback(default: str, mi: Metadata) → str[source]

Återanrop som låter drivrutiner ändra det standardfilnamn som anges av create_upload_path().

sanitize_path_components(components: list[str]) → list[str][source]

Utför valfri enhetsspecifik sanering på sökvägskomponenter för filer som överförs till enheten

get_annotations(path_map: dict[int, AnnotationPathInfo]) → dict[int | str, UserAnnotation][source]

Omvandla path_map till annotation_map för filer som hittats på enheten

add_annotation_to_library(db: LibraryDatabase, db_id: int, annotation: UserAnnotation) → None[source]

Lägg till en notering i calibre-biblioteket

class calibre.devices.usbms.cli.CLI[source]
class calibre.devices.usbms.driver.USBMS(plugin_path: str | None)[source]

Baser: CLI, Device

Basklassen för alla USBMS-enheter. Implementerar logiken för att skicka, hämta, uppdatera och cachelagra metadata med mera.

description = 'Kommunicera med en läsenhet.'

En kort sträng som beskriver vad denna insticksmodul gör

author = 'John Schember'

Insticksmodulens upphovsperson

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

Lista över plattformar som den här insticksmodulen fungerar på. Till exempel: ['windows', 'osx', 'linux']

booklist_class

alias för BookList

book_class

alias för Book

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

Ordnad lista med format som stöds

CAN_SET_METADATA = []

Huruvida metadata om böckerna kan ställas in via GUI.

get_device_information(end_session: bool = True) → DeviceInformation[source]

Begär enhetsinformation från enheten. Se L{DeviceInfoQuery}.

Returer:

(enhetsnamn, enhetsversion, mjukvaruversion på enheten, MIME-typ) Tupeln kan valfritt ha ett femte element, som är en enhetsinformationsordbok. Se usbms.driver för ett exempel.

set_driveinfo_name(location_code: str, name: str) → None[source]

Ange enhetens namn i driveinfo-filen till ’name’. Inställningen kvarstår tills filen återskapas eller namnet ändras igen.

För enheter som inte fungerar som diskar bör metoden implementeras utifrån de platskoder som returneras av metoden get_device_information().

books(oncard: str | None = None, end_session: bool = True) → BookList[source]

Returnera en lista med e-böcker på enheten.

Parametrar:

oncard – Om värdet är ’carda’ eller ’cardb’ returneras en lista med e-böcker på det angivna minneskortet. Annars returneras en lista med e-böcker i enhetens huvudminne. Om ett kort anges men inga böcker finns på det returneras en tom lista.

Returer:

En BookList.

upload_books(files: Sequence[__annotationlib_name_1__], names: Sequence[__annotationlib_name_2__], on_card: str | None = None, end_session: bool = True, metadata: Sequence[Metadata] | None = None) → list[tuple[str, str | None]][source]

Överför en lista med böcker till enheten. Om en fil redan finns ska den ersättas. Metoden ska generera FreeSpaceError om enheten inte har tillräckligt med ledigt utrymme. Feltexten för FreeSpaceError måste innehålla ordet ”card” om on_card inte är None; annars måste den innehålla ordet ”memory”.

Parametrar:
  • files – En lista med sökvägar

  • names – En lista med de filnamn som böckerna ska ha när de har överförts till enheten. len(names) == len(files)

  • metadata – Om värdet inte är None är det en lista med Metadata-objekt. Metadata används för att avgöra var boken ska placeras på enheten. len(metadata) == len(files). Förutom det vanliga omslaget (sökvägen till omslaget) kan ett thumbnail-attribut finnas och bör då användas i första hand. Attributet har formen (width, height, cover_data as jpeg).

Returer:

En lista med tupler med tre element. Listan är avsedd att skickas till add_books_to_metadata().

upload_cover(path: str, filename: str, metadata: Metadata, filepath: str) → None[source]

Överför bokens omslag till enheten. Standardimplementeringen gör ingenting.

Parametrar:
  • path – Den fullständiga sökvägen till mappen där den tillhörande boken är placerad.

  • filename – Namnet på bokfilen utan ändelse.

  • metadata – metadata som hör till boken. Använd metadata.thumbnail för omslag

  • filepath – Fullständig sökväg till e-bokfilen

add_books_to_metadata(locations: Sequence[__annotationlib_name_1__], metadata: Sequence[Metadata], booklists: Sequence[_BookList]) → None[source]

Lägg till platser i boklistorna. Denna funktion får inte kommunicera med enheten.

Parametrar:
  • locations – Resultat av ett anrop till L{upload_books}

  • metadata – Lista med Metadata-objekt, samma som för upload_books().

  • booklists – En tupel som innehåller resultaten av anropen (books(oncard=None)(), books(oncard='carda')(), books(oncard='cardb')()).

delete_books(paths: Sequence[__annotationlib_name_1__], end_session: bool = True) → None[source]

Ta bort böcker på de angivna sökvägarna på enheten.

remove_books_from_metadata(paths: Sequence[__annotationlib_name_1__], booklists: Sequence[_BookList]) → None[source]

Ta bort böcker från metadatalistan. Funktionen får inte kommunicera med enheten.

Parametrar:
  • paths – sökvägar till böcker på enheten.

  • booklists – En tupel som innehåller resultaten av anropen (books(oncard=None)(), books(oncard='carda')(), books(oncard='cardb')()).

sync_booklists(booklists: Sequence[_BookList | None], end_session: bool = True) → None[source]

Uppdatera metadata på enheten.

Parametrar:

booklists – En tupel som innehåller resultaten av anropen (books(oncard=None)(), books(oncard='carda')(), books(oncard='cardb')()).

classmethod normalize_path(path: str) → str[source]
classmethod normalize_path(path: None) → None

Returnera sökvägen med plattformens egna sökvägsavskiljare

Användargränssnittsåtgärder

Om du lägger till en egen insticksmodul som ZIP-fil ska du skapa underklasser av både InterfaceActionBase och InterfaceAction. Metoden load_actual_plugin() i InterfaceActionBase-underklassen måste returnera en instans av InterfaceAction-underklassen.

class calibre.gui2.actions.InterfaceAction(parent, site_customization)[source]

Baser: QObject

En insticksmodul som representerar en åtgärd som kan utföras i det grafiska användargränssnittet. Alla poster i verktygsfältet och snabbmenyerna implementeras av dessa insticksmoduler.

Denna klass är basklassen för insticksmodulerna. För att integrera en insticksmodul med calibres insticksmodulssystem behöver du även skapa en omslutande klass som refererar till själva insticksmodulen. Exempel finns i modulen calibre.customize.builtins.

Om två InterfaceAction-objekt har samma namn får det med högre prioritet företräde.

Underklasser bör implementera metoderna genesis(), library_changed(), location_selected(), shutting_down(), initialization_complete() och tag_browser_context_action().

När insticksmodulen har initierats har den tillgång till calibres huvudanvändargränssnitt via medlemmen gui. Du kan komma åt andra insticksmoduler via deras namn, till exempel:

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

Använd attributet interface_action_base_plugin för att komma åt själva insticksmodulen. Attributet blir tillgängligt först efter att insticksmodulen har initierats. Det är användbart om du vill anropa metoder i insticksmodulsklassen, till exempel do_user_config().

Den QAction som anges av action_spec skapas automatiskt och blir tillgänglig som self.qaction.

name = 'Implement me'

Insticksmodulens namn. Om två insticksmoduler har samma namn får den med högre prioritet företräde.

priority = 1

Insticksmodulens prioritet. Om två insticksmoduler har samma namn får den med högre prioritet företräde.

popup_type = 1

Hur menyn öppnas när insticksmodulen läggs till i ett verktygsfält

auto_repeat = False

Huruvida denna åtgärd ska upprepas automatiskt när dess kortkommandotangent hålls nedtryckt.

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

På formen (text, icon_path, tooltip, kortkommando). Ikonen, verktygstipset och kortkommandot kan vara None. Kortkommandot måste vara en sträng, None eller en tupel med kortkommandon. Om värdet är None registreras inget kortkommando för åtgärden. Med en tom tupel registreras kortkommandot utan förvald tangentkombination.

action_shortcut_name = None

Om värdet inte är None används det i stället för action_spec[0] som namn när användaren anpassar kortkommandon för ovanstående åtgärdsspecifikation

action_add_menu = False

Om True, skapas en meny automatiskt och läggs till i self.qaction

action_menu_clone_qaction = False

Om True läggs en klon av self.qaction till i menyn för self.qaction. Om du vill att klonens text ska skilja sig från texten för self.qaction anger du den nya texten som värde för denna variabel

dont_add_to = frozenset({})

En mängd med platser där åtgärden inte får läggas till. Möjliga platser anges i all_locations.

dont_remove_from = frozenset({})

En mängd med platser som åtgärden inte får tas bort från. Möjliga platser anges i all_locations.

action_type = 'global'

Åtgärdstyp: ’current’ innebär att åtgärden gäller den aktuella vyn. ’global’ innebär att den gäller calibre som helhet.

accepts_drops = False

Om True kan denna InterfaceAction hantera dra och släpp-händelser. Se metoderna accept_enter_event(), accept_drag_move_event() och drop_event() för mer information.

accept_enter_event(event, mime_data) → bool[source]

Metoden ska returnera True om och endast om denna gränssnittsåtgärd kan hantera draghändelsen. Anropa inte accept eller ignore på händelsen; calibres användargränssnitt hanterar detta.

accept_drag_move_event(event, mime_data) → bool[source]

Metoden ska returnera True om och endast om denna gränssnittsåtgärd kan hantera draghändelsen. Anropa inte accept eller ignore på händelsen; calibres användargränssnitt hanterar detta.

drop_event(event, mime_data) → bool[source]

Metoden ska utföra en användbar åtgärd och returnera True om och endast om denna gränssnittsåtgärd kan hantera släpphändelsen. Anropa inte accept eller ignore på händelsen; calibres användargränssnitt hanterar detta. Utför inga blockerande eller långvariga åtgärder i funktionen. Sänd i stället en signal eller använd QTimer.singleShot och returnera snabbt. Exempel finns i de inbyggda åtgärderna.

create_menu_action(menu, unique_name, text, icon=None, shortcut=None, description=None, triggered=None, shortcut_name=None, persist_shortcut=False)[source]

Hjälpmetod för att lägga till åtgärder i en QMenu. Returnerar den skapade QAction. Åtgärden får det extra attributet calibre_shortcut_unique_name. Om attributet inte är None anger det det unika namn som åtgärden är registrerad under i kortkommandohanteraren.

Parametrar:
  • menu – Den QMenu som den nyligen skapade åtgärden läggs till i

  • unique_name – Ett globalt unikt namn för åtgärden. Gör namnet så beskrivande som möjligt. Om du är osäker kan du lägga till ett UUID i namnet.

  • text – Texten för denna åtgärd.

  • icon – Antingen en QIcon eller ett filnamn. Filnamnet skickas till den inbyggda funktionen QIcon.ic(), så du behöver inte ange den fullständiga sökvägen till bildmappen.

  • shortcut – En sträng, en lista med strängar, None eller False. False innebär att inget kortkommando registreras för åtgärden. None innebär att ett kortkommando registreras utan förvald tangentkombination. En sträng eller lista med strängar registrerar ett kortkommando med den angivna förvalda tangentkombinationen.

  • description – En beskrivning för denna åtgärd. Används för att ställa in verktygstips.

  • triggered – Ett anropbart objekt som kopplas till den skapade åtgärdens triggered-signal.

  • shortcut_name – Texten som visas för användaren när man anpassar kortkommandon för denna åtgärd. Som standard är den inställd på värdet text.

  • persist_shortcut – Kortkommandon för åtgärder som inte alltid visas, eller som är biblioteksberoende, kan försvinna när andra kortkommandon redigeras om inte persist_shortcut är True.

load_resources(names)[source]

Om insticksmodulen levereras i en ZIP-fil (en insticksmodul som lagts till av användaren) kan du använda denna metod för att läsa in resurser från ZIP-filen.

Till exempel kan du läsa in en bild så här:

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

names – Förteckning över sökvägar till resurser i ZIP-filen som använder / som avskiljare

Returer:

En ordbok med formen {name : file_contents}. Namn som inte finns i ZIP-filen kommer inte att vara närvarande i ordboken.

genesis() → None[source]

Konfigurera denna insticksmodul. Metoden anropas bara en gång under initieringen. self.gui är tillgänglig. Åtgärden som anges av action_spec finns som self.qaction.

location_selected(loc) → None[source]

Anropas när boklistan som visas i calibre ändras. För närvarande är värden för loc: library, main, card and cardb.

Metoden bör aktivera eller inaktivera åtgärden och dess underåtgärder efter vad som är lämpligt för platsen.

library_about_to_change(olddb, db) → None[source]

Anropas varje gång det aktuella biblioteket byts.

Parametrar:
  • olddb – Det LibraryDatabase-objekt som motsvarar det föregående biblioteket.

  • db – Det LibraryDatabase-objekt som motsvarar det nya biblioteket.

library_changed(db) → None[source]

Anropas varje gång det aktuella biblioteket byts.

Parametrar:

db – Det LibraryDatabase-objekt som motsvarar det aktuella biblioteket.

gui_layout_complete() → None[source]

Anropas en gång per åtgärd när layouten för huvudgränssnittet är klar. Om din åtgärd behöver göra ändringar i layouten bör de göras här snarare än i initialization_complete().

initialization_complete() → None[source]

Anropas en gång per åtgärd när initieringen av det huvudsakliga användargränssnittet är klar.

tag_browser_context_action(index)[source]

Anropas när snabbmenyn visas i taggbläddraren. index är det QModelIndex som pekar på den högerklickade posten i taggbläddraren. Kontrollera giltigheten med index.valid() och hämta det underliggande TagTreeItem-objektet med index.data(Qt.ItemDataRole.UserRole). De åtgärdsobjekt som metoden genererar läggs till i snabbmenyn.

shutting_down() → None[source]

Anropas en gång per insticksmodul när huvudanvändargränssnittet håller på att stängas. Frigör använda resurser, men undvik att blockera avslutningen under längre tid.

class calibre.customize.InterfaceActionBase(plugin_path: str | None)[source]

Baser: Plugin

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

Lista över plattformar som den här insticksmodulen fungerar på. Till exempel: ['windows', 'osx', 'linux']

author = 'Kovid Goyal'

Insticksmodulens upphovsperson

type = 'Användargränssnittsåtgärd'

Insticksmodulens typ. Används för att kategorisera insticksmoduler i användargränssnittet.

actual_plugin: str | None = None

Importsökväg till den faktiska klassen för gränssnittsåtgärden i formen module:class

load_actual_plugin(gui: Main) → InterfaceAction[source]

Metoden måste returnera själva insticksmodulsobjektet för gränssnittsåtgärden.

Inställningsinsticksmoduler

class calibre.customize.PreferencesPlugin(plugin_path: str | None)[source]

Baser: Plugin

En insticksmodul som representerar en gränssnittskomponent som visas i dialogrutan Inställningar.

Denna insticksmodul har bara en viktig metod create_widget(). De olika fälten i insticksmodulen bestämmer hur den kategoriseras i användargränssnittet.

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

Lista över plattformar som den här insticksmodulen fungerar på. Till exempel: ['windows', 'osx', 'linux']

author = 'Kovid Goyal'

Insticksmodulens upphovsperson

type = 'Inställningar'

Insticksmodulens typ. Används för att kategorisera insticksmoduler i användargränssnittet.

config_widget = None

Importsökvägen till modulen som innehåller klassen ConfigWidget, vilken implementerar ConfigWidgetInterface. Används av create_widget().

category_order = 100

Var i kategorilistan insticksmodulens category ska placeras.

name_order = 100

Var i kategorins namnlista insticksmodulens gui_name ska placeras.

category: str | None = None

Kategorin som insticksmodulen ska tillhöra

gui_category: str | None = None

Kategorinamnet som visas för användaren för denna insticksmodul

gui_name: str | None = None

Namnet som visas för användaren för denna insticksmodul

icon: str | None = None

Ikonen för denna insticksmodul bör vara en absolut sökväg

description = None

Beskrivning som används för verktygstips och liknande

create_widget(parent: QWidget | None = None) → ConfigWidgetBase[source]

Skapa och returnera den Qt-gränssnittskomponent som används för denna grupp av inställningar. Komponenten måste implementera calibre.gui2.preferences.ConfigWidgetInterface.

Standardimplementeringen använder config_widget för att skapa komponenten.

class calibre.gui2.preferences.ConfigWidgetInterface[source]

Klassen definierar det gränssnitt som alla komponenter i dialogrutan Inställningar måste implementera. Basklassen ConfigWidgetBase implementerar detta gränssnitt och erbjuder även flera hjälpmetoder.

changed_signal = None

Denna signal ska sändas när användaren ändrar ett värde i den här gränssnittskomponenten

supports_restoring_to_defaults = True

Ändra till True om och endast om metoden restore_to_defaults() är implementerad.

restore_defaults_desc = 'Återställ inställningar till standardvärden. Du måste klicka på Tillämpa för att verkligen spara standardinställningarna.'

Verktygstipset för knappen ”Återställ till standardvärden”

restart_critical = False

Om värdet är True hindrar dialogrutan Inställningar användaren från att ändra fler inställningar. Detta har endast effekt om commit() returnerar True.

genesis(gui)[source]

Anropas en gång innan gränssnittskomponenten visas och bör utföra nödvändig initiering.

Parametrar:

gui – calibres huvudanvändargränssnitt

initialize()[source]

Återställ alla konfigurationsvärden till de ursprungliga värdena i konfigurationsfilerna. En return-sats är valfri. Returnera False om dialogrutan inte ska visas.

restore_defaults() → None[source]

Bör ställa in alla konfigurationsvärden till sina standardvärden.

commit() → bool[source]

Spara ändrade inställningar. Returnera True om ändringarna kräver omstart, annars False. Generera undantaget AbortCommit om ett fel uppstår. Du ansvarar för att förklara felet för användaren och hur det kan rättas.

refresh_gui(gui) → None[source]

Anropas en gång efter att gränssnittskomponentens inställningar har sparats. Metoden ska få användargränssnittet att läsa in ändrade inställningar på nytt. Som standard initierar användargränssnittet ändå om flera av sina delar, så de flesta komponenter behöver inte använda denna metod.

initial_tab_changed() → None[source]

Anropas om den initialt visade fliken ändras innan gränssnittskomponenten visas, men efter att den har initierats.

class calibre.gui2.preferences.ConfigWidgetBase(parent=None)[source]

Basklass med kod för att enkelt lägga till vanliga konfigurationskomponenter, till exempel kryssrutor, kombinationsrutor och textfält. Se metoden register().

Den här klassen hanterar automatiskt ändringsmeddelande, återställning till standard, översättning mellan objekt i det grafiska gränssnittet och konfigurationsobjekt etc. för registrerade inställningar.

Om din konfigurationskomponent ärver från denna klass men innehåller inställningar som inte är registrerade bör du åsidosätta metoderna i ConfigWidgetInterface och anropa basklassens metoder inifrån de åsidosatta metoderna.

changed_signal

Denna signal ska sändas när användaren ändrar ett värde i den här gränssnittskomponenten

supports_restoring_to_defaults = True

Ändra till True om och endast om metoden restore_to_defaults() är implementerad.

restart_critical = False

Om värdet är True hindrar dialogrutan Inställningar användaren från att ändra fler inställningar. Detta har endast effekt om commit() returnerar True.

register(name, config_obj, gui_name=None, choices=None, restart_required=False, empty_string_is_None=True, setting=<class 'calibre.gui2.preferences.Setting'>)[source]

Registrera en inställning.

Parametrar:
  • name – Namnet på inställningen

  • config_obj – Konfigurationsobjektet som läser och skriver inställningen

  • gui_name – Namnet på det gränssnittsobjekt som används för att ändra inställningen. Standardvärdet antas vara 'opt_' + name.

  • choices – Om inställningen väljs i en kombinationsruta anges här listan över alternativ. Listan består av tupler med två element på formen [(gui name, value), ...].

  • setting – Klassen som hanterar inställningen. Standardklassen täcker nästan alla fall, så parametern används sällan.

initialize() → None[source]

Återställ alla konfigurationsvärden till de ursprungliga värdena i konfigurationsfilerna. En return-sats är valfri. Returnera False om dialogrutan inte ska visas.

commit(*args)[source]

Spara ändrade inställningar. Returnera True om ändringarna kräver omstart, annars False. Generera undantaget AbortCommit om ett fel uppstår. Du ansvarar för att förklara felet för användaren och hur det kan rättas.

restore_defaults(*args) → None[source]

Bör ställa in alla konfigurationsvärden till sina standardvärden.