Reference for all built-in template language functions

Here, we document all the built-in functions available in the calibre template language. Every function is implemented as a class in python and you can click the source links to see the source code, in case the documentation is insufficient. The functions are arranged in logical groups by type.

Arithmetic

add(x, y)

class calibre.utils.formatter_functions.BuiltinAdd[zdroj]

add(x, y) – vrací x + y. Vyvolá výjimku, když buď x nebo y nejsou čísla.

divide(x, y)

class calibre.utils.formatter_functions.BuiltinDivide[zdroj]

divide(x, y) – vrací x / y. Vyvolá výjimku, když buď x nebo y nejsou čísla.

multiply(x, y)

class calibre.utils.formatter_functions.BuiltinMultiply[zdroj]

multiply(x, y) – vrací x * y. Vyvolá výjimku, když buď x nebo y nejsou čísla.

subtract(x, y)

class calibre.utils.formatter_functions.BuiltinSubtract[zdroj]

subtract(x, y) – vrací x - y. Vyvolá výjimku, když buď x nebo y nejsou čísla.

Boolean

and(hodnota, hodnota, …)

class calibre.utils.formatter_functions.BuiltinAnd[zdroj]

and(hodnota, hodnota, …) – vrací řetězec „1“, pokud všechny hodnoty nejsou prázdné, jinak vrací prázdný řetězec. Tato funkce funguje dobře s test nebo first_non_empty. Můžete mít tolik hodnot, kolik chcete.

nebo(hodnota, hodnota, …)

class calibre.utils.formatter_functions.BuiltinOr[zdroj]

nebo(hodnota, hodnota, …) – vrací řetězec „1“, pokud jakákoliv hodnota není prázdná, jinak vrací prázdný řetězec. Tato funkce funguje dobře s test nebo first_non_empty. Můžete mít tolik hodnot, kolik chcete.

not(hodnota)

class calibre.utils.formatter_functions.BuiltinNot[zdroj]

not(hodnota) – vrací řetězec „1“, pokud je hodnota prázdná, jinak vrací prázdný řetězec. Tato funkce funguje dobře s test nebo first_non_empty.

Date functions

days_between(datum1, datum2)

class calibre.utils.formatter_functions.BuiltinDaysBetween[zdroj]

days_between(datum1, datum2) – vrací počet dní mezi datum1 a datum2. Počet je kladný, pokud je datum1 větší než datum2, jinak je záporný. Pokud datum1 nebo datum2 nejsou data, funkce vrací prázdný řetězec.

today()

class calibre.utils.formatter_functions.BuiltinToday[zdroj]

today() – vrací řetězec data pro dnešek. Tato hodnota je navržena pro použití ve format_date nebo days_between, ale může s ní být zacházeno jako s jakýmkoliv jiným řetězcem. Datum je ve formátu ISO.

Formatting values

finish_formatting(hodnota, formát, předpona, přípona)

class calibre.utils.formatter_functions.BuiltinFinishFormatting[zdroj]

finish_formatting(hodnota, formát, předpona, přípona) – použije formát, předponu a příponu na hodnotu stejným způsobem, jak bylo provedeno v šabloně jako {series_index:05.2f| - |- }. Například následující vytváří stejný výstup jako výše uvedená šablona: program: finish_formatting(field(„series_index“), „05.2f“, “ - „, “ - „)

format_date(hodnota, formát_řetězce)

class calibre.utils.formatter_functions.BuiltinFormatDate[zdroj]

format_date(hodnota, formát_řetězce) – formátuje hodnotu, což musí být datum, pomocí formát_řetězce, vrací řetězec. Kódy formátování jsou: d: den jako číslo bez úvodní nuly (1 až 31), dd: den jako číslo s úvodní nulou (01 až 31), ddd: zkrácený lokalizovaný název dne (např. „Pon“ až „Ned“), dddd: dlouhý lokalizovaný název dne (např. „Pondělí“ až „Neděle“). M: měsíc jako číslo bez úvodní nuly (1 až 12), MM: měsíc jako číslo s úvodní nulou (01 až 12), MMM: zkrácený lokalizovaný název měsíce (např. „Led“ až „Pro“), MMMM: dlouhý lokalizovaný název měsíce (např. „Leden“ až „Prosinec“). yy: rok jako dvoumístné číslo (00 až 99), yyyy: rok jako čtyřmístné číslo. h: hodiny bez úvodní nuly (0 až 11 nebo 0 až 23, v závislosti na dop./odp.), hh: hodiny s úvodní nulou (00 až 11 nebo 00 až 23, v závislosti na dop./odp.), m: minuty bez úvodní nuly (0 až 59), mm: minuty s úvodní nulou (00 až 59), s: sekundy bez úvodní nuly (0 až 59), ss: sekundy s úvodní nulou (00 až 59). ap: použít 12hodinový formát namísto 24hodinového formátu, kde je „ap“ nahrazeno lokalizovaným řetězcem pro am nebo pm, AP: použít 12hodinový formát namísto 24hodinového formátu, kde je „AP“ nahrazeno lokalizovaným řetězcem pro AM nebo PM, iso: datum s časem a časovou zónou. Musí být přítomen jediný formát

format_number(v template)

class calibre.utils.formatter_functions.BuiltinFormatNumber[zdroj]

format_number(v template) – formátuje číslo v pomocí šablony formátování Pythonu, jako je „{0:5.2f}“ nebo „{0:,d}“ nebo „${0:5,.2f}“. Součást šablony field_name musí být 0 (nula) („{0:“ ve výše uvedených příkladech). Pro více příkladů se podívejte na jazyk šablony a do dokumentace Pythonu. Pokud šablona obsahuje pouze formát, můžete vynechat úvodní „{0:“ a koncové „}“. Vrací prázdný řetězec, pokud formátování selže.

human_readable(hodnota)

class calibre.utils.formatter_functions.BuiltinHumanReadable[zdroj]

human_readable(hodnota) – vrací řetězec představující číslo v KB, MB, GB atd.

Get values from metadata

approximate_formats()

class calibre.utils.formatter_functions.BuiltinApproximateFormats[zdroj]

approximate_formats() – vrací čárkami oddělený seznam formátů, které svého času byly přidruženy ke knize. Není žádná záruka, že je tento seznam správný, ačkoliv nejspíš je. Tato funkce může být volána v režimu šablony programu pomocí šablony „{:‘approximate_formats()‘}“. Pamatujte, že názvy formátů jsou vždy velkými písmeny, jako v EPUB. Tato funkce funguje pouze v grafickém rozhraní. Pokud chcete použít tyto hodnoty v šablonách uložení na disk nebo odeslání do zařízení, pak musíte vytvořit vlastní „Sloupec sestavený z jiných sloupců“, použít funkci v šabloně toho sloupce a použít hodnotu toho sloupce ve své šabloně uložení nebo odeslání

author_sorts(val_separator)

class calibre.utils.formatter_functions.BuiltinAuthorSorts[zdroj]

author_sorts(val_separator) – vrací řetězec obsahující seznam hodnot řazení autorů pro autory knihy. Řazení je takové jako v metadatech autora (odlišné od author_sort v knihách). Vrácený seznam má podobu řazení autora 1 val_separator řazení autora 2 atd. Hodnoty řazení autora v tomto seznamu jsou ve stejném pořadí jako autoři knihy. Pokud chcete kolem val_separator mezery, tak je zahrňte do řetězce oddělovače

booksize()

class calibre.utils.formatter_functions.BuiltinBooksize[zdroj]

booksize() – vrací hodnotu pole velikost. Tato funkce funguje pouze v grafickém rozhraní. Pokud chcete použít tuto hodnotu v šablonách uložení na disk nebo odeslání do zařízení, pak musíte vytvořit vlastní „Sloupec sestavený z jiných sloupců“, použít funkci v šabloně toho sloupce a použít hodnotu toho sloupce ve své šabloně uložení nebo odeslání

current_library_name()

class calibre.utils.formatter_functions.BuiltinCurrentLibraryName[zdroj]

current_library_name() – vrací poslední název v cestě k aktuální knihovně Calibre. Tato funkce může být volána v režimu šablony programu pomocí šablony „{:‘current_library_name()‘}“.

current_library_path()

class calibre.utils.formatter_functions.BuiltinCurrentLibraryPath[zdroj]

current_library_path() – vrací cestu k aktuální knihovně Calibre. Tato funkce může být volána v režimu šablony programu pomocí šablony „{:‘current_library_path()‘}“.

field(name)

class calibre.utils.formatter_functions.BuiltinField[zdroj]

field(name) – vrací pole metadata pojmenované podle name

formats_modtimes(formát_data)

class calibre.utils.formatter_functions.BuiltinFormatsModtimes[zdroj]

formats_modtimes(formát_data) – vrací čárkami oddělený seznam dvojtečkami oddělených položek představujících časy úpravy pro formáty knihy. Parametr formát_data určuje, jak má být datum formátováno. Pro podrobnosti se podívejte na funkci date_format. Můžete použít funkci select pro získání času úpravy konkrétního formátu. Pamatujte, že názvy formátu jsou vždy velkými písmeny, jako v EPUB.

formats_paths()

class calibre.utils.formatter_functions.BuiltinFormatsPaths[zdroj]

formats_paths() – vrací čárkami oddělený seznam dvojtečkami oddělených položek představujících celé cesty k formátům knihy. Můžete použít funkci select pro získání cesty ke konkrétnímu formátu. Pamatujte, že názvy formátu jsou vždy velkými písmeny, jako v EPUB.

formats_sizes()

class calibre.utils.formatter_functions.BuiltinFormatsSizes[zdroj]

formats_sizes() – vrací čárkami oddělený seznam dvojtečkami oddělených položek představujících velikosti formátů knihy v bajtech. Můžete použít funkci select pro získání velikosti pro konkrétní formát. Pamatujte, že názvy formátu jsou vždy velkými písmeny, jako v EPUB.

has_cover()

class calibre.utils.formatter_functions.BuiltinHasCover[zdroj]

has_cover() – vrací Ano, pokud má kniha obálku, jinak vrací prázdný řetězec

language_codes(řetězce_jazyka)

class calibre.utils.formatter_functions.BuiltinLanguageCodes[zdroj]

language_codes(řetězce_jazyka) – vrací kódy jazyka pro řetězce předané v řetězce_jazyka. Řetězce musí být v jazyce aktuálního národního prostředí. Řetězce_jazyka je čárkami oddělený seznam.

language_strings(kódy_jazyka, lokalizovat)

class calibre.utils.formatter_functions.BuiltinLanguageStrings[zdroj]

language_strings(kódy_jazyka, lokalizovat) – vrací řetězec pro kódy jazyka předané v kódy_jazyka. Pokud lokalizovat je nula, vrací řetězce v angličtině. Pokud lokalizovat není nula, vrací řetězce v jazyce aktuálního národního prostředí. Kódy_jazyka je čárkami oddělený seznam.

ondevice()

class calibre.utils.formatter_functions.BuiltinOndevice[zdroj]

ondevice() – vrací Ano, pokud je nastaveno ondevice, jinak vrací prázdný řetězec. Tato funkce funguje pouze v grafickém rozhraní. Pokud chcete použít tuto hodnotu v šablonách uložení na disk nebo odeslání do zařízení, pak musíte vytvořit vlastní „Sloupec sestavený z jiných sloupců“, použít funkci v šabloně toho sloupce a použít hodnotu toho sloupce ve své šabloně uložení nebo odeslání

raw_field(name)

class calibre.utils.formatter_functions.BuiltinRawField[zdroj]

raw_field(name) – vrací pole metadata pojmenované podle name bez použití jakéhokoliv formátování.

raw_list(název, oddělovač)

class calibre.utils.formatter_functions.BuiltinRawList[zdroj]

raw_list(název, oddělovač) – vrací seznam metadat pojmenovaný názvem bez použití jakéhokoliv formátování nebo řazení a s položkami oddělenými oddělovačem.

series_sort()

class calibre.utils.formatter_functions.BuiltinSeriesSort[zdroj]

series_sort() – vrací hodnotu řazení série

user_categories()

class calibre.utils.formatter_functions.BuiltinUserCategories[zdroj]

user_categories() – vrátí čárkami oddělený seznam uživatelských kategorií, které obsahují tuto knihu. Tato funkce funguje pouze v grafickém rozhraníI. Pokud chcete použít tyto hodnoty v šablonách uložení na disk nebo odeslání do zařízení, pak musíte vytvořit vlastní „Sloupec sestavený z jiných sloupců“, použít funkci v šabloně toho sloupce a použít hodnotu toho sloupce ve svých šablonách uložení nebo odeslání

virtual_libraries()

class calibre.utils.formatter_functions.BuiltinVirtualLibraries[zdroj]

virtual_libraries() – vrací čárkami oddělený seznam virtuálních knihoven, které obsahují tuto knihu. Tato funkce funguje pouze v grafickém rozhraní. Pokud chcete použít tyto hodnoty v šablonách uložení na disk nebo odeslání do zařízení, pak musíte vytvořit vlastní „Sloupec sestavený z jiných sloupců“, použít funkci v šabloně toho sloupce a použít hodnotu toho sloupce ve svých šablonách uložení nebo odeslání

If-then-else

contains(hodnota, vzor, text při shodě, text při neshodě)

class calibre.utils.formatter_functions.BuiltinContains[zdroj]

contains(hodnota, vzor, text při shodě, text při neshodě) – kontroluje, zda pole obsahuje shody pro vzor regulárního výrazu. Vrací text při shodě, pokud jsou nalzeny shody, jinak vrací text při neshodě

ifempty(hodnota, text při prázdné)

class calibre.utils.formatter_functions.BuiltinIfempty[zdroj]

ifempty(hodnota, text při prázdné) – vrací hodnotu, pokud hodnota není prázdná, jinak vrací text při prázdné

test(hodnota, text při neprázdném, text při prázdném)

class calibre.utils.formatter_functions.BuiltinTest[zdroj]

test(hodnota, text při neprázdném, text při prázdném) – vrací text při neprázdném, pokud pole není prázdné, jinak vrací text při prázdném

Iterating over values

first_non_empty(hodnota, hodnota, …)

class calibre.utils.formatter_functions.BuiltinFirstNonEmpty[zdroj]

first_non_empty(hodnota, hodnota, …) – vrací první hodnotu, která není prázdná. Pokud jsou všechny hodnoty prázdné, pak je vrácena prázdná hodnota. Můžete mít tolik hodnot, kolik chcete.

lookup(hodnota, vzor, pole, vzor, pole, …, jinak_pole)

class calibre.utils.formatter_functions.BuiltinLookup[zdroj]

lookup(hodnota, vzor, pole, vzor, pole, …, jinak_pole) – jako switch kromě toho, že parametry jsou názvy polí (metadat), ne text. Hodnota vhodného pole bude načtena a použita. Pamatujte, že protože složené sloupce jsou pole, můžete použít tuto funkci v jednom složeném poli, aby použilo hodnotu některého jiného složeného pole. Toto je neobyčejně užitečné při sestavování proměnných cest uložení.

switch(hodnota, výraz, hodnota, výraz, hodnota, …, jinak_hodnota)

class calibre.utils.formatter_functions.BuiltinSwitch[zdroj]

switch(hodnota, výraz, hodnota, výraz, hodnota, …, jinak_hodnota) – pro každý pár výraz, hodnota kontroluje, zda pole odpovídá regulárnímu výrazu výraz a pokud ano, vrací tu hodnotu. Pokud neodpovídají žádné výrazy, pak je vrácena jinak_hodnota. Můžete mít tolik párů výraz, hodnota, kolik chcete.

List lookup

identifier_in_list(hodnota, identifikátor, nalezená_hodnota, nenalezená_hodnota)

class calibre.utils.formatter_functions.BuiltinIdentifierInList[zdroj]

identifier_in_list(hodnota, identifikátor, nalezená_hodnota, nenalezená_hodnota) – považuje hodnotu za seznam identifikátorů oddělených čárkami, porovnává řetězec proti každé hodnotě v seznamu. Identifikátor má formát „identifikátor:hodnota“. Parametr identifikátor by měl být buď „id“ nebo „id:regexp“. První případ se shoduje, pokud je jakýkoliv identifikátor s tímto id. Druhý případ se shoduje, pokud regexp odpovídá hodnotě identifikátoru. Pokud je nějaká shoda, vrací nalezená_hodnota, jinak vrací nenalezená_hodnota.

in_list(hodnota, oddělovač, vzor, nalezená_hodnota, …, nenalezená_hodnota)

class calibre.utils.formatter_functions.BuiltinInList[zdroj]

in_list(hodnota, oddělovač, vzor, nalezená_hodnota, …, nenalezená_hodnota) – považuje hodnotu za seznam položek oddělených oddělovačem, vyhodnocuje vzor proti každé hodnotě v seznamu. Pokud vzor odpovídá hodnotě, vrací nalezená_hodnota, jinak vrací nenalezená_hodnota. Vzor a nalezená_hodnota mohou být opakovány tolikrát, kolikrát je potřeba, což umožňuje vrácení různých hodnot v závislosti na vyhledávání. Vzory jsou kontrolovány v pořadí. Vrácena je první shoda.

list_item(hodnota, pořadí, oddělovač)

class calibre.utils.formatter_functions.BuiltinListitem[zdroj]

list_item(hodnota, pořadí, oddělovač) – interpretuje hodnotu jako seznam položek oddělených oddělovačem, vrací položku na pořadí. První položka je číslo nula. Poslední položka může být vrácena pomocí list_item(-1,oddělovač). Pokud položka naní v seznamu, pak je vrácena prázdné hodnota. Oddělovač má stejný význam jako ve funkci count.

select(hodnota, klíč)

class calibre.utils.formatter_functions.BuiltinSelect[zdroj]

select(hodnota, klíč) – interpretuje hodnotu jako čárkami oddělený seznam položek, s položkami „identifikátor:hodnota“. Nejde pár s identifikátorem rovnajícím se klíči a vrátí odpovídající hodnotu.

str_in_list(hodnota, oddělovač, řetězec, nalezená_hodnota, …, nenalezená_hodnota)

class calibre.utils.formatter_functions.BuiltinStrInList[zdroj]

str_in_list(hodnota, oddělovač, řetězec, nalezená_hodnota, …, nenalezená_hodnota) – považuje hodnotu za seznam položek oddělených oddělovačem, porovnává řetězec proti každé hodnotě v seznamu. Pokud řetězec odpovídá hodnotě (ignorována velikost písmen), vrací nalezená_hodnota, jinak vrací nenalezená_hodnota. Pokud řetězec obsahuje oddělovače, je také považován za seznam a je zkontrolována každá hodnota. Řetězec a nalezená_hodnota mohou být opakovány tolikrát, kolikrát je potřeba, což umožňuje vrácení různých hodnot v závislosti na vyhledávání. Řetězce jsou kontrolovány v pořadí. Vrácena je první shoda.

List manipulation

count(hodnota, oddělovač)

class calibre.utils.formatter_functions.BuiltinCount[zdroj]

count(hodnota, oddělovač) – interpretuje hodnotu jako seznam položek oddělených oddělovačem, vrací počet položek v seznamu. Většina seznamů používá jako oddělovač čárku, ale autoři používají znak &. Příklady: {tags:count(,)}, {authors:count(&)}

list_difference(seznam1, seznam2, oddělovač)

class calibre.utils.formatter_functions.BuiltinListDifference[zdroj]

list_difference(seznam1, seznam2, oddělovač) – vrací seznam vytvořený odebrání ze seznam1 všech položek nalezených v seznam2 pomocí porovnání bez rozlišení malých a velkých písmen. Položky v seznam1 a seznam2 jsou odděleny oddělovačem, stejně jako položky ve vráceném seznamu.

list_equals(seznam1, oddělovač1, seznam2, oddělovač2, hodnota_ano, hodnota_ne)

class calibre.utils.formatter_functions.BuiltinListEquals[zdroj]

list_equals(seznam1, oddělovač1, seznam2, oddělovač2, hodnota_ano, hodnota_ne) – vrací hodnota_ano, pokud seznam1 a seznam2 obsahují stejné položky, jinak vrací hodnota_ne. Položky jsou určeny rozdělením každého seznamu pomocí příslušného znaku oddělovače (oddělovač1 nebo oddělovač2). Pořadí položek v seznamu není relevantní. Porovnání je bez rozlišení malých a velkých písmen.

list_intersection(seznam1, seznam2, oddělovač)

class calibre.utils.formatter_functions.BuiltinListIntersection[zdroj]

list_intersection(seznam1, seznam2, oddělovač) – vrací seznam vytvořený odebrání ze seznam1 všech položek nenalezených v seznam2 pomocí porovnání bez rozlišení malých a velkých písmen. Položky v seznam1 a seznam2 jsou odděleny oddělovačem, stejně jako položky ve vráceném seznamu.

list_re(seznam_zdrojů, oddělovač, zahrnout_vrácené, volitelně_nahradit)

class calibre.utils.formatter_functions.BuiltinListRe[zdroj]

list_re(seznam_zdrojů, oddělovač, zahrnout_vrácené, volitelně_nahradit) – Vytváří seznam nejdříve rozdělením seznam_zdrojů na položky pomocí znaku oddělovače. Pro každou položku na seznamu kontroluje, zda odpovídá zahrnout_vrácené. Pokud ano, pak ji přidá na seznam vrácených. Pokud volitelně_nahradit není prázdný řetězec, pak použije náhradu před přidáním položky na seznam vrácených.

list_re_group(src_list, separator, include_re, search_re, group_1_template, …)

class calibre.utils.formatter_functions.BuiltinListReGroup[zdroj]

list_re_group(src_list, separator, include_re, search_re, group_1_template, …) – Jako list_re kromě toho, že nahrazení nejsou volitelná. Používáre_group(list_item, search_re, group_1_template, …) při provádění nahrazení na seznamu výsledků.

list_sort(seznam, směr, oddělovač)

class calibre.utils.formatter_functions.BuiltinListSort[zdroj]

list_sort(seznam, směr, oddělovač) – vrací seznam seřazený pomocí řazení bez rozlišení malých a velkých písmen. Pokud je směr nula, je seznam seřazen vzestupně, jinak sestupně. Položky seznamu jsou odděleny oddělovačem, stejně jako položky ve vráceném seznamu.

list_union(seznam1, seznam2, oddělovač)

class calibre.utils.formatter_functions.BuiltinListUnion[zdroj]

list_union(seznam1, seznam2, oddělovač) – vrací seznam vytvořený sloučením položek v seznam1 a seznam2, odebráním duplicitních položek pomocí porovnání bez rozlišení malých a velkých písmen. Pokud se položky liší velikostí písmen, je použita ta z seznam1. Položky v seznam1 a seznam2 jsou odděleny oddělovačem, stejně jako položky ve vráceném seznamu.

subitems(hodnota, počáteční_index, konečný_index)

class calibre.utils.formatter_functions.BuiltinSubitems[zdroj]

subitems(hodnota, počáteční_index, konečný_index) – tato funkce je používána na rozdělení seznamů položek, jako jsou žánry. Interpretuje hodnotu jako čárkami oddělený seznam položek, kde každá položka je tečkami oddělený seznam. Vrací nový seznam vytvořený nejdříve nalezením všech tečkami oddělených položek, pak pro každou takovou položku extrahováním komponent od počáteční_index po konečný_index a pak zkombinováním výsledků zpět dohromady. První komponenta v tečkami odděleném seznamu má index nula. Pokud je index záporný, pak se počítá od konce seznamu. Jako speciální příklad je koncový_index nula považován za délku seznamu. Příklady používající režim základní šablony a předpokládající, že hodnota #genre „A.B.C“: {#genre:subitems(0,1)} vrací „A“. {#genre:subitems(0,2)} vrací „A.B“. {#genre:subitems(1,0)} vrací „B.C“. Předpokládající, že hodnota #genre „A.B.C, D.E.F“, {#genre:subitems(0,1)} vrací „A, D“. {#genre:subitems(0,2)} vrací „A.B, D.E“

sublist(hodnota, počáteční_index, konečný_index, oddělovač)

class calibre.utils.formatter_functions.BuiltinSublist[zdroj]

sublist(hodnota, počáteční_index, konečný_index, oddělovač) – interpretuje hodnotu jako seznam položek oddělený oddělovačem, vrací nový seznam vytvořený od položky počáteční_pořadí po konečný_pořadí. První položka je číslo nula. Pokud je pořadí záporný, pak se počítá od konce seznamu. Jako speciální příklad je koncový_index nula považován za délku seznamu. Příklady používající základní režim šablony a předpokládající, že sloupec štítky (který je čárkami oddělený) obsahující „A, B, C“: {tags:sublist(0,1,\,)} vrací „A“. {tags:sublist(-1,0,\,)} vrací „C“. {tags:sublist(0,-1,\,)} vrací „A, B“.

Other

assign(id, val)

class calibre.utils.formatter_functions.BuiltinAssign[zdroj]

assign(id, val) – přiřadí val k id, pak vrací val. id musí být identifikátor, ne výraz

Recursion

eval(template)

class calibre.utils.formatter_functions.BuiltinEval[zdroj]

eval(template) – vyhodnocuje šablonu, předává místní proměnné (ty ‚přiřazené‘) namísto metadat knihy. Toto umožňuje pomocí zpracování šablony vytvořit složité výsledky z místních proměnných. Protože znaky { a } jsou speciální, musíte použít [[ pro znak { a ]] pro znak }; jsou převedeny automaticky. Pamatujte také na to, že předpony a přípony (syntaxe |prefix|suffix) nemohou být použity v parametru této funkce při použití režimu šablony programu.

template(x)

class calibre.utils.formatter_functions.BuiltinTemplate[zdroj]

template(x) – vyhodnocuje x jako šablonu.Vyhodnocení se provádí ve vlastním kontextu, což znamená, že proměnné nejsou sdíleny mezi volajícím a vyhodnocením šablony. Protože znaky { a } jsou speciální, musíte použít [[ pro znak { a ]] pro znak }; jsou převedeny automaticky. Například template(‚[[title_sort]]‘) vyhodnotí šablonu {title_sort} a vrátí její hodnotu. Pamatujte také na to, že předpony a přípony (syntaxe |prefix|suffix) nemohou být použity v parametru této funkce při použití režimu šablony programu.

Relational

cmp(x, y, lt, eq, gt)

class calibre.utils.formatter_functions.BuiltinCmp[zdroj]

cmp(x, y, lt, eq, gt) – porovnává x a y po převedení obou na čísla. Vrací lt, když x < y. Vrací eq, když x == y. Jinak vrací gt.

first_matching_cmp(val, cmp1, result1, cmp2, r2, …, else_result)

class calibre.utils.formatter_functions.BuiltinFirstMatchingCmp[zdroj]

first_matching_cmp(val, cmp1, result1, cmp2, r2, …, else_result) – porovnává „val < cmpN“ v posloupnosti, vrací resultN pro první porovnání, které uspěje. Vrací else_result, když žádné porovnání neuspěje. Příklad: first_matching_cmp(10,5,“malý“,10,“střední“,15,“velký“,“obrovský“) vrací „velký“. Stejný příklad s první hodnotou 16 vrací „obrovský“.

strcmp(x, y, lt, eq, gt)

class calibre.utils.formatter_functions.BuiltinStrcmp[zdroj]

strcmp(x, y, lt, eq, gt) – dělá porovnání x a y jako řetězců bez rozlišení malých a velkých písmen. Vrací lt, když x < y. Vrací eq, když x == y. Jinak vrací gt.

String case changes

capitalize(hodnota)

class calibre.utils.formatter_functions.BuiltinCapitalize[zdroj]

capitalize(hodnota) – vrací hodnotu kapitálkami

lowercase(hodnota)

class calibre.utils.formatter_functions.BuiltinLowercase[zdroj]

lowercase(hodnota) – vrací hodnotu malými písmeny

titlecase(hodnota)

class calibre.utils.formatter_functions.BuiltinTitlecase[zdroj]

titlecase(hodnota) – vrací hodnotu se všemi prvními písmeny velkými

uppercase(hodnota)

class calibre.utils.formatter_functions.BuiltinUppercase[zdroj]

uppercase(hodnota) – vrací hodnotu velkými písmeny

String manipulation

re(hodnota, vzor, náhrada)

class calibre.utils.formatter_functions.BuiltinRe[zdroj]

re(hodnota, vzor, náhrada) – vrací pole po použití regulárního výrazu. Všechny instance vzor jsou nahrazeny náhradou. Jako v celém Calibre jsou toto regulární výrazy kompatibilní s Pythonem

re_group(val, pattern, template_for_group_1, for_group_2, …)

class calibre.utils.formatter_functions.BuiltinReGroup[zdroj]

re_group(val, pattern, template_for_group_1, for_group_2, …) – vrací řetězec vytvořený použitím vzoru regulárního výrazu (pattern) na hodnotu (val) a nahrazením každé odpovídající instance řetězcem vypočítaným nahrazením každé odpovídající skupiny hodnotou vrácenou odpovídající šablonou (tempůate_for_group_1). Původní odpovídající hodnota pro skupinu je dostupná jako $. V režimu programu šablony, jako pro šablonu a funkce eval, použijte [[ pro { a ]] pro }. Následující příklad v režimu programu šablony hledá série s více než jedním slovem a prvním slovem velkými písmeny: {series:‘re_group($, „(S* )(.*)“, „[[$:uppercase()]]“, „[[$]]“)‘}

shorten(hodnota, znaky vlevo, text uprostřed, znaky vpravo)

class calibre.utils.formatter_functions.BuiltinShorten[zdroj]

shorten(hodnota, znaky vlevo, text uprostřed, znaky vpravo) – vrací zkrácenou verzi hodnoty, skládající se ze znaky vlevo znaků od začátku hodnoty, následované text uptostřed, následovné znaky vpravo znaků od konce řetězce. Znaky vlevo a znaky vpravo musí být celá čísla. Například předpokládejme, že název knihy je Život a doba soudce Roye Beana a chcete, aby se vešel do míst s nanejvýše 15 znaky. Pokud použijete {title:shorten(9,-,5)}, výsledek bude Život a d-eana. Pokud je délka pole menší než znaky vlevo + znaky vpravo + délka text uprostřed, pak bude pole použito nezměněno. Například název Kopule by nebyl změněn.

strcat(a, b, …)

class calibre.utils.formatter_functions.BuiltinStrcat[zdroj]

strcat(a, b, …) – může brát jakýkoliv počet parametrů. Vrací řetězec vytvořený spojením všech parametrů

strcat_max(max, řetězec1, předpona2, řetězec2, …)

class calibre.utils.formatter_functions.BuiltinStrcatMax[zdroj]

strcat_max(max, řetězec1, předpona2, řetězec2, …) – Vrací řetězec vytvořený spojením parametrů. Vrácená hodnota je spuštěna na řetězec1. Páry předpona, řetězec jsou přidávány na konec hodnoty, dokud je výsledný řetězec kratší než max. Řetězec1 je vrácen, dokonce i když je řetězec1 delší než max. Můžete předat tolik párů předpona, řetězec, kolik si přejete.

strlen(a)

class calibre.utils.formatter_functions.BuiltinStrlen[zdroj]

strlen(a) – vrací délku řetězce předanou jako parametr

substr(řetězec, počátek, konec)

class calibre.utils.formatter_functions.BuiltinSubstr[zdroj]

substr(řetězec, počátek, konec) – vrací počáteční až koncové znaky řetězce. První znak v řetězci je nultý znak. Pokud je konec záporný, pak označuje, kolik znaků počítat zprava. Pokud je konec nula, pak označuje poslední znak. Například substr(‚12345‘, 1, 0) vrací ‚2345‘ a substr(‚12345‘, 1, -1) vrací ‚234‘.

swap_around_comma(hodnota)

class calibre.utils.formatter_functions.BuiltinSwapAroundComma[zdroj]

swap_around_comma(hodnota) – zadává se hodnota v podobě „B, A“, vrací „A B“. Toto je nejužitečnější pro převod jmen z formátu „příjmení, jméno“ na „jméno příjmení“. Pokud zde není čárka, funkce vrací hodnotu nezměněnou.

transliterate(a)

class calibre.utils.formatter_functions.BuiltinTransliterate[zdroj]

transliterate(a) – Vrací řetězec v latince vytvořený přibližným odhadem zvuku slov ve zdrojovém řetězci. Například pokud je zdroj „Фёдор Миха́йлович Достоевский“, funkce vrací „Fiodor Mikhailovich Dostoievskii“.

API of the Metadata objects

The python implementation of the template functions is passed in a Metadata object. Knowing it’s API is useful if you want to define your own template functions.

class calibre.ebooks.metadata.book.base.Metadata(title, authors=(u'Neznxe1mxfd', ), other=None, template_cache=None, formatter=None)[zdroj]

A class representing all the metadata for a book. The various standard metadata fields are available as attributes of this object. You can also stick arbitrary attributes onto this object.

Metadata from custom columns should be accessed via the get() method, passing in the lookup name for the column, for example: „#mytags“.

Use the is_null() method to test if a field is null.

This object also has functions to format fields into strings.

The list of standard metadata fields grows with time is in STANDARD_METADATA_FIELDS.

Please keep the method based API of this class to a minimum. Every method becomes a reserved field name.

is_null(field)[zdroj]

Return True if the value of field is null in this object. ‚null‘ means it is unknown or evaluates to False. So a title of _(‚Unknown‘) is null or a language of ‚und‘ is null.

Be careful with numeric fields since this will return True for zero as well as None.

Also returns True if the field does not exist.

deepcopy(class_generator=<function <lambda>>)[zdroj]

Do not use this method unless you know what you are doing, if you want to create a simple clone of this object, use deepcopy_metadata() instead. Class_generator must be a function that returns an instance of Metadata or a subclass of it.

get_identifiers()[zdroj]

Return a copy of the identifiers dictionary. The dict is small, and the penalty for using a reference where a copy is needed is large. Also, we don’t want any manipulations of the returned dict to show up in the book.

set_identifiers(identifiers)[zdroj]

Set all identifiers. Note that if you previously set ISBN, calling this method will delete it.

set_identifier(typ, val)[zdroj]

If val is empty, deletes identifier of type typ

standard_field_keys()[zdroj]

return a list of all possible keys, even if this book doesn’t have them

custom_field_keys()[zdroj]

return a list of the custom fields in this book

all_field_keys()[zdroj]

All field keys known by this instance, even if their value is None

metadata_for_field(key)[zdroj]

return metadata describing a standard or custom field.

all_non_none_fields()[zdroj]

Return a dictionary containing all non-None metadata fields, including the custom ones.

get_standard_metadata(field, make_copy)[zdroj]

return field metadata from the field if it is there. Otherwise return None. field is the key name, not the label. Return a copy if requested, just in case the user wants to change values in the dict.

get_all_standard_metadata(make_copy)[zdroj]

return a dict containing all the standard field metadata associated with the book.

get_all_user_metadata(make_copy)[zdroj]

return a dict containing all the custom field metadata associated with the book.

get_user_metadata(field, make_copy)[zdroj]

return field metadata from the object if it is there. Otherwise return None. field is the key name, not the label. Return a copy if requested, just in case the user wants to change values in the dict.

set_all_user_metadata(metadata)[zdroj]

store custom field metadata into the object. Field is the key name not the label

set_user_metadata(field, metadata)[zdroj]

store custom field metadata for one column into the object. Field is the key name not the label

template_to_attribute(other, ops)[zdroj]

Takes a list [(src,dest), (src,dest)], evaluates the template in the context of other, then copies the result to self[dest]. This is on a best-efforts basis. Some assignments can make no sense.

smart_update(other, replace_metadata=False)[zdroj]

Merge the information in other into self. In case of conflicts, the information in other takes precedence, unless the information in other is NULL.

format_field(key, series_with_index=True)[zdroj]

Returns the tuple (display_name, formatted_value)

to_html()[zdroj]

A HTML representation of this object.

calibre.ebooks.metadata.book.base.STANDARD_METADATA_FIELDS

The set of standard metadata fields.

__docformat__ = 'restructuredtext en'

'''
All fields must have a NULL value represented as None for simple types,
an empty list/dictionary for complex types and (None, None) for cover_data
'''

SOCIAL_METADATA_FIELDS = frozenset((
    'tags',             # Ordered list
    'rating',           # A floating point number between 0 and 10
    'comments',         # A simple HTML enabled string
    'series',           # A simple string
    'series_index',     # A floating point number
    # Of the form { scheme1:value1, scheme2:value2}
    # For example: {'isbn':'123456789', 'doi':'xxxx', ... }
    'identifiers',
))

'''
The list of names that convert to identifiers when in get and set.
'''

TOP_LEVEL_IDENTIFIERS = frozenset((
    'isbn',
))

PUBLICATION_METADATA_FIELDS = frozenset((
    'title',            # title must never be None. Should be _('Unknown')
    # Pseudo field that can be set, but if not set is auto generated
    # from title and languages
    'title_sort',
    'authors',          # Ordered list. Must never be None, can be [_('Unknown')]
    'author_sort_map',  # Map of sort strings for each author
    # Pseudo field that can be set, but if not set is auto generated
    # from authors and languages
    'author_sort',
    'book_producer',
    'timestamp',        # Dates and times must be timezone aware
    'pubdate',
    'last_modified',
    'rights',
    # So far only known publication type is periodical:calibre
    # If None, means book
    'publication_type',
    'uuid',             # A UUID usually of type 4
    'languages',        # ordered list of languages in this publication
    'publisher',        # Simple string, no special semantics
    # Absolute path to image file encoded in filesystem_encoding
    'cover',
    # Of the form (format, data) where format is, for e.g. 'jpeg', 'png', 'gif'...
    'cover_data',
    # Either thumbnail data, or an object with the attribute
    # image_path which is the path to an image file, encoded
    # in filesystem_encoding
    'thumbnail',
))

BOOK_STRUCTURE_FIELDS = frozenset((
    # These are used by code, Null values are None.
    'toc', 'spine', 'guide', 'manifest',
))

USER_METADATA_FIELDS = frozenset((
    # A dict of dicts similar to field_metadata. Each field description dict
    # also contains a value field with the key #value#.
    'user_metadata',
))

DEVICE_METADATA_FIELDS = frozenset((
    'device_collections',   # Ordered list of strings
    'lpath',                # Unicode, / separated
    'size',                 # In bytes
    'mime',                 # Mimetype of the book file being represented
))

CALIBRE_METADATA_FIELDS = frozenset((
    'application_id',   # An application id, currently set to the db_id.
    'db_id',            # the calibre primary key of the item.
    'formats',          # list of formats (extensions) for this book
    # a dict of user category names, where the value is a list of item names
    # from the book that are in that category
    'user_categories',
    # a dict of author to an associated hyperlink
    'author_link_map',
))

ALL_METADATA_FIELDS =      SOCIAL_METADATA_FIELDS.union(
                           PUBLICATION_METADATA_FIELDS).union(
                           BOOK_STRUCTURE_FIELDS).union(
                           USER_METADATA_FIELDS).union(
                           DEVICE_METADATA_FIELDS).union(
                           CALIBRE_METADATA_FIELDS)

# All fields except custom fields
STANDARD_METADATA_FIELDS = SOCIAL_METADATA_FIELDS.union(
                           PUBLICATION_METADATA_FIELDS).union(
                           BOOK_STRUCTURE_FIELDS).union(
                           DEVICE_METADATA_FIELDS).union(
                           CALIBRE_METADATA_FIELDS)

# Metadata fields that smart update must do special processing to copy.
SC_FIELDS_NOT_COPIED =     frozenset(('title', 'title_sort', 'authors',
                                      'author_sort', 'author_sort_map',
                                      'cover_data', 'tags', 'languages',
                                      'identifiers'))

# Metadata fields that smart update should copy only if the source is not None
SC_FIELDS_COPY_NOT_NULL =  frozenset(('device_collections', 'lpath', 'size', 'comments', 'thumbnail'))

# Metadata fields that smart update should copy without special handling
SC_COPYABLE_FIELDS =       SOCIAL_METADATA_FIELDS.union(
                           PUBLICATION_METADATA_FIELDS).union(
                           BOOK_STRUCTURE_FIELDS).union(
                           DEVICE_METADATA_FIELDS).union(
                           CALIBRE_METADATA_FIELDS) - \
                           SC_FIELDS_NOT_COPIED.union(
                           SC_FIELDS_COPY_NOT_NULL)

SERIALIZABLE_FIELDS =      SOCIAL_METADATA_FIELDS.union(
                           USER_METADATA_FIELDS).union(
                           PUBLICATION_METADATA_FIELDS).union(
                           CALIBRE_METADATA_FIELDS).union(
                           DEVICE_METADATA_FIELDS) - \
                           frozenset(('device_collections', 'formats',
                               'cover_data'))
# these are rebuilt when needed