Documentación de la API para la interfaz de la base de datos¶
Esta API es segura para subprocesos (utiliza un esquema de bloqueo de un escritor, varios lectores). Puede acceder a esta API así:
from calibre.library import db
db = db('Path to calibre library folder').new_api
Si se trata de un complemento de calibre que es parte de la interfaz gráfica principal, se accede a ella de la siguiente forma:
db = self.gui.current_db.new_api
- class calibre.db.cache.Cache(backend, library_database_instance=None)[fuente]¶
Una copia en memoria caché del archivo metadata.db de la biblioteca de calibre. Esta clase también sirve como un API multihilo para acceder a la base de datos. La copia en memoria se mantiene en forma normal para maximizar el rendimiento.
SQLite se usa simplemente como una manera de leer y escribir eficientemente metadata.db. Toda la lógica de lectura, clasificación, búsqueda y almacenamiento en la memoria caché de las tablas está desarrallada de nuevo. Esto fue necesario para obtener el máximo rendimiento y flexibilidad.
- class EventType(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)¶
- book_created = 4¶
Cuando se crea un nuevo registro de libro en la base de datos, con el identificador de libro como único argumento
- book_edited = 8¶
Cuando se modifica un formato de libro, con argumentos: (identificador de libro, formato)
- books_removed = 5¶
Cuando se eliminan libros de la base de datos con la lista de identificadores de libro como único argumento
- format_added = 2¶
Cuando se añade un formato a un libro, con argumentos: (idendificador de libro, formato)
- formats_removed = 3¶
Cuando se eliminan formatos de un libro, con argumentos (mapa de book_id a un conjunto de formatos eliminados del libro)
- indexing_progress_changed = 9¶
Cuando el progreso de indexado cambia
- items_removed = 7¶
Cuando se eliminan elementos como etiquetas o autores de algunos libros. Argumentos: (nombre_de_campo, identificadores de libro afectados, ids de los elemtos eliminados)
- items_renamed = 6¶
Cuando se cambia el nombre de elementos como etiquetas o autores de algunos o todos los libros. Argumentos: (nombre_de campo, identificadores de libro afectados, mapa de id de elemento antiguo a id de elemento nuevo)
- metadata_changed = 1¶
Cuando se modifican metadatos de algunos libros, con argumentos: (nombre del campo modificado, conjunto de identificadores de libro afectados)
- add_books(books, add_duplicates=True, apply_import_tags=True, preserve_uuid=False, run_hooks=True, dbapi=None)[fuente]¶
Añadir los libros especificados a la biblioteca. Los libros deben ser iterables de 2-tuplas, cada 2-tuplas de la forma
(mi, format_map)
dondemi
es un objeto de metadatos yformat_map
es un diccionario en la forma{fmt: path_or_stream}
, por ejemplo:{'EPUB':'/path/to/file.epub'}
.Devuelve un par de listas:
ids, duplicados
.ids
contiene los identificadores de libros para todos los libros de reciente creación en la base de datos.duplicados
contiene el :code: (mi, format_map) para todos los libros que ya existen en la base de datos según la sencilla detección heurística de duplicados utilizada porhas_book()
.
- add_custom_book_data(name, val_map, delete_first=False)[fuente]¶
Añadir datos para
name
dondeval_map
es un mapa debook_ids
a valores. Sidelete_first
es True, se eliminarán todos los datos almacenados previamente.
- add_extra_files(book_id, map_of_relpath_to_stream_or_path, replace=True, auto_rename=False)[fuente]¶
Añadir archivos de datos adicionales
- add_format(book_id, fmt, stream_or_path, replace=True, run_hooks=True, dbapi=None)[fuente]¶
Añadir un formato al libro especificado. Devuelve True si el formato se añadió con éxito.
- Parámetros:
replace – Si es True, sustituye el formato existente; en caso contrario, si el formato ya existe, devuelve False.
run_hooks – Si es True, los complementos de tipo de archivo se ejecutarán sobre el formato antes y después de ser añadido.
dbapi – Solo para uso interno.
- add_listener(event_callback_function, check_already_added=False)[fuente]¶
Registra una función que se ejecutará después de ciertas acciones sobre esta base de datos. La función debe aceptar tres argumentos (
EventType
, id_de_biblioteca, datos_específicos_de_EventType)
- add_notes_resource(path_or_stream_or_data, name: str, mtime: float = None) int [fuente]¶
Añade el recurso especificado para que pueda ser referenciado por notas y devuelve el código de comprobación de su contenido
- all_annotation_types()[fuente]¶
Devuelve una tupla con todos los tipos de anotaciones en la base de datos.
- all_annotation_users()[fuente]¶
Devuelve una tupla con todos los (tipo_usuario, nombre de usuario) que tienen anotaciones.
- all_annotations(restrict_to_user=None, limit=None, annotation_type=None, ignore_removed=False, restrict_to_book_ids=None)[fuente]¶
Devuelve una tupla de todas las anotaciones que coinciden con los criterios especificados. ignore_removed controla si las anotaciones eliminadas (borradas) también se devuelven. Las anotaciones eliminadas son solo un esqueleto usado para combinar anotaciones.
- all_annotations_for_book(book_id)[fuente]¶
Devuelve una tupla que contiene todas las anotaciones para el identificador de libro especificado como un diccionario con las entradas: format, user_type, user, annotation. Aquí annotation se refiere a los datos de la anotación.
- all_book_ids(type=<class 'frozenset'>)[fuente]¶
Conjunto fijo de todos los identificadores de libros conocidos.
- all_field_for(field, book_ids, default_value=None)[fuente]¶
Lo mismo que
field_for
, excepto que opera sobre múltiples libros a la vez.
- all_field_ids(name)[fuente]¶
Conjunto fijo de identificadores para todos los valores del campo
name
.
- all_field_names(field)[fuente]¶
Conjunto fijo de todos los nombres de campos (sólo se debe utilizar para los campos de tipo varios-uno y varios-varios)
- annotation_count_for_book(book_id)[fuente]¶
Devuelve el número de anotaciones disponibles para el libro especificado en la base de datos.
- annotations_map_for_book(book_id, fmt, user_type='local', user='viewer')[fuente]¶
Devuelve una correspondencia entre tipo de anotación y datos de la anotación para el identificador de libro, formato, usuario y tipo de usuario especificados.
- author_data(author_ids=None)[fuente]¶
Devuelve los datos del autor como un diccionario con claves:
name
,sort
,link
Si no se encuentran autores con los identificadores especificados, se devuelve un diccionario vacío. Si
author_ids
es None, se devuelven datos para todos los autores.
- author_sort_from_authors(authors, key_func=<function make_change_case_func.<locals>.change_case>)[fuente]¶
Dada una lista de autores, devolverá el texto
author_sort
para los autores, prefiriendo el orden de autor asociado con el autor sobre el texto calculado automáticamente.
- books_for_field(name, item_id)[fuente]¶
Devuelve todos los libros relacionados con el elemento identificado por
item_id
, donde el elemento pertenece al camponame
.El valor devuelto es un conjunto de identificadores de libros, o el conjunto vacío si el elemento o el campo no existen.
- books_in_virtual_library(vl, search_restriction=None, virtual_fields=None)[fuente]¶
Devuelve el conjunto de libros en la biblioteca virtual especificada
- compress_covers(book_ids, jpeg_quality=100, progress_callback=None)[fuente]¶
Comprimir las imágenes de portada para los libros especificados. Una calidad de compresión de 100 realizará una compresión sin pérdidas, en caso contrario será con pérdidas.
La función progress_callback se ejecutará con book_id y los tamaños original y nuevo para cada libro que se procese. Si ocurre un error, el tamaño nuevo será un texto con los detalles del error.
- copy_cover_to(book_id, dest, use_hardlink=False, report_file_size=None)[fuente]¶
Copia la portada al objeto de tipo archivo
dest
. Devuelve False si no existe portada odest
es el mismo archivo que la portada actual.dest
también puede ser una ruta de acceso, en cuyo caso la portada se copia en la ruta si y sólo si la ruta es diferente de la actual ruta de acceso (considerando la posible distinción entre mayúsculas y minúsculas).
- copy_format_to(book_id, fmt, dest, use_hardlink=False, report_file_size=None)[fuente]¶
Copiar el formato
fmt
al objeto de tipo archivodest
. Si el formato especificado no existe, se presenta un errorNoSuchFormat
.dest
también puede ser una ruta de acceso (a un archivo), en cuyo caso el formato se copia en la ruta si y sólo si la ruta es diferente de la ruta de acceso actual (considerando la posible distinción entre mayúsculas y minúsculas).
- cover(book_id, as_file=False, as_image=False, as_path=False, as_pixmap=False)[fuente]¶
Devuelve la imagen de portada o None. De manera predeterminada, devuelve la portada como una serie de bytes.
ADVERTENCIA: Si se usa
as_path
, se copia la portada a un archivo temporal y se devuelve la ruta de acceso al archivo temporal. Deberá eliminar el archivo temporal cuando haya terminado con él.- Parámetros:
as_file – Si es True devuelve la imagen como un objeto de archivo abierto (un SpooledTemporaryFile)
as_image – Si es True devuelve la imagen como un objeto QImage
as_pixmap – Si es True devuelve la imagen como un objeto QPixmap
as_path – Si es True devuelve la imagen como una ruta de acceso a un archivo temporal
- data_for_find_identical_books()[fuente]¶
Devuelve datos que pueden usarse para implementar
find_identical_books()
en un proceso de trabajo sin acceso a la base de datos. Véase db.utils para una implementación.
- data_for_has_book()[fuente]¶
Devuelve datos adecuados para
has_book()
. Puede usarse para implementarhas_book()
en un proceso de trabajo sin acceso a la base de datos.
- delete_custom_book_data(name, book_ids=())[fuente]¶
Borra los datos para
name
. De manera predeterminada se borran todos los datos, si sólo desea borrar datos de ciertos identificadores de libros, señálelos como una lista de identificadores de libros.
- delete_trash_entry(book_id, category)[fuente]¶
Eliminar una entrada de la papelera de reciclaje. Aquí category es “b” para libros y “f” para formatos.
- embed_metadata(book_ids, only_fmts=None, report_error=None, report_progress=None)[fuente]¶
Actualizar metadatos en todos los formatos de los
book_ids
especificados a los metadatos actuales de la base de datos.
- export_note(field, item_id) str [fuente]¶
Exporta la nota como un único documento HTML con imágenes empotradas como URL de tipo data:
- fast_field_for(field_obj, book_id, default_value=None)[fuente]¶
Igual que
field_for
, salvo que se evita la consulta adicional para obtener el objeto de campo
- field_for(name, book_id, default_value=None)[fuente]¶
Devuelve el valor del campo
name
para el libro identificado porbook_id
. Si no existe tal libro o no tiene un valor definido para el camponame
o no existe dicho campo, entonces devuelvedefault_value
.default_value
no se utiliza para title, title_sort, authors, author_sort y series_index. Esto se debe a que éstos siempre tienen valores en la base de datos.default_value
se utiliza para todas las columnas personalizadas.El valor devuelto para los campos
is_multiple
es siempre una tupla, incluso cuando no se encuentran valores (en otras palabras,default_value
no tiene efecto). La excepción son los identificadores para los que el valor devuelto es siempre un diccionario. Las tuplas devueltas son siempre en orden de enlace, es decir, el orden en el que fueron creadas.
- field_ids_for(name, book_id)[fuente]¶
Devuelve los identificadores (como una tupla) de los valores que el campo
name
tiene en el libro identificado porbook_id
. Si no hay valores, o tal libro o tal campo, se devuelve una tupla vacía.
- field_supports_notes(field=None) bool [fuente]¶
Devuelve True si y sólo si el campo especificado admite notas. Si
field
es None, devuelve un conjunto de todos los campos que admiten notas.
- find_identical_books(mi, search_restriction='', book_ids=None)[fuente]¶
Encuentra libros que contienen los autores en «mi» y tienen el mismo título (la búsqueda de título es difusa). Véase también
- format(book_id, fmt, as_file=False, as_path=False, preserve_filename=False)[fuente]¶
Devuelve el formato de libro electrónico como una serie de bytes o None si el formato no existe, o no hay permiso para escribir en el archivo de libro electrónico.
- Parámetros:
as_file – Si es True el formato de libro electrónico se devuelve como un objeto de archivo. Tenga en cuenta que el objeto es un archivo SpooledTemporaryFile, por lo que si lo que quiere hacer es copiar el formato a otro archivo, utilice
copy_format_to()
en su lugar para mejorar el rendimiento.as_path – Copia el archivo de formato a un archivo temporal y devuelve la ruta de acceso al archivo temporal.
preserve_filename – Si es True y devuelve una ruta de acceso, el nombre de archivo es el mismo que el utilizado en la biblioteca. Tenga en cuenta que, al utilizar este método, llamadas repetidas producen el mismo archivo temporal (que se vuelve a crear cada vez)
- format_abspath(book_id, fmt)[fuente]¶
Devuelve la ruta de acceso absoluta al archivo de libro electrónico de formato
format
. Casi nunca debe usarlo, ya que rompe la filosofía multihilo de esta API. Usecopy_format_to()
.Actualmente sólo se usa en calibredb list, el visor, modificar libro, compare_format con formato original, abrir con, modificación de metadatos en masa y los catálogos (vía get_data_as_dict()).
Aparte del visor, abrir con y el editor de libros, no creo que ningún otro realice ninguna operación de entrada o salida con el resultado de esta función.
- format_hash(book_id, fmt)[fuente]¶
Devuelve el código de comprobación para el formato y libro especificados. El tipo de código de comprobación es dependiente del motor, pero generalmente es SHA-256.
- format_metadata(book_id, fmt, allow_cache=True, update_db=False)[fuente]¶
Devuelve la ruta, el tamaño y mtime para el formato especificado del libro especificado. No debe utilizar la ruta a menos que sea absolutamente necesario, ya que el acceso directo rompe las garantías multihilo de esta API. Use
método copy_format_to()
en su lugar.- Parámetros:
allow_cache – Si es True se usan los valores almacenados en memoria, en caso contrario se produce un acceso lento al sistema de archivos. Los valores en la memoría podrían estar desfasados si se ha realizado algún acceso al sistema de archivos fuera de esta API.
update_db – Si es True el campo max_size de la base de datos se actualiza para este libro.
- formats(book_id, verify_formats=True)[fuente]¶
Devuelve una tupla con todos los formatos del libro especificado. Si
verify_formats
es True, se verifica que los archivos existen en el disco.
- get_all_items_that_have_notes(field_name=None) set[int] | dict[str, set[int]] [fuente]¶
Devuelve todos los
item_id
para los elementos que tienen notas en el campo especificado, o en todos los campos sifield_name
es None
- get_all_link_maps_for_book(book_id)[fuente]¶
Devuelve todos los enlaces para todos los campos referenciados por el libro identificado por
book_id
. Sibook_id
no existe, el método devuelve{}
.Ejemplo: Suponiendo que el autor A tiene el enlace X, el autor B tiene el enlace Y, la etiqueta S tiene el enlace F y la etiqueta T tiene el enlace G. Si el libro 1 tiene autor A y etiqueta T, este método devuelve
{'authors':{'A':'X'}, 'tags':{'T', 'G'}}
. Si el autor del libro 2 no es ni A ni B y no tiene etiquetas, este método devuelve{}
.- Parámetros:
book_id – el identificador del libro en cuestión.
- Devuelve:
{campo: {valor_campo, valor_enlace}, ...}
para todos los campos con unvalor_campo
que contenga un valor del enlace no vacío para ese libro
- get_categories(sort='name', book_ids=None, already_fixed=None, first_letter_sort=False)[fuente]¶
Usado internamente para implementer el exlorador de etiquetas
- get_custom_book_data(name, book_ids=(), default=None)[fuente]¶
Obtener datos para
name
. De manera predeterminada devuelve datos para todos losbook_ids
, pase una lista de identificadores de libros si sólo desea algunos dato. Devuelve un mapa de book_id a valores. Si un valor particular no puede ser descodificado, utiliza el predeterminado.
- get_id_map(field)[fuente]¶
Devuelve un mapa de números de identificación a valores para el campo especificado. El campo debe ser un campo de varios-uno o varios-varios, de lo contrario se presenta un ValueError.
- get_ids_for_custom_book_data(name)[fuente]¶
Devuelve el conjunto de identificadores de libros para los que
name
tiene datos.
- get_item_id(field, item_name, case_sensitive=False)[fuente]¶
Devuelve el identificador de elemento para «item_name» o None si no se encuentra. Esta función es muy lenta, para consultas de varios nombres use get_item_ids() o get_item_name_map(). Las consultas con distinción de mayúsculas y minúsculas son más rápidas que las consultas sin distinción.
- get_item_ids(field, item_names, case_sensitive=False)[fuente]¶
Devuelve un diccionario que hace corresponder «item_name» con el identificador de elemento o None
- get_item_name(field, item_id)[fuente]¶
Devuelve el nombre del elemento para el elemento especificado por
item_id
en el campo especificado. Ver tambiénget_id_map()
.
- get_item_name_map(field, normalize_func=None)[fuente]¶
Devuelve una correspondencia entre valores de elemento e id
- get_link_map(for_field)[fuente]¶
Devuelve un diccionario de enlaces para el campo proporcionado.
- Parámetros:
for_field – el nombre de búsqueda del campo para el que se quiere el mapa de enlaces
- Devuelve:
{valor_campo:valor_enlace, ...}
para los enlaces no vacíos
- get_metadata(book_id, get_cover=False, get_user_categories=True, cover_as_data=False)[fuente]¶
Devuelve metadatos para el libro identificado por
book_id
como un objeto decalibre.ebooks.metadata.book.base.Metadata
. Tenga en cuenta que la lista de formatos no se verifica. Siget_cover
es True, se devuelve la portada, ya sea como una ruta de acceso a un archivo temporal o como mi.cover, o sicover_as_data
es True como mi.cover_data.
- get_next_series_num_for(series, field='series', current_indices=False)[fuente]¶
Devuelva el siguiente índice la serie especificada, teniendo en cuenta las distintas preferencias que controlan la generación del siguiente número de serie.
- Parámetros:
field – El campo de tipo serie (de manera predeterminada la columna predefinida «series»)
current_indices – Si es True, devuelve un mapa de
book_id
al valor actual deseries_index
.
- get_notes_resource(resource_hash) dict | None [fuente]¶
Devuelve un diccionario que contiene los datos y el nombre del recurso o None si no se encuentra ningún recurso con el código de comprobación (
hash
) especificado
- get_proxy_metadata(book_id)[fuente]¶
Como
get_metadata()
excepto que devuelve un objeto ProxyMetadata que sólo lee valores desde la base de datos bajo demanda. Es mucho más veloz queget_metadata()
cuando sólo se quiere acceder a un pequeño número de campos desde el objeto metatados devuelto.
- get_usage_count_by_id(field)[fuente]¶
Devuelve un mapa de identificador a cuenta de uso para todos los valores del campo especificado, que debe ser un campo de tipo varios-uno o varios-varios.
- has_book(mi)[fuente]¶
Devuelve True si y sólo si la base de datos contiene una entrada con el mismo título que el objeto Metadata pasado como argumento. La comparación no distingue mayúsculas y minúsculas. Véase también
- has_id(book_id)[fuente]¶
Devuelve True si y sólo si el
book_id
especificado existe en la base de datos.
- import_note(field, item_id, path_to_html_file, path_is_data=False)[fuente]¶
Importa una nota previamente exportada o un archivo HTML arbitrario como la nota para el elemento especificado
- items_with_notes_in_book(book_id: int) dict[str, dict[int, str]] [fuente]¶
Devuelve un diccionario de campo y elementos que tienen notas asociadas para ese campo en el libro especificado
- link_for(field, item_id)[fuente]¶
Devuelve el enlace, si lo hay, para el elemento especificado o None si no se encuentra ningún enlace
- list_extra_files(book_id, use_cache=False, pattern='') Tuple[ExtraFile, ...] [fuente]¶
Obtener información acerca de los archivos adicionales en el directorio del libro.
- Parámetros:
book_id – el ID del libro en la base de datos
pattern – el patrón de nombres de archivo a buscar. Un patrón vacío coincide con todos los archivos adicionales. Los patrones deben usar
/
como separador. Use la constanteDATA_FILE_PATTERN
para buscar archivos dentro del directorio de datos.
- Devuelve:
Una tupla con todos los archivos adicionales que coinciden con el patrón especificado. Cada elemento de la tupla es de la forma
ExtraFile(ruta_rel, ruta_archivo, res_stat)
, donderuta_rel
es la ruta relativa al archivo respecto al directorio del libro usando/
como separador.res_stat
es el resultado de ejecutaos.stat()
sobre el archivo.
- merge_annotations_for_book(book_id, fmt, annots_list, user_type='local', user='viewer')[fuente]¶
Combinar las anotaciones especificadas con las anotaciones existentes para el identificador de libro, formato, tipo de usuario y usuario.
- merge_extra_files(dest_id, src_ids, replace=False)[fuente]¶
Combinar los archivos adicionales de
src_ids
(origen) con los dedest_id
(destino). A los archivos que entren en conflicto se les cambiará el nombre automáticamente, a no ser quereplace
sea True, en cuyo caso se sustituirán.
- multisort(fields, ids_to_sort=None, virtual_fields=None)[fuente]¶
Devuelve una lista de identificadores de libros ordenados. Si
ids_to_sort
es None, devuelve todos los identificadores de libros.los campos deben ser una lista de 2-tuplas de la forma (field_name, ascending=True|False). El campo más significativo es la primera 2-tupla.
- notes_data_for(field, item_id) str [fuente]¶
Devuelve todos los datos de notas como un diccionario o None si la nota no existe
- notes_for(field, item_id) str [fuente]¶
Devuelve el documento de notas o un texto vacío si no se encuentra
- notes_resources_used_by(field, item_id)[fuente]¶
Devuelve el conjunto de códigos de comprobación de recurso de todos los recursos usados por la nota del elemento especificado
- pref(name, default=None, namespace=None)[fuente]¶
Devuelve el valor de la preferencia especificada o el valor especificado como
default
si la preferencia no se ha establecido.
- read_backup(book_id)[fuente]¶
Devuelve la copia de seguridad de los metadatos OPF para el libro como una serie de bytes o None si no existe dicha copia de seguridad.
- remove_books(book_ids, permanent=False)[fuente]¶
Eliminar los libros especificados por los
book_ids
de la base de datos y eliminar sus archivos de formato. Sipermanent
es False, los archivos de formato se dejan en el directorio de papelera específico de la biblioteca.
- remove_formats(formats_map, db_only=False)[fuente]¶
Eliminar los formatos especificados de los libros especificados.
- Parámetros:
formats_map – Un mapa de book_id a una lista de formatos para eliminar del libro.
db_only – Si es True, sólo se elimina el registro del formato de la base de datos, no se borra el archivo de formato del sistema de archivos.
- Devuelve:
Un mapa de id de libro a conjunto de formatos realmente eliminados del sistema de archivos para ese libro
- remove_items(field, item_ids, restrict_to_book_ids=None)[fuente]¶
Elimina todos los elementos del campo especificado con los id especificados. Devuelve el conjunto de id de libro afectados.
restrict_to_book_ids
es un conjunto de id de libros opcional. Si se especifica, sólo se eliminarán los elementos de estos libros.
- rename_extra_files(book_id, map_of_relpath_to_new_relpath, replace=False)[fuente]¶
Cambiar el nombre de los archivos de datos adicionales
- rename_items(field, item_id_to_new_name_map, change_index=True, restrict_to_book_ids=None)[fuente]¶
Cambiar el nombre de elementos de un campo de tipo varios-uno o varios-varios, como etiquetas o series.
- Parámetros:
change_index – Al cambiarel nombre de un campo del tipo serie cambiar también los valores de «series_index».
restrict_to_book_ids – Un conjunto de id de libros opcional sobre los que se realiza el cambio de nombre, de manera predeterminada incluye todos los libros.
- restore_book(book_id, mi, last_modified, path, formats, annotations=())[fuente]¶
Restaurar la entrada del libro en la base de datos de un libro que ya existe en el sistema de archivos.
- restore_original_format(book_id, original_fmt)[fuente]¶
Restaurar el formato especificado a partir del ORIGINAL_FORMAT previamente guardado, si lo hubiera. Devuelve True en caso de éxito. El ORIGINAL_FORMAT se elimina después de una restauración correcta.
- property safe_read_lock¶
Un bloqueo de lectura segura es un bloqueo que no hace nada si el hilo ya tiene un bloqueo de escritura, de lo contrario, agrega un bloqueo de lectura. Esto es necesario para evitar DowngradeLockErrors, lo que puede suceder cuando se actualiza la caché de búsqueda en presencia de columnas compuestas. Al actualizar la caché de búsqueda se crea un bloqueo exclusivo, pero al buscar en una columna compuesta tiene lugar la lectura de valores de campo vía ProxyMetadata, que trata de obtener un bloqueo compartido. Puede haber otras situaciones que desencadenen esto.
Esta propiedad devuelve un nuevo objeto de bloqueo en cada acceso. Este objeto de bloqueo no es recursivo (por rendimiento) y sólo debe ser utilizado en una sentencia
with
comowith cache.safe_read_lock:
, de lo contrario habrá problemas.
- save_original_format(book_id, fmt)[fuente]¶
Guardar una copia del formato especificado como ORIGINAL_FORMAT, sustituyendo cualquier ORIGINAL_FORMAT existente.
- search(query, restriction='', virtual_fields=None, book_ids=None)[fuente]¶
Buscar en la base de datos con la consulta especificada, devolviendo un conjunto de identificadores de libros que coincidan.
- Parámetros:
restriction – Una restricción que se añade como Y a la consulta especificada. Tenga en cuenta que las restricciones se almacenan en caché, por lo tanto, la búsqueda de a Y b será más lenta que a con una restricción b.
virtual_fields – Usado internamente (campos virtuales tales como «on_device» para búsquedas).
book_ids – Si no es None, un conjunto de identificadores de libros en los que buscar en vez de buscar en todos los libros.
- search_annotations(fts_engine_query, use_stemming=True, highlight_start=None, highlight_end=None, snippet_size=None, annotation_type=None, restrict_to_book_ids=None, restrict_to_user=None, ignore_removed=False)[fuente]¶
Devuelve una tupla de anotaciones que coinciden con la búsqueda de texto completo especificada.
- search_notes(fts_engine_query='', use_stemming=True, highlight_start=None, highlight_end=None, snippet_size=None, restrict_to_fields=(), return_text=True, result_type=<class 'tuple'>, process_each_result=None, limit=None)[fuente]¶
Busca en el texto de las notas usando un índice de búsqueda de texto completo. Si la consulta está vacía devuelve todas las notas.
- set_annotations_for_book(book_id, fmt, annots_list, user_type='local', user='viewer')[fuente]¶
Ver todas las anotaciones para el identificador de libro, formato, tipo de usuario y usuario especificados.
- set_conversion_options(options, fmt='PIPE')[fuente]¶
options
debe ser un mapa de la forma {book_id:opciones de conversión}
- set_cover(book_id_data_map)[fuente]¶
Establecer la portada de este libro. El argumento puede ser un objeto de tipo QImage, QPixmap, archivo o una serie de bytes. También puede ser None, en cuyo caso se elimina cualquier portada existente.
- set_field(name, book_id_to_val_map, allow_case_change=True, do_path_update=True)[fuente]¶
Establecer los valores del campo especificado por
name
. Devuelve el conjunto de todos los identificadores de libros afectados por el cambio.- Parámetros:
book_id_to_val_map – Mapa de book_ids a los valores que se deben aplicar.
allow_case_change – Si es True, se cambiará el uso de mayúsculas y minúsculas de campos de tipo varios-uno o varios-varios. Por ejemplo, si un libro tiene la etiqueta «etiqueta1» y establece la etiqueta de otro libro a «Etiqueta1», entonces los libros de ambos tendrá la etiqueta «Etiqueta1» si
allow_case_change
es True, de lo contrario ambos tendrán la etiqueta «etiqueta1».do_path_update – Usado internamente, nunca debe cambiarse.
- set_link_map(field, value_to_link_map, only_set_if_no_existing_link=False)[fuente]¶
Asigna enlaces para los elementos en el campo
field
. Tenga en cuenta que este método no cambia los valores que no estén presentes envalue_to_link_map
- Parámetros:
field – el nombre de búsqueda
value_to_link_map –
dict(valor_campo:enlace, ...)
. Tenga en cuenta que son valores, no identificadores de campo.
- Devuelve:
libros modificados al asignar el enlace
- set_metadata(book_id, mi, ignore_errors=False, force_changes=False, set_title=True, set_authors=True, allow_case_change=False)[fuente]¶
Aplicar metadatos para el libro
id
a partir del objetoMetadata
mi
Si se establece
force_changes=True
set_metadata actualizará los campos, incluso simi
contiene valores vacíos. En este caso, None se distingue de «vacío». Simi.XXX
es None, el XXX no se sustituye, en caso contrario sí. Las etiquetas, identificadores y los atributos de portadas son casos especiales. Las etiquetas e identificadores no se pueden establecer en None por lo que siempre se sustituirán siforce_changes
es True. Debe asegurarse de quemi
contenga los valores que desea que tenga el libro. Las portadas siempre se cambian si se proporciona una nueva, pero nunca se borran. Tenga también en cuenta queforce_changes
no tiene ningún efecto en la configuración de título o autores.
- set_notes_for(field, item_id, doc: str, searchable_text: str = '', resource_hashes=(), remove_unused_resources=False) int [fuente]¶
Establece el documento de notas. Si el texto que se puede buscar es distinto del documento, debe especificarse como
searchable_text
. Si el documento hace referencia a recursos, sus códigos de comprobación deben incluirse enresource_hashes
. Establecerremove_unused_resources
como True para limpiar los recursos no usados, tenga en cuenta que en todo caso una nota limpia automáticamente los recursos pertenecientes a esa nota.
- set_pref(name, val, namespace=None)[fuente]¶
Establecer la preferencia especificada al el valor especificado. Ver también
pref()
.
- split_if_is_multiple_composite(f, val)[fuente]¶
Si
f
es una clave de búsqueda de una columna compuesta y la columna esis_multiple
, entoncesval
se divide en valores únicos no vacíos. La comparación distingue mayúsculas y minúsculas. El orden no se mantiene. Devuelve un objetolist()
por compatibilidad con otros métodos de obtención de metadatos como las etiquetas.
- tags_older_than(tag, delta=None, must_have_tag=None, must_have_authors=None)[fuente]¶
Devuelve los identificadores de todos los libros que tienen la etiqueta
tag
que son anteriores al momento especificado. La comparación de etiquetas no distingue entre mayúsculas y minúsculas.- Parámetros:
delta – Un objeto de tipo timedelta o None. Si es None, se devuelven todos los identificadores con etiqueta.
must_have_tag – Si no es None, la lista de coincidencias se limitará a los libros que tengan esta etiqueta
must_have_authors – Una lista de autores. Si no es None, la lista de coincidencias se limitará a los libros que tengan estos autores (no distingue mayúsculas y minúsculas).
- unretire_note_for(field, item_id) int [fuente]¶
Desretira una nota previamente retirada para el elemento especificado. Las notas se retiran cuando se elimina un elemento de la base de datos
- user_categories_for_books(book_ids, proxy_metadata_map=None)[fuente]¶
Devuelve las categorías de usuario de los libros especificados.
proxy_metadata_map
es opcional y es útil para aumentar el rendimiento en contextos donde ya existe un objeto ProxyMetadata de los libros. Debe ser un mapa de book_ids a los objetos ProxyMetadata correspondientes.