.. _templaterefcalibre-es: 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. .. contents:: :depth: 2 :local: .. module:: calibre.utils.formatter_functions Arithmetic ---------- add(x [, y]*) ^^^^^^^^^^^^^ .. autoclass:: BuiltinAdd ceiling(x) ^^^^^^^^^^ .. autoclass:: BuiltinCeiling divide(x, y) ^^^^^^^^^^^^ .. autoclass:: BuiltinDivide floor(x) ^^^^^^^^ .. autoclass:: BuiltinFloor fractional_part(x) ^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinFractionalPart mod(x) ^^^^^^ .. autoclass:: BuiltinMod multiply(x [, y]*) ^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinMultiply round(x) ^^^^^^^^ .. autoclass:: BuiltinRound subtract(x, y) ^^^^^^^^^^^^^^ .. autoclass:: BuiltinSubtract Boolean ------- and(valor [, valor]*) ^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinAnd not(valor) ^^^^^^^^^^ .. autoclass:: BuiltinNot or(valor [, valor]*) ^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinOr Date functions -------------- date_arithmetic(fecha, cálculo, fmt) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinDateArithmetic days_between(fecha1, fecha2) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinDaysBetween today() ^^^^^^^ .. autoclass:: BuiltinToday Formatting values ----------------- finish_formatting(val, fmt, prefijo, sufijo) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinFinishFormatting format_date(val, texto_formato) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinFormatDate format_date_field(nombre_campo, texto_formato) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinFormatDateField format_number(v, plantilla) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinFormatNumber human_readabe(v) ^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinHumanReadable rating_to_stars(valor, usar_media_estrella) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinRatingToStars urls_from_identifiers(identificadores, ordenar_resultado) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinUrlsFromIdentifiers Get values from metadata ------------------------ annotation_count() ^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinAnnotationCount approximate_formats() ^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinApproximateFormats author_links(sep_val, sep_par) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinAuthorLinks author_sorts(separador) ^^^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinAuthorSorts booksize() ^^^^^^^^^^ .. autoclass:: BuiltinBooksize connected_device_name(ubicación_de_almacenamiento) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinConnectedDeviceName connected_device_uuid(ubicación_de_almacenamiento) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinConnectedDeviceUUID current_library_name() ^^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinCurrentLibraryName current_library_path() ^^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinCurrentLibraryPath current_virtual_library_name() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinCurrentVirtualLibraryName field(nombre_de_búsqueda) ^^^^^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinField formats_modtimes(formato_fecha) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinFormatsModtimes formats_paths() ^^^^^^^^^^^^^^^ .. autoclass:: BuiltinFormatsPaths formats_sizes() ^^^^^^^^^^^^^^^ .. autoclass:: BuiltinFormatsSizes has_cover() ^^^^^^^^^^^ .. autoclass:: BuiltinHasCover is_marked() ^^^^^^^^^^^ .. autoclass:: BuiltinIsMarked language_codes(nombres) ^^^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinLanguageCodes language_strings(códigos, localizar) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinLanguageStrings ondevice() ^^^^^^^^^^ .. autoclass:: BuiltinOndevice raw_field(nombre_de_búsqueda [, predeterminado_opcional]) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinRawField raw_list(nombre_de_búsqueda, separador) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinRawList series_sort() ^^^^^^^^^^^^^ .. autoclass:: BuiltinSeriesSort user_categories() ^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinUserCategories virtual_libraries() ^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinVirtualLibraries If-then-else ------------ check_yes_no(nombre_de_campo, no_definido, es_false, es_true) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinCheckYesNo contains(val, patrón, texto_si_coincide, texto_si_no_coincide) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinContains field_exists(nombre_campo) ^^^^^^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinFieldExists ifempty(val, texto_si_vacío) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinIfempty test(val, texto_si_no_vacío, texto_si_vacío) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinTest Iterating over values --------------------- first_non_empty(valor [, valor]*) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinFirstNonEmpty lookup(val, [patrón, campo,]+ otro_campo) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinLookup switch(val, [patrón, valor,]+ otro_valor) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinSwitch switch_if([expresión_de prueba, expresión_de_valor,]+ otra_expresión) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinSwitchIf List lookup ----------- identifier_in_list(val, nombre_id [, val_encontrado, val_no_encontrado]) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinIdentifierInList in_list(val, separador, [patrón, encontrado,]+ no_encontrado) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinInList list_item(val, índice, separador) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinListitem select(val, clave) ^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinSelect str_in_list(val, separador, [texto, encontrado,]+ no_encontrado) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinStrInList List manipulation ----------------- count(val, separador) ^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinCount list_count_matching(lista, patrón, separador) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinListCountMatching list_difference(lista1, lista2, separador) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinListDifference list_equals(lista1, sep1, lista2, sep2, val_sí, val_no) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinListEquals list_intersection(lista1, lista2, separador) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinListIntersection list_join(con_separador, lista1, separador1 [, lista2, separador2]*) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinListJoin list_re(lista_orig, separador, incluir, sust_opc) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinListRe list_re_group(list_orig, separador, incluir, búsqueda [, plantilla_grupo]+) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinListReGroup list_remove_duplicates(lista, separador) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinListRemoveDuplicates list_sort(lista, dirección, separador) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinListSort list_split(lista, sep, prefijo_id) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinListSplit list_union(lista1, lista2, separador) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinListUnion range(inicio, fin, paso, límite) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinRange subitems(val, índice_inicio, índice_fin) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinSubitems sublist(val, índice_inicio, índice_fin, separador) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinSublist Other ----- arguments(id[=expresión] [, id[=expresión]]*) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinArguments assign(id, val) ^^^^^^^^^^^^^^^ .. autoclass:: BuiltinAssign globals(id[=expresión] [, id[=expressión]]*) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinGlobals print(a [, b]*) ^^^^^^^^^^^^^^^ .. autoclass:: BuiltinPrint Recursion --------- eval(plantilla) ^^^^^^^^^^^^^^^ .. autoclass:: BuiltinEval Relational ---------- cmp(x, y, mn, ig, my) ^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinCmp first_matching_cmp(val [, cmp1, resultado1]+, otro_resultado) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinFirstMatchingCmp strcmp(x, y, mn, ig, my) ^^^^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinStrcmp strcmpcase(x, y, mn, ig, my) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinStrcmpcase String case changes ------------------- capitalize(val) ^^^^^^^^^^^^^^^ .. autoclass:: BuiltinCapitalize lowercase(val) ^^^^^^^^^^^^^^ .. autoclass:: BuiltinLowercase titlecase(val) ^^^^^^^^^^^^^^ .. autoclass:: BuiltinTitlecase uppercase(val) ^^^^^^^^^^^^^^ .. autoclass:: BuiltinUppercase String manipulation ------------------- character(nombre_carácter) ^^^^^^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinCharacter re(val, patrón, sustitución) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinRe re_group(val, patrón [, plantilla_para_grupo]*) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinReGroup shorten(val, car_izq, texto_medio, car_der) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinShorten strcat(a [, b]*) ^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinStrcat strcat_max(máx, texto1 [, prefijo2, texto2]*) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinStrcatMax strlen(a) ^^^^^^^^^ .. autoclass:: BuiltinStrlen substr(texto, inicio, fin) ^^^^^^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinSubstr swap_around_articles(valor, separador) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinSwapAroundArticles swap_around_comma(val) ^^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinSwapAroundComma to_hex(val) ^^^^^^^^^^^ .. autoclass:: BuiltinToHex transliterate(a) ^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinTransliterate Template database functions --------------------------- book_count(consulta, usar_bv) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinBookCount book_values(columna, consulta, sep, usar_bv) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinBookValues extra_file_size(nombre_archivo) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinExtraFileSize get_link(nombre_campo, valor_campo) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinGetLink get_note(nombre_campo, valor_campo, texto) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinGetNote has_note(nombre_campo, valor_campo) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinHasNote other ----- set_globals(id[=expresión] [, id[=expresión]]*) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. autoclass:: BuiltinSetGlobals 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. .. module:: calibre.ebooks.metadata.book.base .. autoclass:: Metadata :members: :member-order: bysource .. data:: STANDARD_METADATA_FIELDS The set of standard metadata fields. .. literalinclude:: ../../../src/calibre/ebooks/metadata/book/__init__.py :lines: 7-