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.

Aritmetičke

add

class calibre.utils.formatter_functions.BuiltinAdd[изворни код]

add(x [, y]*) -- vraća zbir svojih argumenata. Izbacuje izuzetak ako argument nije broj. U većini slučajeva možete koristiti operator + umesto ove funkcije.

ceiling

class calibre.utils.formatter_functions.BuiltinCeiling[изворни код]

ceiling(value) -- vraća najmanji ceo broj veći ili jednak value. Izbacuje izuzetak ako value nije broj.

divide

class calibre.utils.formatter_functions.BuiltinDivide[изворни код]

divide(x, y) -- vraća x / y. Izbacuje izuzetak ako x ili y nisu brojevi. Ova funkcija se obično može zameniti operatorom /.

floor

class calibre.utils.formatter_functions.BuiltinFloor[изворни код]

floor(value) -- vraća najveći ceo broj manji ili jednak value. Izbacuje izuzetak ako value nije broj.

fractional_part

class calibre.utils.formatter_functions.BuiltinFractionalPart[изворни код]

fractional_part(value) -- vraća deo vrednosti nakon decimalne tačke. Na primer, fractional_part(3.14) vraća 0.14. Izbacuje izuzetak ako value nije broj.

mod

class calibre.utils.formatter_functions.BuiltinMod[изворни код]

mod(value, y) -- vraća floor ostatka deljenja value / y. Izbacuje izuzetak ako value ili y nisu brojevi.

multiply

class calibre.utils.formatter_functions.BuiltinMultiply[изворни код]

multiply(x [, y]*) -- vraća proizvod svojih argumenata. Izbacuje izuzetak ako bilo koji argument nije broj. Ova funkcija se obično može zameniti operatorom *.

round

class calibre.utils.formatter_functions.BuiltinRound[изворни код]

round(value) -- vraća najbliži ceo broj vrednosti value. Izbacuje izuzetak ako value nije broj.

subtract

class calibre.utils.formatter_functions.BuiltinSubtract[изворни код]

subtract(x, y) -- vraća x - y. Izbacuje izuzetak ako x ili y nisu brojevi. Ova funkcija se obično može zameniti operatorom -.

Bulove

and

class calibre.utils.formatter_functions.BuiltinAnd[изворни код]

and(value [, value]*) -- vraća niz '1' ako sve vrednosti nisu prazne, u suprotnom vraća prazan niz. Možete imati onoliko vrednosti koliko želite. U većini slučajeva možete koristiti operator && umesto ove funkcije. Jedan razlog da ne zamenite and() sa && je kada kratko spajanje (short-circuiting) može promeniti rezultate zbog sporednih efekata. Na primer, and(a='',b=5) će uvek izvršiti obe dodele, dok operator && neće izvršiti drugu.

not

class calibre.utils.formatter_functions.BuiltinNot[изворни код]

not(value) -- vraća niz '1' ako je vrednost prazna, u suprotnom vraća prazan niz. Ova funkcija se obično može zameniti unarnim not (!) operatorom.

or

class calibre.utils.formatter_functions.BuiltinOr[изворни код]

or(value [, value]*) -- vraća niz '1' ako bilo koja vrednost nije prazna, u suprotnom vraća prazan niz. Možete imati onoliko vrednosti koliko želite. Ova funkcija se obično može zameniti operatorom ||. Razlog zašto se ne može zameniti je ako kratko spajanje može promeniti rezultate zbog sporednih efekata.

Dobavljanje vrednosti iz metapodataka

author_sorts

class calibre.utils.formatter_functions.BuiltinAuthorSorts[изворни код]

author_sorts(val_separator) -- vraća niz koji sadrži listu vrednosti za sortiranje autora za autore knjige. Sortiranje je ono koje se nalazi u metapodacima autora, što može biti drugačije od author_sort u knjigama. Vraćena lista ima oblik author sort 1 val_separator author sort 2 itd. bez dodatih razmaka. Vrednosti sortiranja autora u ovoj listi su istim redosledom kao i autori knjige. Ako želite razmake oko val_separator, uključite ih u niz val_separator.

booksize

class calibre.utils.formatter_functions.BuiltinBooksize[изворни код]

booksize() -- vraća vrednost calibre polja size (veličina). Vraća '' ako knjiga nema formate.

Ova funkcija radi samo u grafičkom interfejsu (GUI). Ako želite da koristite ovu vrednost u šablonima za čuvanje na disk ili slanje na uređaj, morate napraviti prilagođenu "Kolonu izvedenu iz drugih kolona", koristiti funkciju u šablonu te kolone i koristiti vrednost te kolone u vašim šablonima za čuvanje/slanje

connected_device_name

class calibre.utils.formatter_functions.BuiltinConnectedDeviceName[изворни код]

connected_device_name(storage_location_key) -- ako je uređaj povezan, vraća ime uređaja, u suprotnom vraća prazan niz. Svaka lokacija za skladištenje na uređaju ima svoje ime uređaja. Ključevi storage_location_key su 'main', 'carda' i 'cardb'. Ova funkcija radi samo u grafičkom interfejsu (GUI).

connected_device_uuid

class calibre.utils.formatter_functions.BuiltinConnectedDeviceUUID[изворни код]

connected_device_uuid(storage_location_key) -- ako je uređaj povezan, vraća uuid (jedinstveni id) uređaja, u suprotnom vraća prazan niz. Svaka lokacija za skladištenje na uređaju ima drugačiji uuid. Imena lokacija storage_location_key su 'main', 'carda' i 'cardb'. Ova funkcija radi samo u grafičkom interfejsu (GUI).

current_library_name

class calibre.utils.formatter_functions.BuiltinCurrentLibraryName[изворни код]

current_library_name() -- vraća poslednji naziv na putanji do trenutne calibre biblioteke.

current_library_path

class calibre.utils.formatter_functions.BuiltinCurrentLibraryPath[изворни код]

current_library_path() -- vraća punu putanju do trenutne calibre biblioteke.

current_virtual_library_name

class calibre.utils.formatter_functions.BuiltinCurrentVirtualLibraryName[изворни код]

current_virtual_library_name() -- vraća ime trenutne virtuelne biblioteke ako postoji, u suprotnom vraća prazan niz. Velika i mala slova imena biblioteke se čuvaju. Primer:

program: current_virtual_library_name()

Ova funkcija radi samo u grafičkom interfejsu (GUI).

field

class calibre.utils.formatter_functions.BuiltinField[изворни код]

field(lookup_name) -- vraća vrednost polja metapodataka sa nazivom za pretragu lookup_name. Prefiks $ se može koristiti umesto funkcije, kao u $tags.

has_cover

class calibre.utils.formatter_functions.BuiltinHasCover[изворни код]

has_cover() -- vraća 'Yes' ako knjiga ima naslovnu stranu, u suprotnom vraća prazan niz.

is_marked

class calibre.utils.formatter_functions.BuiltinIsMarked[изворни код]

is_marked() -- proverava da li je knjiga označena (marked) u calibre. Ako jeste, vraća vrednost oznake, bilo 'true' (malim slovima) ili listu imenovanih oznaka razdvojenih zarezom. Vraća '' (prazan niz) ako knjiga nije označena. Ova funkcija radi samo u grafičkom interfejsu (GUI).

language_codes

class calibre.utils.formatter_functions.BuiltinLanguageCodes[изворни код]

language_codes(lang_strings) -- vraća kodove jezika za nazive jezika prosleđene u lang_strings. Nizovi moraju biti na jeziku trenutnog lokaliteta. lang_strings je lista razdvojena zarezima.

language_strings

class calibre.utils.formatter_functions.BuiltinLanguageStrings[изворни код]

language_strings(value, localize) -- vraća nazive jezika za kodove jezika (pogledajte ovde za nazive i kodove) prosleđene u value. Primer: {languages:language_strings()}. Ako je localize nula, vraća nizove na engleskom. Ako localize nije nula, vraća nizove na jeziku trenutnog lokaliteta. lang_codes je lista razdvojena zarezima.

ondevice

class calibre.utils.formatter_functions.BuiltinOndevice[изворни код]

ondevice() -- vraća nisku 'Yes' (Da) ako je ondevice postavljeno, u suprotnom vraća prazan niz. Ova funkcija radi samo u grafičkom interfejsu (GUI). Ako želite da koristite ovu vrednost u šablonima za čuvanje na disk ili slanje na uređaj, morate napraviti prilagođenu "Kolonu izvedenu iz drugih kolona", koristiti funkciju u šablonu te kolone i koristiti vrednost te kolone u vašim šablonima za čuvanje/slanje.

raw_field

class calibre.utils.formatter_functions.BuiltinRawField[изворни код]

raw_field(lookup_name [, optional_default]) -- vraća polje metapodataka nazvano prema lookup_name bez primene bilo kakvog formatiranja. Procenjuje i vraća opcioni drugi argument optional_default ako je vrednost polja nedefinisana (None). Prefiks $$ se može koristiti umesto funkcije, kao u $$pubdate.

raw_list

class calibre.utils.formatter_functions.BuiltinRawList[изворни код]

raw_list(lookup_name, separator) -- vraća listu metapodataka nazvanu prema lookup_name bez primene bilo kakvog formatiranja ili sortiranja, sa stavkama razdvojenim pomoću separator.

series_sort

class calibre.utils.formatter_functions.BuiltinSeriesSort[изворни код]

series_sort() -- vraća vrednost sortiranja serije.

user_categories

class calibre.utils.formatter_functions.BuiltinUserCategories[изворни код]

user_categories() -- vraća listu korisničkih kategorija razdvojenih zarezom koje sadrže ovu knjigu. Ova funkcija radi samo u grafičkom interfejsu (GUI). Ako želite da koristite ove vrednosti u šablonima za čuvanje na disk ili slanje na uređaj, morate napraviti prilagođenu kolonu izvedenu iz drugih kolona, koristiti funkciju u šablonu te kolone i koristiti vrednost te kolone u vašim šablonima za čuvanje/slanje.

virtual_libraries

class calibre.utils.formatter_functions.BuiltinVirtualLibraries[изворни код]

virtual_libraries() -- vraća listu virtuelnih biblioteka razdvojenih zarezima koje sadrže ovu knjigu. Ova funkcija radi samo u GUI-ju. Ako želite da koristite ove vrednosti u šablonima za čuvanje na disk ili slanje na uređaj, morate napraviti prilagođenu Kolonu izvedenu iz drugih kolona, koristiti funkciju u šablonu te kolone i koristiti vrednost te kolone u vašim šablonima za čuvanje/slanje.

Formatiranje vrednosti

f_string

class calibre.utils.formatter_functions.BuiltinFString[изворни код]

f_string(string) -- tumači string slično načinu na koji Python tumači f stringove. Namenjena je pojednostavljivanju dugih nizova izraza str & str ili strcat(a,b,c).

Tekst između vitičastih zagrada ({ i }) mora sadržati izraze šablona u režimu General Program Mode. Izrazi, koji mogu biti liste izraza, obrađuju se u trenutnom kontekstu (trenutna knjiga i lokalne promenljive). Tekst koji nije između vitičastih zagrada prosleđuje se neizmenjen.

Primeri:

  • f_string('Here is the title: {$title}') - vraća string u kome je {$title} zamenjen naslovom trenutne knjige. Na primer, ako je naslov knjige 20,000 Leagues Under the Sea, onda f_string() vraća Here is the title: 20,000 Leagues Under the Sea.

  • Ako je trenutni datum 18. septembar 2025, ovaj f_string()

    f_string("Today's date: the {d = today(); format_date(d, 'd')} of {format_date(d, 'MMMM')}, {format_date(d, 'yyyy')}")
    

    vraća string Today's date: the 18 of September, 2025. Obratite pažnju na listu izraza (dodela pa if naredba) korišćenu u prvoj grupi { ... } za dodelu današnjeg datuma lokalnoj promenljivoj.

  • Ako je knjiga treća u seriji Foo koja ima 5 knjiga, onda ovaj šablon

    program:
        if $series then
            series_count = book_count('series:"""=' & $series & '"""', 0);
            return f_string("{$series}, book {$series_index} of {series_count}")
        fi;
        return 'This book is not in a series'
    

    vraća Foo, book 3 of 5

finish_formatting

class calibre.utils.formatter_functions.BuiltinFinishFormatting[изворни код]

finish_formatting(value, format, prefix, suffix) -- primenjuje format, prefix i suffix na value na isti način kao što se radi u šablonu kao što je {series_index:05.2f| - |- }. Ova funkcija je obezbeđena da olakša konverziju složenih šablona sa jednom funkcijom ili šablona u programskom režimu u GPM šablone. Na primer, sledeći program proizvodi isti izlaz kao gornji šablon:

program: finish_formatting(field("series_index"), "05.2f", " - ", " - ")

Još jedan primer: za šablon:

{series:re(([^\s])[^\s]+(\s|$),\1)}{series_index:0>2s| - | - }{title}

koristite:

program:
    strcat(
        re(field('series'), '([^\s])[^\s]+(\s|$)', '\1'),
        finish_formatting(field('series_index'), '0>2s', ' - ', ' - '),
        field('title')
    )

format_date

class calibre.utils.formatter_functions.BuiltinFormatDate[изворни код]

format_date(value, format_string) -- formatira value, koji mora biti niska datuma, koristeći format_string, vraćajući nisku. Najbolje je ako je datum u ISO formatu jer korišćenje drugih formata datuma često izaziva greške jer se stvarna vrednost datuma ne može nedvosmisleno odrediti. Imajte na umu da je funkcija format_date_field() i brža i pouzdanija.

Kodovi za formatiranje su:

  • d    : dan kao broj bez vodeće nule (1 do 31)

  • dd   : dan kao broj sa vodećom nulom (01 do 31)

  • ddd  : skraćeno lokalizovano ime dana (npr. "Pon" do "Ned")

  • dddd : puno lokalizovano ime dana (npr. "Ponedeljak" do "Nedelja")

  • M    : mesec kao broj bez vodeće nule (1 do 12)

  • MM   : mesec kao broj sa vodećom nulom (01 do 12)

  • MMM  : skraćeno lokalizovano ime meseca (npr. "Jan" do "Dec")

  • MMMM : puno lokalizovano ime meseca (npr. "Januar" do "Decembar")

  • yy   : godina kao dvocifreni broj (00 do 99)

  • yyyy : godina kao četvorocifreni broj.

  • h    : sati bez vodeće 0 (0 do 11 ili 0 do 23, zavisno od am/pm)

  • hh   : sati sa vodećom 0 (00 do 11 ili 00 do 23, zavisno od am/pm)

  • m    : minuti bez vodeće 0 (0 do 59)

  • mm   : minuti sa vodećom 0 (00 do 59)

  • s    : sekunde bez vodeće 0 (0 do 59)

  • ss   : sekunde sa vodećom 0 (00 do 59)

  • ap   : koristi 12-časovni sat umesto 24-časovnog, sa 'ap' zamenjenim malom lokalizovanom niskom za am ili pm

  • AP   : koristi 12-časovni sat umesto 24-časovnog, sa 'AP' zamenjenim velikom lokalizovanom niskom za AM ili PM

  • aP   : koristi 12-časovni sat umesto 24-časovnog, sa 'aP' zamenjenim lokalizovanom niskom za AM ili PM

  • Ap   : koristi 12-časovni sat umesto 24-časovnog, sa 'Ap' zamenjenim lokalizovanom niskom za AM ili PM

  • iso  : datum sa vremenom i vremenskom zonom. Mora biti jedini prisutan format

  • to_number   : pretvara datum i vreme u broj sa pokretnim zarezom (a timestamp)

  • from_number : pretvara broj sa pokretnim zarezom (a timestamp) u datum formatiran po ISO standardu. Ako želite drugačiji format datuma, dodajte željenu nisku za formatiranje nakon from_number i dvotačke (:). Primer:

    format_date(val, 'from_number:MMM dd yyyy')
    

Možete dobiti neočekivane rezultate ako datum koji formatirate sadrži lokalizovana imena meseci, što se može desiti ako ste promenili format datuma da sadrži MMMM. Korišćenje format_date_field() izbegava ovaj problem.

format_date_field

class calibre.utils.formatter_functions.BuiltinFormatDateField[изворни код]

format_date_field(field_name, format_string) -- formatira vrednost u polju field_name, koje mora biti ime za pretragu polja datuma, bilo standardnog ili prilagođenog. Pogledajte format_date() za kodove formatiranja. Ova funkcija je mnogo brža od format_date() i treba je koristiti kada formatirate vrednost u polju (koloni). Takođe je pouzdanija jer radi direktno na osnovnom datumu. Ne može se koristiti za izračunate datume ili datume u niskama promenljivih. Primeri:

format_date_field('pubdate', 'yyyy.MM.dd')
format_date_field('#date_read', 'MMM dd, yyyy')

format_duration

class calibre.utils.formatter_functions.BuiltinFormatDuration[изворни код]

format_duration(value, template, [largest_unit]) -- formatira vrednost, broj sekundi, u niz koji prikazuje nedelje, dane, sate, minute i sekunde. Ako je vrednost float, zaokružuje se na najbliži ceo broj. Vi birate kako da formatirate vrednost koristeći šablon koji se sastoji od selektora vrednosti okruženih znakovima [ i ]. Selektori su:

  • [w]: nedelje

  • [d]: dani

  • [h]: sati

  • [m]: minuti

  • [s]: sekunde

Između selektora možete staviti proizvoljan tekst.

Sledeći primeri koriste trajanje od 2 dana (172.800 sekundi), 1 sat (3.600 sekundi) i 20 sekundi, što ukupno iznosi 176.420 sekundi.

  • format_duration(176420, '[d][h][m][s]') će vratiti vrednost 2d 1h 0m 20s.

  • format_duration(176420, '[h][m][s]') će vratiti vrednost 49h 0m 20s.

  • format_duration(176420, 'Your reading time is [d][h][m][s]') vraća vrednost Your reading time is 49h 0m 20s.

  • format_duration(176420, '[w][d][h][m][s]') će vratiti vrednost 2d 1h 0m 20s. Imajte na umu da se vrednost nula nedelja ne vraća.

Ako želite da vidite nulte vrednosti za stavke kao što su nedelje u gornjem primeru, koristite selektor velikim slovom. Na primer, sledeće koristi 'W' za prikaz nula nedelja:

format_duration(176420, '[W][d][h][m][s]') vraća 0w 2d 1h 0m 20s.

Podrazumevano, tekst koji prati vrednost je selektor praćen razmakom. To možete promeniti u bilo koji tekst koji želite. Format za selektor sa vašim tekstom je selektor praćen dvotačkom, pa tekstualnim segmentima razdvojenim znakovima '|'. Morate uključiti sve znakove razmaka koje želite u izlazu.

Možete obezbediti od jednog do tri tekstualna segmenta.

  • Ako obezbedite jedan segment, kao u [w: weeks ], tada se taj segment koristi za sve vrednosti.

  • Ako obezbedite dva segmenta, kao u [w: weeks | week ], tada se prvi segment koristi za 0 i više od 1. Drugi segment se koristi za 1.

  • Ako obezbedite tri segmenta, kao u [w: weeks | week | weeks ], tada se prvi segment koristi za 0, drugi segment se koristi za 1, a treći segment se koristi za više od 1.

Drugi oblik je ekvivalentan trećem obliku u mnogim jezicima.

Na primer, selektor:

  • [w: weeks | week | weeks ] proizvodi '0 weeks ', '1 week ', ili '2 weeks '.

  • [w: weeks | week ] proizvodi '0 weeks ', '1 week ', ili '2 weeks '.

  • [w: weeks ] proizvodi 0 weeks ', 1 weeks ', ili 2 weeks '.

Opcioni parametar largest_unit određuje najveću od nedelja, dana, sati, minuta i sekundi koje će šablon proizvesti. Mora biti jedan od selektora vrednosti. Ovo može biti korisno za skraćivanje vrednosti.

format_duration(176420, '[h][m][s]', 'd') će vratiti vrednost 1h 0m 20s umesto 49h 0m 20s.

format_number

class calibre.utils.formatter_functions.BuiltinFormatNumber[изворни код]

format_number(value, template) -- tumači value kao broj i formatira taj broj pomoću Python šablona za formatiranje, kao što su {0:5.2f}, {0:,d} ili ${0:5,.2f}. Šablon za formatiranje mora počinjati sa {0: i završavati se sa }, kao u prethodnim primerima. Izuzetak: početno "{0:" i završno "}" mogu se izostaviti ako šablon sadrži samo format. Više primera potražite u dokumentaciji Template Language i Python. Vraća prazan string ako formatiranje ne uspe.

human_readable

class calibre.utils.formatter_functions.BuiltinHumanReadable[изворни код]

human_readable(value) -- očekuje da value bude broj i vraća nisku koja predstavlja taj broj u KB, MB, GB, itd.

rating_to_stars

class calibre.utils.formatter_functions.BuiltinRatingToStars[изворни код]

rating_to_stars(value, use_half_stars) -- vraća value kao niz znakova zvezdica (★). Vrednost mora biti broj između 0 i 5. Postavite use_half_stars na 1 ako želite znakove poluzvezdica za razlomljene brojeve dostupne kod prilagođenih kolona za ocene.

Funkcije baze podataka

annotation_count

class calibre.utils.formatter_functions.BuiltinAnnotationCount[изворни код]

annotation_count() -- vraća ukupan broj anotacija svih tipova pridruženih trenutnoj knjizi. Ova funkcija radi samo u grafičkom interfejsu (GUI) i na serveru sadržaja.

approximate_formats

class calibre.utils.formatter_functions.BuiltinApproximateFormats[изворни код]

approximate_formats() -- vraća listu formata povezanih sa knjigom, razdvojenih zarezom. Pošto lista dolazi iz calibre baze podataka, a ne iz sistema datoteka, nema garancije da je lista tačna, iako verovatno jeste. Imajte na umu da su rezultujuća imena formata uvek velika slova, kao u EPUB. Funkcija approximate_formats() je mnogo brža od formats_... funkcija.

Ova funkcija radi samo u grafičkom interfejsu (GUI). Ako želite da koristite ove vrednosti u šablonima za čuvanje na disk ili slanje na uređaj, morate napraviti prilagođenu "Kolonu izvedenu iz drugih kolona", koristiti funkciju u šablonu te kolone i koristiti vrednost te kolone u vašim šablonima za čuvanje/slanje.

book_count

class calibre.utils.formatter_functions.BuiltinBookCount[изворни код]

book_count(query, use_vl) -- vraća broj knjiga pronađenih pretragom za query. Ako je use_vl 0 (nula), virtuelne biblioteke se ignorišu. Ova funkcija i njen pratilac book_values() su posebno korisni u pretragama šablona, podržavajući pretrage koje kombinuju informacije iz mnogih knjiga, kao što je traženje serijala sa samo jednom knjigom. Ne može se koristiti u kompozitnim kolonama osim ako je podešavanje allow_template_database_functions_in_composites postavljeno na True. Može se koristiti samo u grafičkom interfejsu (GUI).

Na primer, ova pretraga šablona koristi ovu funkciju i njenog pratioca da pronađe sve serijale sa samo jednom knjigom:

  • Definišite sačuvan šablon (koristeći Preferences → Advanced → Template functions) pod nazivom series_only_one_book (ime je proizvoljno). Šablon je:

    program:
        vals = globals(vals='');
        if !vals then
            all_series = book_values('series', 'series:true', ',', 0);
            for series in all_series:
                if book_count('series:="' & series & '"', 0) == 1 then
                    vals = list_join(',', vals, ',', series, ',')
                fi
            rof;
            set_globals(vals)
        fi;
        str_in_list(vals, ',', $series, 1, '')
    

    Prvi put kada se šablon pokrene (prva proverena knjiga), on čuva rezultate pretrage baze podataka u globalnoj promenljivoj šablona pod nazivom vals. Ovi rezultati se koriste za proveru narednih knjiga bez ponavljanja pretrage.

  • Koristite sačuvan šablon u pretrazi šablona:

template:"program: series_only_one_book()#@#:n:1"

Korišćenje sačuvanog šablona umesto stavljanja šablona u pretragu eliminiše probleme uzrokovane potrebom za eskapiranjem navodnika u izrazima pretrage.

Ova funkcija se može koristiti samo u grafičkom interfejsu (GUI) i na serveru sadržaja.

book_values

class calibre.utils.formatter_functions.BuiltinBookValues[изворни код]

book_values(column, query, sep, use_vl) -- vraća listu jedinstvenih vrednosti sadržanih u koloni column (ime za pretragu), razdvojenih sa sep, u knjigama pronađenim pretragom za query. Ako je use_vl 0 (nula), virtuelne biblioteke se ignorišu. Ova funkcija i njen pratilac book_count() su posebno korisni u pretragama šablona, podržavajući pretrage koje kombinuju informacije iz mnogih knjiga, kao što je traženje serijala sa samo jednom knjigom. Ne može se koristiti u kompozitnim kolonama osim ako je podešavanje allow_template_database_functions_in_composites postavljeno na True. Ova funkcija se može koristiti samo u grafičkom interfejsu (GUI) i na serveru sadržaja.

extra_file_modtime

class calibre.utils.formatter_functions.BuiltinExtraFileModtime[изворни код]

extra_file_modtime(file_name, format_string) -- vraća vreme izmene dodatne datoteke file_name u fascikli data/ knjige ako postoji, u suprotnom -1. Vreme izmene je formatirano prema format_string (pogledajte format_date() za detalje). Ako je format_string prazan niz, vraća vreme izmene kao broj sekundi sa pokretnim zarezom od epohe. Pogledajte takođe funkcije has_extra_files(), extra_file_names() i extra_file_size(). Epoha zavisi od operativnog sistema. Ova funkcija se može koristiti samo u grafičkom interfejsu (GUI) i na serveru sadržaja.

extra_file_names

class calibre.utils.formatter_functions.BuiltinExtraFileNames[изворни код]

extra_file_names(sep [, pattern]) -- vraća listu dodatnih datoteka u fascikli data/ knjige razdvojenih sa sep. Ako je naveden opcioni parametar pattern, regularni izraz, lista se filtrira na datoteke koje odgovaraju pattern-u. Podudaranje uzorka ne razlikuje velika i mala slova. Pogledajte takođe funkcije has_extra_files(), extra_file_modtime() i extra_file_size(). Ova funkcija se može koristiti samo u grafičkom interfejsu (GUI) i na serveru sadržaja.

extra_file_size

class calibre.utils.formatter_functions.BuiltinExtraFileSize[изворни код]

extra_file_size(file_name) -- vraća veličinu u bajtovima dodatne datoteke file_name u fascikli data/ knjige ako postoji, u suprotnom -1. Pogledajte takođe funkcije has_extra_files(), extra_file_names() i extra_file_modtime(). Ova funkcija se može koristiti samo u grafičkom interfejsu (GUI) i na serveru sadržaja.

formats_modtimes

class calibre.utils.formatter_functions.BuiltinFormatsModtimes[изворни код]

formats_modtimes(date_format_string) -- vraća listu stavki FMT:DATE razdvojenih zarezom, koje predstavljaju vremena izmene za formate knjige. Parametar date_format_string određuje kako će datum biti formatiran. Pogledajte funkciju format_date() za detalje. Možete koristiti funkciju select() da biste dobili vreme izmene za određeni format. Imajte na umu da su imena formata uvek velika slova, kao u EPUB.

formats_path_segments

class calibre.utils.formatter_functions.BuiltinFormatsPathSegments[изворни код]

formats_path_segments(with_author, with_title, with_format, with_ext, sep) -- vraća delove putanje do formata knjige u calibre biblioteci razdvojene sa sep. Parametar sep bi obično trebalo da bude kosa crta ('/'). Jedna upotreba je da se osigura da su putanje generisane u šablonima za čuvanje na disk i slanje na uređaj dosledno skraćene. Druga je da se osigura da se putanje na uređaju poklapaju sa putanjama u calibre biblioteci.

Putanja knjige se sastoji od 3 segmenta: autor, naslov uključujući calibre id baze podataka u zagradi, i format (autor - naslov). Calibre može skratiti bilo koji od ova tri zbog ograničenja dužine imena datoteke. Vi birate koje segmente da uključite prosleđivanjem 1 za taj segment. Ako ne želite segment, prosledite 0 ili prazan niz za taj segment. Na primer, sledeće vraća samo ime formata bez ekstenzije:

formats_path_segments(0, 0, 1, 0, '/')

Pošto postoji samo jedan segment, separator se ignoriše.

Ako postoji više formata (više ekstenzija), jedna od ekstenzija će biti izabrana nasumično. Ako vam je bitno koja se ekstenzija koristi, dobijte putanju bez ekstenzije, a zatim joj dodajte željenu ekstenziju.

Primeri: Pretpostavimo da postoji knjiga u calibre biblioteci u epub formatu autora Joe Blogs sa naslovom 'Help'. Imala bi putanju

Joe Blogs/Help - (calibre_id)/Help - Joe Blogs.epub

Sledeće pokazuje šta se vraća za različite parametre:

  • formats_path_segments(0, 0, 1, 0, '/') vraća Help - Joe Blogs

  • formats_path_segments(0, 0, 1, 1, '/') vraća Help - Joe Blogs.epub

  • formats_path_segments(1, 0, 1, 1, '/') vraća Joe Blogs/Help - Joe Blogs.epub

  • formats_path_segments(1, 0, 1, 0, '/') vraća Joe Blogs/Help - Joe Blogs

  • formats_path_segments(0, 1, 0, 0, '/') vraća Help - (calibre_id)

formats_paths

class calibre.utils.formatter_functions.BuiltinFormatsPaths[изворни код]

formats_paths([separator]) -- vraća listu stavki FMT:PATH razdvojenih sa separator, koje daju punu putanju do formata knjige. Argument separator je opcioni. Ako nije naveden, separator je ', ' (zarez i razmak). Ako je separator zarez, možete koristiti funkciju select() da biste dobili putanju za određeni format. Imajte na umu da su imena formata uvek velika slova, kao u EPUB.

formats_sizes

class calibre.utils.formatter_functions.BuiltinFormatsSizes[изворни код]

formats_sizes() -- vraća listu stavki FMT:SIZE razdvojenih zarezom, koje daju veličine formata knjige u bajtovima. Možete koristiti funkciju select() da biste dobili veličinu za određeni format. Imajte na umu da su imena formata uvek velika slova, kao u EPUB.

get_note

class calibre.utils.formatter_functions.BuiltinGetNote[изворни код]

get_note(field_name, field_value, plain_text) -- preuzima belešku za polje field_name sa vrednošću field_value. Ako je plain_text prazan, vraća HTML beleške uključujući slike. Ako je plain_text 1 (ili '1'), vraća običan tekst beleške. Ako beleška ne postoji, u oba slučaja vraća prazan niz. Primer:

  • Vraća HTML beleške pridružene oznaci Fiction:

    program:
        get_note('tags', 'Fiction', '')
    
  • Vraća običan tekst beleške pridružene autoru Isaac Asimov:

    program:
        get_note('authors', 'Isaac Asimov', 1)
    

Ova funkcija radi samo u grafičkom interfejsu (GUI) i na serveru sadržaja.

has_extra_files

class calibre.utils.formatter_functions.BuiltinHasExtraFiles[изворни код]

has_extra_files([pattern]) -- vraća broj dodatnih datoteka, u suprotnom vraća prazan niz. Ako je naveden opcioni parametar pattern (regularni izraz), lista se filtrira na datoteke koje odgovaraju pattern-u pre nego što se datoteke prebroje. Podudaranje uzorka ne razlikuje velika i mala slova. Pogledajte takođe funkcije extra_file_names(), extra_file_size() i extra_file_modtime(). Ova funkcija se može koristiti samo u grafičkom interfejsu (GUI) i na serveru sadržaja.

has_note

class calibre.utils.formatter_functions.BuiltinHasNote[изворни код]

has_note(field_name, field_value). Proverava da li polje ima belešku. Ova funkcija ima dve varijante:

  • ako field_value nije '' (prazan niz), vraća '1' ako vrednost field_value u polju field_name ima belešku, u suprotnom vraća ''.

    Primer: has_note('tags', 'Fiction') vraća '1' ako oznaka fiction ima pridruženu belešku, u suprotnom ''.

  • Ako je field_value jednak '', tada vraća listu vrednosti u field_name koje imaju belešku. Ako nijedna stavka u polju nema belešku, vraća ''. Ova varijanta je korisna za prikazivanje ikonica kolona ako bilo koja vrednost u polju ima belešku, umesto specifične vrednosti.

    Primer: has_note('authors', '') vraća listu autora koji imaju beleške, ili '' ako nijedan autor nema belešku.

Možete testirati da li sve vrednosti u field_name imaju belešku upoređivanjem dužine liste povratne vrednosti ove funkcije sa dužinom liste vrednosti u field_name. Primer:

list_count(has_note('authors', ''), '&') ==# list_count_field('authors')

Ova funkcija radi samo u grafičkom interfejsu (GUI) i na serveru sadržaja.

reading_progress

class calibre.utils.formatter_functions.BuiltinReadingProgress[изворни код]

reading_progress(book_id, [user, output_fmt, which, fmt]) -- vraća napredak čitanja u navedenom izlaznom formatu.Parametar user podrazumevano odgovara bilo kom korisniku. Koristite vrednost local da biste se podudarali sa napretkom čitanja u calibre čitaču e-knjiga. Koristite _ da biste se podudarali sa napretkom čitanja za anonimne korisnike čitača na serveru sadržaja. Bilo koja druga vrednost odgovara odgovarajućem korisničkom imenu koje se koristi na serveru sadržaja.

Parametar output_fmt kontroliše format teksta koji vraća ova funkcija. Prihvata bilo koju od sledećih vrednosti:

  • page_count - podrazumevano, ispisuje pročitanih stranica / ukupno stranica. Ako brojanje stranica nije omogućeno, umesto toga ispisuje procenat čitanja.

  • percent - ispisuje procenat čitanja

  • percent_number - ispisuje procenat čitanja kao broj bez znaka za procenat, korisno za sortiranje.

  • pos_frac - ispisuje razlomak između nule i jedan.

Parametar which kontroliše kako se bira specifičan zapis o napretku čitanja za navedenog user-a. Može postojati više od jednog zapisa ako nije naveden korisnik ili ako je knjiga čitana u više formata ili na više uređaja. Prihvata dve vrednosti:

  • most_recent - napredak najskorijeg čitaoca knjige (podrazumevana vrednost)

  • furthest - najdalji napredak od svih odgovarajućih zapisa

Parametar fmt kontroliše koji format knjige se koristi. Podrazumevano je vraćanje zapisa za sve formate, a specifičan zapis se zatim bira parametrom which.

Neki primeri:

{id:reading_progress()} -- napredak čitanja kao pročitanih stranica / ukupno stranica
                           za najskoriju sesiju čitanja ove knjige
{id:reading_progress(,percent)} -- isto kao gore, ali kao procenat
{id:reading_progress(,pos_frac,furthest)} -- isto kao gore, ali kao razlomak i koristeći
                                             najdalji napredak u ovoj knjizi.
{id:reading_progress(bob,pos_frac,furthest,EPUB)} -- za korisnika "bob" i format "EPUB".

Funkcije za datum

date_arithmetic

class calibre.utils.formatter_functions.BuiltinDateArithmetic[изворни код]

date_arithmetic(value, calc_spec, fmt) -- Izračunava novi datum iz value koristeći calc_spec. Vraća novi datum formatiran prema opcionom fmt: ako nije naveden, rezultat će biti u ISO formatu. calc_spec je niz formiran spajanjem parova vW (valueWhat) gde je v broj koji može biti negativan, a W je jedno od sledećih slova:

  • s: dodaje v sekundi datumu

  • m: dodaje v minuta datumu

  • h: dodaje v sati datumu

  • d: dodaje v dana datumu

  • w: dodaje v nedelja datumu

  • y: dodaje v godina datumu, gde je godina 365 dana.

Primer: '1s3d-1m' će dodati 1 sekundu, dodati 3 dana i oduzeti 1 minut od datuma.

days_between

class calibre.utils.formatter_functions.BuiltinDaysBetween[изворни код]

days_between(date1, date2) -- vraća broj dana između date1 i date2. Broj je pozitivan ako je date1 veći od date2, u suprotnom je negativan. Ako date1 ili date2 nisu datumi, funkcija vraća prazan niz.

today

class calibre.utils.formatter_functions.BuiltinToday[изворни код]

today() -- vraća niz datum+vreme za danas (sada). Ova vrednost je dizajnirana za upotrebu u format_date ili days_between, ali se njome može manipulisati kao i bilo kojim drugim nizom. Datum je u ISO formatu datuma/vremena.

GUI funkcije

selected_books

class calibre.utils.formatter_functions.BuiltinSelectedBooks[изворни код]

selected_books([sorted_by, ascending]) -- vraća listu ID-ova knjiga prema redosledu izbora za trenutno izabrane knjige.

Ova funkcija se može koristiti samo u grafičkom interfejsu (GUI).

selected_column

class calibre.utils.formatter_functions.BuiltinSelectedColumn[изворни код]

selected_column() -- vraća naziv za pretragu kolone koja sadrži trenutno izabranu ćeliju. Vraća '' ako nijedna ćelija nije izabrana.

Ova funkcija se može koristiti samo u grafičkom interfejsu (GUI).

show_dialog

class calibre.utils.formatter_functions.BuiltinShowDialog[изворни код]

show_dialog(html_or_text) -- prikazuje dijalog koji sadrži html ili tekst. Funkcija vraća '1' ako korisnik pritisne OK, '' ako pritisne Cancel.

Ova funkcija se može koristiti samo u grafičkom interfejsu (GUI).

sort_book_ids

class calibre.utils.formatter_functions.BuiltinSortBookIds[изворни код]

sort_book_ids(book_ids, sorted_by, ascending [, sorted_by, ascending]*) -- vraća listu ID-ova knjiga sortiranih prema koloni navedenoj nazivom za pretragu u sorted_by redosledom navedenim u ascending. Ako je ascending '1', tada su knjige sortirane prema vrednosti u koloni 'sorted_by' rastućim redosledom, u suprotnom opadajućim. Možete imati više parova sorted_by, ascending. Prvi par određuje glavni redosled.

Ova funkcija se može koristiti samo u grafičkom interfejsu (GUI).

width_from_pages

class calibre.utils.formatter_functions.BuiltinWidthFromPages[изворни код]

width_from_pages(value [, num_of_pages_for_max_width, logarithmic_factor, default_width]) -- vraća širinu rikne knjige kao razlomak između '0' i '1' na osnovu broja stranica. Ovo se koristi za izračunavanje širine rikne u prikazu Police za knjige, na osnovu broja stranica. Opcioni argumenti kontrolišu kako se širina izračunava.

  • num_of_pages_for_max_width -- kontroliše najšire knjige, svakoj knjizi sa najmanje navedenim brojem stranica dodeljuje se širina 1. Podrazumevano je 1500.

  • logarithmic_factor -- kontroliše koliko brzo širina varira kako se broj stranica kreće od 0 do maksimuma. Podrazumevano je 2.

  • default_width -- je širina za knjige sa nevažećim brojem stranica.

Iteracija kroz vrednosti

first_non_empty

class calibre.utils.formatter_functions.BuiltinFirstNonEmpty[изворни код]

first_non_empty(value [, value]*) -- vraća prvu value koja nije prazna. Ako su sve vrednosti prazne, vraća se prazan niz. Možete imati onoliko vrednosti koliko želite.

lookup

class calibre.utils.formatter_functions.BuiltinLookup[изворни код]

lookup(value, [ pattern, key, ]* else_key) -- obrasci će se proveravati u odnosu na value redom. Ako se pattern poklapa, vraća se vrednost polja nazvanog prema key. Ako se nijedan obrazac ne poklapa, vraća se vrednost polja nazvanog prema else_key. Pogledajte takođe funkciju switch().

switch

class calibre.utils.formatter_functions.BuiltinSwitch[изворни код]

switch(value, [patternN, valueN,]+ else_value) -- za svaki par patternN, valueN, proverava da li se value poklapa sa regularnim izrazom patternN i ako je tako, vraća pridruženu vrednost valueN. Ako se nijedan patternN ne poklapa, vraća se else_value. Možete imati onoliko parova patternN, valueN koliko želite. Vraća se prvo poklapanje.

switch_if

class calibre.utils.formatter_functions.BuiltinSwitchIf[изворни код]

switch_if([test_expression, value_expression,]+ else_expression) -- za svaki par test_expression, value_expression, proverava da li je test_expression tačan (nije prazan) i ako jeste, vraća rezultat value_expression. Ako nijedan test_expression nije tačan, vraća se rezultat else_expression. Možete imati onoliko parova test_expression, value_expression koliko želite.

Manipulacija listama

list_count

class calibre.utils.formatter_functions.BuiltinCount[изворни код]

list_count(value, separator) -- tumači vrednost kao listu stavki razdvojenih sa separator i vraća broj stavki u listi. Većina lista koristi zarez kao separator, ali authors (autori) koristi ampersand (&).

Primeri: {tags:list_count(,)}, {authors:list_count(&)}.

Aliasi: count(), list_count()

list_count_field

class calibre.utils.formatter_functions.BuiltinFieldListCount[изворни код]

list_count_field(lookup_name)-- vraća broj stavki u polju sa nazivom za pretragu lookup_name. Polje mora biti višestruko, kao što su authors ili tags, u suprotnom funkcija izbacuje grešku. Ova funkcija je mnogo brža od list_count() jer radi direktno sa calibre podacima bez prethodnog pretvaranja u niz. Primer: list_count_field('tags').

list_count_matching

class calibre.utils.formatter_functions.BuiltinListCountMatching[изворни код]

list_count_matching(value, pattern, separator) -- tumači value kao listu stavki razdvojenih sa separator, vraćajući broj stavki u listi koje se poklapaju sa regularnim izrazom pattern.

Aliasi: list_count_matching(), count_matching()

list_difference

class calibre.utils.formatter_functions.BuiltinListDifference[изворни код]

list_difference(list1, list2, separator) -- vraća listu napravljenu uklanjanjem iz list1 bilo koje stavke koja se nalazi u list2 korišćenjem poređenja koje ne razlikuje velika i mala slova. Stavke u list1 i list2 su razdvojene separatorom separator, kao i stavke u vraćenoj listi.

list_equals

class calibre.utils.formatter_functions.BuiltinListEquals[изворни код]

list_equals(list1, sep1, list2, sep2, yes_val, no_val) -- vraća yes_val ako list1 i list2 sadrže iste stavke, u suprotnom vraća no_val. Stavke se određuju razdvajanjem svake liste korišćenjem odgovarajućeg znaka separatora (sep1 ili sep2). Redosled stavki u listama nije bitan. Poređenje ne razlikuje velika i mala slova.

list_intersection

class calibre.utils.formatter_functions.BuiltinListIntersection[изворни код]

list_intersection(list1, list2, separator) -- vraća listu napravljenu uklanjanjem iz list1 bilo koje stavke koja se ne nalazi u list2 korišćenjem poređenja koje ne razlikuje velika i mala slova. Stavke u list1 i list2 su razdvojene separatorom separator, kao i stavke u vraćenoj listi.

list_join

class calibre.utils.formatter_functions.BuiltinListJoin[изворни код]

list_join(with_separator, list1, separator1 [, list2, separator2]*) -- vraća listu napravljenu spajanjem stavki iz izvornih lista (list1 itd.) koristeći with_separator između stavki u rezultujućoj listi. Stavke u svakoj izvornoj list[123...] su razdvojene pridruženim separator[123...]. Lista može sadržati nulte vrednosti. To može biti polje kao što je publisher koje ima jednu vrednost, efektivno listu sa jednom stavkom. Duplikati se uklanjaju korišćenjem poređenja koje ne razlikuje velika i mala slova. Stavke se vraćaju redosledom kojim se pojavljuju u izvornim listama. Ako se stavke na listama razlikuju samo po veličini slova, koristi se poslednja. Svi separatori mogu imati više od jednog znaka.

Primer:

program:
    list_join('#@#', $authors, '&', $tags, ',')

Možete koristiti list_join na rezultatima prethodnih poziva list_join na sledeći način:

program:
    a = list_join('#@#', $authors, '&', $tags, ',');
    b = list_join('#@#', a, '#@#', $#genre, ',', $#people, '&', 'some value', ',')

Možete koristiti izraze za generisanje liste. Na primer, pretpostavimo da želite stavke za authors i #genre, ali sa žanrom promenjenim u reč "Genre: " praćenu prvim slovom žanra, tj. žanr "Fiction" postaje "Genre: F". Sledeće će to uraditi:

program:
    list_join('#@#', $authors, '&', list_re($#genre, ',', '^(.).*$', 'Genre: \1'),  ',')

list_re

class calibre.utils.formatter_functions.BuiltinListRe[изворни код]

list_re(src_list, separator, include_re, opt_replace) -- Konstruiše listu tako što prvo razdvaja src_list na stavke koristeći znak separator. Za svaku stavku u listi, proverava da li se poklapa sa include_re. Ako se poklapa, dodaje je u listu koja se vraća. Ako opt_replace nije prazan niz, primenjuje zamenu pre dodavanja stavke u vraćenu listu.

list_re_group

class calibre.utils.formatter_functions.BuiltinListReGroup[изворни код]

list_re_group(src_list, separator, include_re, search_re [,template_for_group]*) -- Slično kao list_re() osim što zamene nisu opcione. Koristi re_group(item, search_re, template ...) prilikom vršenja zamena.

list_remove_duplicates

class calibre.utils.formatter_functions.BuiltinListRemoveDuplicates[изворни код]

list_remove_duplicates(list, separator) -- vraća listu napravljenu uklanjanjem duplih stavki u list. Ako se stavke razlikuju samo po veličini slova, vraća se poslednja. Stavke u list su razdvojene separatorom separator, kao i stavke u vraćenoj listi.

list_sort

class calibre.utils.formatter_functions.BuiltinListSort[изворни код]

list_sort(value, direction, separator) -- vraća value sortiranu korišćenjem leksičkog sortiranja koje ne razlikuje velika i mala slova. Ako je direction nula (broj ili znak), value se sortira rastuće, u suprotnom opadajuće. Stavke liste su razdvojene separatorom separator, kao i stavke u vraćenoj listi.

list_split

class calibre.utils.formatter_functions.BuiltinListSplit[изворни код]

list_split(list_val, sep, id_prefix) -- deli list_val na zasebne vrednosti koristeći sep, a zatim dodeljuje vrednosti lokalnim promenljivama nazvanim id_prefix_N gde je N pozicija vrednosti u listi. Prva stavka ima poziciju 0 (nula). Funkcija vraća poslednji element u listi.

Primer:

list_split('one:two:foo', ':', 'var')

je ekvivalentno sa:

var_0 = 'one'
    var_1 = 'two'
    var_2 = 'foo'

list_union

class calibre.utils.formatter_functions.BuiltinListUnion[изворни код]

list_union(list1, list2, separator) -- vraća listu napravljenu spajanjem stavki iz list1 i list2, uklanjajući duple stavke korišćenjem poređenja koje ne razlikuje velika i mala slova. Ako se stavke razlikuju po veličini slova, koristi se ona iz list1. Stavke u list1 i list2 su razdvojene separatorom separator, kao i stavke u vraćenoj listi.

Aliasi: merge_lists(), list_union()

range

class calibre.utils.formatter_functions.BuiltinRange[изворни код]

range(start, stop, step, limit) -- vraća listu brojeva generisanih petljom kroz opseg određen parametrima start, stop i step, sa maksimalnom dužinom limit. Prva proizvedena vrednost je 'start'. Sledeće vrednosti su next_v = current_v + step. Petlja se nastavlja dok je next_v < stop pod pretpostavkom da je step pozitivan, u suprotnom dok je next_v > stop. Prazna lista se proizvodi ako start ne prođe test: start >= stop ako je step pozitivan. limit postavlja maksimalnu dužinu liste i podrazumevano iznosi 1000. Parametri start, step i limit su opcioni. Pozivanje range() sa jednim argumentom određuje stop. Dva argumenta određuju start i stop. Tri argumenta određuju start, stop i step. Četiri argumenta određuju start, stop, step i limit.

Primeri:

range(5) -> '0, 1, 2, 3, 4'
range(0, 5) -> '0, 1, 2, 3, 4'
range(-1, 5) -> '-1, 0, 1, 2, 3, 4'
range(1, 5) -> '1, 2, 3, 4'
range(1, 5, 2) -> '1, 3'
range(1, 5, 2, 5) -> '1, 3'
range(1, 5, 2, 1) -> error(limit exceeded)

subitems

class calibre.utils.formatter_functions.BuiltinSubitems[изворни код]

subitems(value, start_index, end_index) -- Ova funkcija razbija liste hijerarhijskih stavki nalik oznakama kao što su žanrovi. Tumači value kao listu stavki nalik oznakama razdvojenih zarezom, gde je svaka stavka lista razdvojena tačkom. Vraća novu listu napravljenu izdvajanjem komponenti od start_index do end_index iz svake stavke, a zatim ponovnim spajanjem rezultata. Duplikati se uklanjaju. Prva podstavka u listi razdvojenoj tačkom ima indeks nula. Ako je indeks negativan, onda se broji od kraja liste. Kao poseban slučaj, pretpostavlja se da je end_index nula dužina liste.

Primeri:

  • Pretpostavimo kolonu #genre koja sadrži "A.B.C":

    • {#genre:subitems(0,1)} vraća "A"

    • {#genre:subitems(0,2)} vraća "A.B"

    • {#genre:subitems(1,0)} vraća "B.C"

  • Pretpostavimo kolonu #genre koja sadrži "A.B.C, D.E":

    • {#genre:subitems(0,1)} vraća "A, D"

    • {#genre:subitems(0,2)} vraća "A.B, D.E"

sublist

class calibre.utils.formatter_functions.BuiltinSublist[изворни код]

sublist(value, start_index, end_index, separator) -- tumači value kao listu stavki razdvojenih sa separator, vraćajući novu listu napravljenu od stavki od start_index do end_index. Prva stavka je broj nula. Ako je indeks negativan, onda se broji od kraja liste. Kao poseban slučaj, pretpostavlja se da je end_index nula dužina liste.

Primeri pod pretpostavkom da kolona oznaka (tags) (koja je razdvojena zarezom) sadrži "A, B, C":

  • {tags:sublist(0,1,\,)} vraća "A"

  • {tags:sublist(-1,0,\,)} vraća "C"

  • {tags:sublist(0,-1,\,)} vraća "A, B"

Manipulacija niskama

character

class calibre.utils.formatter_functions.BuiltinCharacter[изворни код]

character(character_name) -- vraća znak imenovan sa character_name. Na primer, character('newline') vraća znak za novi red ('\n'). Podržana imena znakova su newline, return, tab i backslash. Ova funkcija se koristi za stavljanje ovih znakova u izlaz šablona.

check_yes_no

class calibre.utils.formatter_functions.BuiltinCheckYesNo[изворни код]

check_yes_no(field_name, is_undefined, is_false, is_true) -- proverava da li je vrednost da/ne polja imenovanog sa field_name jedna od vrednosti navedenih parametrima, vraćajući 'Yes' ako je pronađeno podudaranje, u suprotnom vraća prazan niz. Postavite parametar is_undefined, is_false ili is_true na 1 (broj) da biste proverili taj uslov, u suprotnom ga postavite na 0.

Primer: check_yes_no("#bool", 1, 0, 1) vraća 'Yes' ako je da/ne polje #bool ili True ili nedefinisano (ni True ni False).

Više od jednog parametra is_undefined, is_false ili is_true može biti postavljeno na 1.

contains

class calibre.utils.formatter_functions.BuiltinContains[изворни код]

contains(value, pattern, text_if_match, text_if_not_match) -- proverava da li se vrednost poklapa sa regularnim izrazom pattern. Vraća text_if_match ako se obrazac poklapa sa vrednošću, u suprotnom vraća text_if_not_match.

field_exists

class calibre.utils.formatter_functions.BuiltinFieldExists[изворни код]

field_exists(lookup_name) -- proverava da li polje (kolona) sa imenom za pretragu lookup_name postoji, vraćajući '1' ako postoji, a prazan niz ako ne.

ifempty

class calibre.utils.formatter_functions.BuiltinIfempty[изворни код]

ifempty(value, text_if_empty) -- ako value nije prazno, vraća tu vrednost, u suprotnom vraća text_if_empty.

re

class calibre.utils.formatter_functions.BuiltinRe[изворни код]

re(value, pattern, replacement) -- vraća value nakon primene regularnog izraza. Sve instance pattern u vrednosti se zamenjuju sa replacement. Jezik šablona koristi Python regularne izraze neosetljive na veličinu slova.

re_group

class calibre.utils.formatter_functions.BuiltinReGroup[изворни код]

re_group(value, pattern [, template_for_group]*) -- vraća string dobijen primenom regularnog izraza pattern na value i zamenom svakog podudaranja vrednošću koju vrati odgovarajući šablon. U režimu Template Program Mode, kao i kod funkcija template i eval, koristi se [[ za { i ]] za }.

Sledeći primer traži naziv serije sa više od jedne reči i pretvara prvu reč u velika slova:

program: re_group(field('series'), "(\S* )(.*)", "{$:uppercase()}", "{$}")'}

shorten

class calibre.utils.formatter_functions.BuiltinShorten[изворни код]

shorten(value, left_chars, middle_text, right_chars) -- vraća skraćenu verziju value, koja se sastoji od left_chars znakova sa početka value, praćenih sa middle_text, a zatim right_chars znakova sa kraja value. left_chars i right_chars moraju biti nenegativni celi brojevi.

Primer: pretpostavimo da želite da prikažete naslov sa dužinom od najviše 15 znakova. Jedan šablon koji to radi je {title:shorten(9,-,5)}. Za knjigu sa naslovom Ancient English Laws in the Times of Ivanhoe rezultat će biti Ancient E-anhoe: prvih 9 znakova naslova, -, zatim poslednjih 5 znakova. Ako je dužina vrednosti manja od left chars + right chars + dužina middle text, vrednost će biti vraćena nepromenjena. Na primer, naslov The Dome ne bi bio promenjen.

strcat

class calibre.utils.formatter_functions.BuiltinStrcat[изворни код]

strcat(a [, b]*) -- vraća nisku formiranu spajanjem svih argumenata. Može uzeti bilo koji broj argumenata. U većini slučajeva možete koristiti operator & umesto ove funkcije.

strcat_max

class calibre.utils.formatter_functions.BuiltinStrcatMax[изворни код]

strcat_max(max, string1 [, prefix2, string2]*) -- vraća nisku formiranu spajanjem argumenata. Vraćena vrednost se inicijalizuje na string1. Niske napravljene od parova prefix, string se dodaju na kraj vrednosti sve dok je dužina rezultujuće niske manja od max. Prefiksi mogu biti prazni. Vraća string1 čak i ako je string1 duži od max. Možete proslediti onoliko parova prefix, string koliko želite.

strlen

class calibre.utils.formatter_functions.BuiltinStrlen[изворни код]

strlen(value) -- vraća dužinu niske value.

substr

class calibre.utils.formatter_functions.BuiltinSubstr[изворни код]

substr(value, start, end) -- vraća znakove od start-te do end-te pozicije u value. Prvi znak u value je nulti znak. Ako je end negativan, to označava taj broj znakova brojeći sa desne strane. Ako je end nula, to označava poslednji znak. Na primer, substr('12345', 1, 0) vraća '2345', a substr('12345', 1, -1) vraća '234'.

swap_around_articles

class calibre.utils.formatter_functions.BuiltinSwapAroundArticles[изворни код]

swap_around_articles(value, separator) -- vraća value sa članovima pomerenim na kraj, razdvojenim tačkom-zarezom. value može biti lista, u kom slučaju se obrađuje svaka stavka u listi. Ako je value lista, morate navesti separator. Ako separator nije naveden ili je prazan niz, value se tretira kao pojedinačna vrednost, a ne kao lista. Članovi su oni koje calibre koristi za generisanje title_sort.

swap_around_comma

class calibre.utils.formatter_functions.BuiltinSwapAroundComma[изворни код]

swap_around_comma(value) -- s obzirom na value u obliku B, A, vraća A B. Ovo je najkorisnije za konvertovanje imena u formatu prezime, ime u ime prezime. Ako u value nema zareza, funkcija vraća nepromenjenu vrednost.

test

class calibre.utils.formatter_functions.BuiltinTest[изворни код]

test(value, text_if_not_empty, text_if_empty) -- vraća text_if_not_empty ako vrednost nije prazna, u suprotnom vraća text_if_empty.

transliterate

class calibre.utils.formatter_functions.BuiltinTransliterate[изворни код]

transliterate(value) -- vraća niz u latiničnom pismu formiran približnim zvukom reči u value. Na primer, ako je value Фёдор Миха́йлович Достоевский, ova funkcija vraća Fiodor Mikhailovich Dostoievskii.

Ostalo

arguments

class calibre.utils.formatter_functions.BuiltinArguments[изворни код]

arguments(id[=expression] [, id[=expression]]*) -- koristi se u sačuvanom šablonu za preuzimanje argumenata prosleđenih u pozivu. Deklariše i inicijalizuje lokalne promenljive sa navedenim imenima, id-ovima, čineći ih efektivno parametrima. Promenljive su pozicione; dobijaju vrednost argumenta datog u pozivu na istoj poziciji. Ako odgovarajući argument nije naveden u pozivu, arguments() dodeljuje toj promenljivoj navedenu podrazumevanu vrednost. Ako nema podrazumevane vrednosti, promenljiva se postavlja na prazan niz.

assign

class calibre.utils.formatter_functions.BuiltinAssign[изворни код]

assign(id, value) -- dodeljuje value identifikatoru id, a zatim vraća value. id mora biti identifikator, a ne izraz. U većini slučajeva možete koristiti operator = umesto ove funkcije.

globals

class calibre.utils.formatter_functions.BuiltinGlobals[изворни код]

globals(id[=expression] [, id[=expression]]*) -- preuzima "globalne promenljive" koje se mogu proslediti u formatator. Ime id je ime globalne promenljive. Deklariše i inicijalizuje lokalne promenljive sa imenima globalnih promenljivih prosleđenih u id parametrima. Ako odgovarajuća promenljiva nije navedena u globalnim, dodeljuje joj navedenu podrazumevanu vrednost. Ako nema podrazumevane vrednosti, promenljiva se postavlja na prazan niz.

is_dark_mode

class calibre.utils.formatter_functions.BuiltinIsDarkMode[изворни код]

is_dark_mode() -- vraća '1' ako calibre radi u tamnom režimu, '' (prazan niz) u suprotnom. Ova funkcija se može koristiti u naprednim pravilima za boje i ikonice radi izbora različitih boja/ikonica u zavisnosti od režima. Primer:

if is_dark_mode() then 'dark.png' else 'light.png' fi

print

class calibre.utils.formatter_functions.BuiltinPrint[изворни код]

print(a [, b]*) -- štampa argumente na standardni izlaz. Osim ako ne pokrenete calibre iz komandne linije (calibre-debug -g), izlaz će otići u „crnu rupu“. Funkcija print uvek vraća svoj prvi argument.

set_globals

class calibre.utils.formatter_functions.BuiltinSetGlobals[изворни код]

set_globals(id[=expression] [, id[=expression]]*) -- postavlja globalnepromenljive koje se mogu proslediti u formatator. Globalnim promenljivama se daje ime id koje je prosleđeno. Vrednost id se koristi osim ako nije naveden izraz.

Pretraga liste

identifier_in_list

class calibre.utils.formatter_functions.BuiltinIdentifierInList[изворни код]

identifier_in_list(val, id_name [, found_val, not_found_val]) -- tretira val kao listu identifikatora razdvojenih zarezima. Identifikator ima format id_name:value. Parametar id_name je tekst naziva identifikatora koji se traži, bilo id_name ili id_name:regexp. Prvi slučaj se poklapa ako postoji bilo koji identifikator koji odgovara tom id_name. Drugi slučaj se poklapa ako id_name odgovara identifikatoru i regularni izraz odgovara vrednosti identifikatora. Ako su found_val i not_found_val obezbeđeni, onda ako postoji poklapanje, vraća se found_val, u suprotnom se vraća not_found_val. Ako found_val i not_found_val nisu obezbeđeni, onda ako postoji poklapanje, vraća se par identifier:value, u suprotnom prazna niska ('').

list_contains

class calibre.utils.formatter_functions.BuiltinInList[изворни код]

list_contains(value, separator, [ pattern, found_val, ]* not_found_val) -- tumači value kao listu stavki razdvojenih pomoću separator, proveravajući pattern u odnosu na svaku stavku u listi. Ako se pattern poklapa sa stavkom, vraća found_val, u suprotnom vraća not_found_val. Par pattern i found_value se može ponoviti onoliko puta koliko želite, što omogućava vraćanje različitih vrednosti u zavisnosti od vrednosti stavke. Obrasci se proveravaju redom i vraća se prvo poklapanje.

Aliasi: in_list(), list_contains()

list_item

class calibre.utils.formatter_functions.BuiltinListitem[изворни код]

list_item(value, index, separator) -- tumači value kao listu stavki razdvojenih sa separator, vraćajući stavku na poziciji 'index'. Prva stavka je broj nula. Poslednja stavka ima indeks -1 kao u list_item(-1,separator). Ako stavka nije u listi, vraća se prazan niz. Separator ima isto značenje kao u funkciji count, obično je zarez, ali je ampersand za liste tipa autora.

select

class calibre.utils.formatter_functions.BuiltinSelect[изворни код]

select(value, key) -- tumači value kao listu stavki razdvojenih zarezom, gde svaka stavka ima oblik id:id_value (calibre identifier format). Funkcija pronalazi prvi par sa id-jem jednakim key i vraća odgovarajuću id_value. Ako se nijedan id ne poklapa, funkcija vraća prazan niz.

str_in_list

class calibre.utils.formatter_functions.BuiltinStrInList[изворни код]

str_in_list(value, separator, [ string, found_val, ]+ not_found_val) -- tumači value kao listu stavki razdvojenih pomoću separator, a zatim upoređuje string sa svakom vrednošću u listi. string nije regularni izraz. Ako je string jednak bilo kojoj stavci (zanemarujući veličinu slova), vraća se odgovarajuća found_val. Ako string sadrži separators, on se takođe tretira kao lista i proverava se svaka podvrednost. Parovi string i found_value se mogu ponoviti onoliko puta koliko želite, što omogućava vraćanje različitih vrednosti u zavisnosti od vrednosti niske. Ako se nijedna niska ne poklapa, vraća se not_found_value. Niske se proveravaju redom. Vraća se prvo poklapanje.

Promena veličine slova

capitalize

class calibre.utils.formatter_functions.BuiltinCapitalize[изворни код]

capitalize(value) -- vraća value sa prvim slovom velikim, a ostalim malim.

lowercase

class calibre.utils.formatter_functions.BuiltinLowercase[изворни код]

lowercase(value) -- vraća value malim slovima.

titlecase

class calibre.utils.formatter_functions.BuiltinTitlecase[изворни код]

titlecase(value) -- vraća value u formatu naslova.

uppercase

class calibre.utils.formatter_functions.BuiltinUppercase[изворни код]

uppercase(value) -- vraća value velikim slovima.

Rekurzija

eval

class calibre.utils.formatter_functions.BuiltinEval[изворни код]

eval(string) -- obrađuje string kao program i prosleđuje lokalne promenljive. Ovo omogućava korišćenje procesora šablona za formiranje složenih rezultata iz lokalnih promenljivih. U režimu Template Program Mode, pošto se znakovi { i } tumače pre obrade šablona, morate koristiti [[ za znak { i ]] za znak }. Oni se automatski pretvaraju. Takođe imajte u vidu da se prefiksi i sufiksi (sintaksa |prefix|suffix) ne mogu koristiti u argumentu ove funkcije kada se koristi Template Program Mode.

template

class calibre.utils.formatter_functions.BuiltinTemplate[изворни код]

template(x) -- obrađuje x kao šablon. Obrada se obavlja u sopstvenom kontekstu, što znači da se promenljive ne dele između pozivaoca i obrade šablona. Ako se ne koristi General Program Mode, pošto su znakovi { i } posebni, morate koristiti [[ za znak { i ]] za znak }; oni se automatski pretvaraju. Na primer, template(\'[[title_sort]]\') obradiće šablon {title_sort} i vratiti njegovu vrednost. Takođe imajte u vidu da se prefiksi i sufiksi (sintaksa |prefix|suffix) ne mogu koristiti u argumentu ove funkcije kada se koristi Template Program Mode.

Relacione

cmp

class calibre.utils.formatter_functions.BuiltinCmp[изворни код]

cmp(value, y, lt, eq, gt) -- poredi value i y nakon pretvaranja oba u brojeve. Vraća lt ako je value <# y, eq ako je value ==# y, u suprotnom gt. Ova funkcija se obično može zameniti jednim od operatora numeričkog poređenja (==#, <#, >#, itd).

first_matching_cmp

class calibre.utils.formatter_functions.BuiltinFirstMatchingCmp[изворни код]

first_matching_cmp(val, [ cmp, result, ]* else_result) -- poredi val < cmp redom, vraćajući povezani result za prvo poređenje koje uspe. Vraća else_result ako nijedno poređenje ne uspe.

Primer:

i = 10;
first_matching_cmp(i,5,"small",10,"middle",15,"large","giant")

vraća "large". Isti primer sa početnom vrednošću 16 vraća "giant".

strcmp

class calibre.utils.formatter_functions.BuiltinStrcmp[изворни код]

strcmp(x, y, lt, eq, gt) -- vrši leksičko poređenje x i y bez obzira na veličinu slova. Vraća lt ako je x < y, eq ako je x == y, u suprotnom gt. Ova funkcija se često može zameniti jednim od operatora leksičkog poređenja (==, >, <, itd.)

strcmpcase

class calibre.utils.formatter_functions.BuiltinStrcmpcase[изворни код]

strcmpcase(x, y, lt, eq, gt) -- vrši leksičko poređenje x i y uz razlikovanje veličine slova. Vraća lt ako je x < y, eq ako je x == y, u suprotnom gt.

Napomena: Ovo NIJE podrazumevano ponašanje koje koristi calibre, na primer, kod operatora leksičkog poređenja (==, >, <, itd.). Ova funkcija može izazvati neočekivane rezultate, po mogućstvu koristite strcmp() kad god je to moguće.

URL funkcije

encode_for_url

class calibre.utils.formatter_functions.BuiltinEncodeForURL[изворни код]

encode_for_url(value, use_plus) -- vraća value kodiran za upotrebu u URL-u kako je navedeno sa use_plus. Vrednost se prvo URL-kodira. Zatim, ako je use_plus 0, razmaci se zamenjuju znakovima '+' (plus). Ako je 1, razmaci se zamenjuju sa %20.

Ako ne želite da vrednost bude kodirana, već da razmaci budu zamenjeni, koristite funkciju re(), kao u re($series, ' ', '%20')

Pogledajte takođe funkcije make_url(), make_url_extended() i query_string().

make_url

class calibre.utils.formatter_functions.BuiltinMakeUrl[изворни код]

make_url(path, [query_name, query_value]+) -- ova funkcija je najlakši način za konstruisanje URL-a upita. Koristi path, veb lokaciju i stranicu koju želite da pretražite, i parove query_name, query_value od kojih se upit gradi. Uopšteno, query_value mora biti URL-kodiran. Sa ovom funkcijom on je uvek kodiran, a razmaci se uvek zamenjuju znakovima '+'.

Mora biti obezbeđen najmanje jedan par query_name, query_value.

Primer: konstruisanje URL-a za Wikipedia pretragu autora Niccolò Machiavelli:

make_url('https://en.wikipedia.org/w/index.php', 'search', 'Niccolò Machiavelli')

vraća

https://en.wikipedia.org/w/index.php?search=Niccol%C3%B2+Machiavelli

Ako pišete šablon URL-a za detalje knjige u prilagođenoj koloni, koristite $item_name ili field('item_name') da biste dobili vrednost polja na koje je kliknuto. Primer: ako je kliknuto na Niccolò Machiavelli, URL možete konstruisati koristeći:

make_url('https://en.wikipedia.org/w/index.php', 'search', $item_name)

Pogledajte takođe funkcije make_url_extended(), query_string() i encode_for_url().

make_url_extended

class calibre.utils.formatter_functions.BuiltinMakeUrlExtended[изворни код]

make_url_extended(...) -- ova funkcija je slična make_url(), ali vam daje veću kontrolu nad komponentama URL-a. Komponente URL-a su

šema:://autoritet/putanja?niz upita.

Pogledajte Uniform Resource Locator na Wikipediji za više detalja.

Funkcija ima dve varijante:

make_url_extended(scheme, authority, path, [query_name, query_value]+)

i

make_url_extended(scheme, authority, path, query_string)

Ova funkcija vraća URL konstruisan od scheme, authority, path i ili query_string ili niza upita konstruisanog od parova argumenata upita. authority može biti prazan, što je slučaj za URL-ove sa calibre šemom. Morate obezbediti ili query_string ili najmanje jedan par query_name, query_value. Ako obezbedite query_string i on je prazan, rezultujući URL neće imati sekciju niza upita.

Primer 1: konstruisanje URL-a za Wikipedia pretragu autora Niccolò Machiavelli:

make_url_extended('https', 'en.wikipedia.org', '/w/index.php', 'search', 'Niccolò Machiavelli')

vraća

https://en.wikipedia.org/w/index.php?search=Niccol%C3%B2+Machiavelli

Pogledajte funkciju query_string() za primer korišćenja make_url_extended() sa query_string.

Ako pišete šablon URL-a za detalje knjige u prilagođenoj koloni, koristite $item_name ili field('item_name') da biste dobili vrednost polja na koje je kliknuto. Primer: ako je kliknuto na Niccolò Machiavelli, URL možete konstruisati koristeći:

make_url_extended('https', 'en.wikipedia.org', '/w/index.php', 'search', $item_name')

Pogledajte takođe funkcije make_url(), query_string() i encode_for_url().

query_string

class calibre.utils.formatter_functions.BuiltinQueryString[изворни код]

query_string([query_name, query_value, how_to_encode]+)-- vraća niz URL upita konstruisan od trijada query_name, query_value, how_to_encode. Niz upita je niz stavki gde svaka stavka izgleda kao query_name=query_value, gde je query_value URL-kodiran prema instrukcijama. Stavke upita su razdvojene znakovima '&' (ampersand).

Ako je how_to_encode 0, tada se query_value kodira, a razmaci se zamenjuju znakovima '+' (plus). Ako je how_to_encode 1, tada se query_value kodira sa razmacima zamenjenim sa %20. Ako je how_to_encode 2, tada se query_value vraća nepromenjen; ne vrši se kodiranje i razmaci se ne zamenjuju. Ako želite da query_value ne bude kodiran, ali da razmaci budu zamenjeni, koristite funkciju re(), kao u re($series, ' ', '%20')

Ovu funkciju koristite ako vam je potrebna specifična kontrola nad tim kako se konstruišu delovi niza upita. Rezultujući niz upita možete zatim koristiti u make_url_extended(), kao u

make_url_extended(
       'https', 'your_host', 'your_path',
       query_string('encoded', 'Hendrik Bäßler', 0, 'unencoded', 'Hendrik Bäßler', 2))

što vam daje

https://your_host/your_path?encoded=Hendrik+B%C3%A4%C3%9Fler&unencoded=Hendrik Bäßler

Morate imati najmanje jednu trijadu query_name, query_value, how_to_encode, ali možete imati koliko god želite.

Povratna vrednost je niz URL upita sa svim navedenim stavkama, na primer: name1=val1[&nameN=valN]*. Imajte na umu da separator '?' za putanju / niz upita nije uključen u vraćeni rezultat.

Ako pišete šablon URL-a za detalje knjige u prilagođenoj koloni, koristite $item_name ili field('item_name') da biste dobili nekodiranu vrednost polja na koje je kliknuto. Takođe imate item_value_quoted gde je vrednost već kodirana sa znakovima plus koji zamenjuju razmake, i item_value_no_plus gde je vrednost već kodirana sa %20 koji zamenjuje razmake.

Pogledajte takođe funkcije make_url(), make_url_extended() i encode_for_url().

to_hex

class calibre.utils.formatter_functions.BuiltinToHex[изворни код]

to_hex(val) -- vraća niz val kodiran u heksadecimalni format. Ovo je korisno pri konstruisanju calibre URL-ova.

urls_from_identifiers

class calibre.utils.formatter_functions.BuiltinUrlsFromIdentifiers[изворни код]

urls_from_identifiers(identifiers, sort_results) -- s obzirom na listu identifiers razdvojenu zarezima, gde je identifier par vrednosti razdvojen dvotačkom (id_name:id_value), vraća listu HTML URL-ova razdvojenih zarezima generisanih iz identifikatora. Lista nije sortirana ako je sort_results 0 (znak ili broj), u suprotnom je sortirana abecedno prema imenu identifikatora. URL-ovi se generišu na isti način kao u ugrađenoj koloni identifikatora kada se prikazuje u detaljima knjige.

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=('Nepoznato',), other=None, template_cache=None, formatter=None)[изворни код]

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

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

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

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

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

set_identifier(typ, val)[изворни код]

If val is empty, deletes identifier of type typ

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

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

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

return a list of the custom fields in this book

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

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

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

return metadata describing a standard or custom field.

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

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

get_standard_metadata(field, make_copy)[изворни код]

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

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

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

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

get_user_metadata(field, make_copy)[изворни код]

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

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

set_user_metadata(field, metadata)[изворни код]

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

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

Remove user metadata keys (custom column keys) if they don't exist in 'other_mi', which must be a metadata object

template_to_attribute(other, ops)[изворни код]

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

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

Returns the tuple (display_name, formatted_value)

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

A HTML representation of this object.

calibre.ebooks.metadata.book.base.STANDARD_METADATA_FIELDS

The set of standard metadata fields.


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, 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 items to associated hyperlink
    'link_maps',
    # Calculated page count, null values are None or 0. -1 is no countable
    # formats. -2 is error processing formats, -3 is DRMed.
    'pages',
))

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