Documentation API pour l’interface base de données¶
Cette API est un fil sûr (Elle utilise un lecteur multiple, un schéma rédacteur unique fermé). Vous pouvez accéder à cette API comme ceci :
from calibre.library import db
db = db('Path to calibre library folder').new_api
Si vous êtes dans une extension calibre qui est partie prenante du GUI principal de calibre, vous y obtenez l’accès comme ceci à la place :
db = self.gui.current_db.new_api
- class calibre.db.cache.Cache(backend, library_database_instance=None)[source]¶
Un cache mémoire du fichier metadata.db depuis une bibliothèque calibre. Cette classe sert également comme une API de sécurité pour accéder à la base de données. Le cache mémoire est maintenu dans une forme normale pour une performance maximale.
SQLITE est simplement utilisée comme une manière robuste de lire et écrire depuis metadata.db. Toute table lecture/tri/recherche/cache est ré-implémentée. Ceci était nécessaire pour un maximum de performance et de flexibilité.
- class EventType(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)¶
- book_created = 4¶
Lorsqu’un nouvel enregistrement de livre est créé dans la base de données, avec comme seul argument l’identifiant du livre
- book_edited = 8¶
Lorsqu’un format de livre est édité, avec des arguments : (book_id, fmt)
- books_removed = 5¶
Lorsque des livres sont retirés de la base de données avec la liste des identifiants de livres comme seul argument
- format_added = 2¶
Lorsqu’un format est ajouté à un livre, avec les arguments : (book_id, format)
- formats_removed = 3¶
Lorsque des formats sont retirés d’un livre, avec des arguments : (correspondance entre l’identifiant du livre et l’ensemble des formats supprimés du livre)
- indexing_progress_changed = 9¶
Lorsque la progression de l’indexation change
- items_removed = 7¶
Lorsque des éléments tels que les étiquettes ou les auteurs sont supprimés de certains livres. Arguments : ( field_name, ids des livres concernés, ids des éléments supprimés)
- items_renamed = 6¶
Lorsque des éléments tels que les étiquettes ou les auteurs sont renommés dans certains ou tous les livres. Arguments : ( field_name, ids de livres concernés, mappage de l’ancien id d’élément vers le nouvel id d’élément)
- metadata_changed = 1¶
Lorsque certaines métadonnées sont modifiées pour certains livres, avec des arguments : (nom du champ modifié, ensemble d’identifiants de livres concernés)
- add_books(books, add_duplicates=True, apply_import_tags=True, preserve_uuid=False, run_hooks=True, dbapi=None)[source]¶
Ajouter les livres spécifiés à la bibliothèque. Les livres doivent être un itérable de 2-tuples, chaque 2-tuple sous la forme
(mi, format_map)
où mi est un objet métadonnée et format_map est un dictionnaire de la forme{fmt: path_or_stream}
, par exemple :{'EPUB': '/path/to/file.epub'}
.Renvoie une paire de listes :
ids, duplicates
.ids
contient les ids de livre pour tous les livres nouvellement créés dans la base de données.duplicates
contient(mi, format_map)
pour tous les livres qui existent déjà dans la base de données selon l’heuristique simple de détection de doublons utilisée parhas_book()
.
- add_custom_book_data(name, val_map, delete_first=False)[source]¶
Ajouter les données pour le nom où val_map est une carte des book_ids vers les valeurs. Si delete_first est Vrai, toutes les données stockées précédemment seront supprimées.
- add_extra_files(book_id, map_of_relpath_to_stream_or_path, replace=True, auto_rename=False)[source]¶
Ajouter des fichiers de données supplémentaires
- add_format(book_id, fmt, stream_or_path, replace=True, run_hooks=True, dbapi=None)[source]¶
Ajouter un format au livre spécifié. Renvoie True si le format a été ajouté avec succès.
- Paramètres:
replace – Si Vrai, remplace le format existant, autrement si le format existe déjà, renvoie Faux.
run_hooks – Si Vrai, les extensions de type de fichier sont exécutées. dans le format avant et après avoir été ajoutées
dbapi – Usage interne uniquement.
- add_listener(event_callback_function, check_already_added=False)[source]¶
Enregistrer une fonction de rappel qui sera appelée après que certaines actions aient été effectuées sur cette base de données. La fonction doit prendre trois arguments : (
EventType
, library_id, event_type_specific_data)
- add_notes_resource(path_or_stream_or_data, name: str, mtime: float = None) int [source]¶
Ajouter la ressource spécifiée afin qu’elle puisse être référencée par les notes et renvoyer le hash de contenu
- all_annotation_types()[source]¶
Retourne un tuple de tous les types d’annotations dans la base de données.
- all_annotation_users()[source]¶
Retourne un tuple de tous les (user_type, user name) qui ont des annotations.
- all_annotations(restrict_to_user=None, limit=None, annotation_type=None, ignore_removed=False, restrict_to_book_ids=None)[source]¶
Retourne un tuple de toutes les annotations correspondant aux critères spécifiés. ignore_removed contrôle si les annotations retirées (supprimées) sont également retournées. Les annotations supprimées ne sont qu’un squelette utilisé pour la fusion des annotations.
- all_annotations_for_book(book_id)[source]¶
Retourne un tuple contenant toutes les annotations pour le book_id spécifié sous la forme d’un dict avec les clés : format, user_type, user, annotation. Ici, annotation est la donnée d’annotation.
- all_field_for(field, book_ids, default_value=None)[source]¶
Identique à field_for, excepté qu’il agit sur de multiples livres en une fois
- all_field_names(field)[source]¶
Ensemble gelé de tous les champs de noms (devrait uniquement être utilisé pour les champs many-one et many-many)
- annotation_count_for_book(book_id)[source]¶
Renvoie le nombre d’annotations disponibles dans la base de données pour le livre spécifié.
- annotations_map_for_book(book_id, fmt, user_type='local', user='viewer')[source]¶
Renvoie une carte du type d’annotation -> données d’annotation pour le book_id, le format, l’utilisateur et le type d’utilisateur spécifiés.
- author_data(author_ids=None)[source]¶
Renvoie la donnée auteur comme un dictionnaire avec des clés : nom, genre, lien
Si aucuns auteurs avec les ids spécifiés ne sont trouvés un dictionnaire vide est renvoyé. Si author_ids est None, les données pour tous les auteurs sont renvoyées.
- author_sort_from_authors(authors, key_func=<function make_change_case_func.<locals>.change_case>)[source]¶
En fonction d’une liste d’auteurs, renvoie la chaîne author_sort pour les auteurs, en préférant l’auteur assorti associé à l’auteur plutôt que la chaîne calculée.
- books_for_field(name, item_id)[source]¶
Renvoie tous les livres associés avec l’élément identifié par
item_id
, où l’élément appartient au champname
.La valeur retournée est un ensemble d’ids de livre, ou l’ensemble vide si l’élément n’existe pas.
- books_in_virtual_library(vl, search_restriction=None, virtual_fields=None)[source]¶
Affiche l’ensemble des livres dans la bibliothèque virtuelle spécifiée
- compress_covers(book_ids, jpeg_quality=100, progress_callback=None)[source]¶
Compresser les images de couverture des livres spécifiés. Une qualité de compression de 100 effectuera une compression sans perte, sinon la compression sera avec perte.
Le rappel d’avancement sera appelé avec le book_id et les anciens et nouveaux formats pour chaque livre qui a été traité. Si une erreur se produit, la nouvelle taille sera une chaîne de caractères contenant les détails de l’erreur.
- copy_cover_to(book_id, dest, use_hardlink=False, report_file_size=None)[source]¶
Copier la couverture dans le fichier comme un objet
dest
. Renvoie False si aucune couverture n’existe ou dest est le même fichier que la couverture actuelle. dest peut aussi être un chemin dans tel cas la couverture y est copiée si le chemin est différent du chemin actuel (prendre en compte la sensibilité à la casse).
- copy_format_to(book_id, fmt, dest, use_hardlink=False, report_file_size=None)[source]¶
Copier le format
fmt
dans le fichier comme un objetdest
. Si le format spécifié n’existe pas, indique l’erreurNoSuchFormat
. dest peut aussi être un chemin (vers un fichier) dans tel cas la couverture y est copiée si et seulement si le chemin est différent du chemin actuel (prendre en compte la sensibilité à la casse).
- cover(book_id, as_file=False, as_image=False, as_path=False, as_pixmap=False)[source]¶
Renvoie l’image de couverture ou Aucun. Par défaut, renvoie la couverture comme une chaîne de caractères.
ATTENTION : l’utilisation de as_path copiera la couverture vers un fichier temporaire et renverra le chemin vers ce fichier temporaire. Vous devez supprimer le fichier temporaire quand vous en avez terminé avec celui-ci.
- Paramètres:
as_file – Si Vrai renvoie l’image en tant qu’objet fichier ouvert (une file d’attente de fichiers temporaires)
as_image – Si vrai renvoie l’image comme un objet QImage
as_pixmap – Si True renvoie l’image comme un objet QPixmage
as_path – Si vrai renvoie l’image comme un chemin pointant vers un fichier temporaire
- data_for_find_identical_books()[source]¶
Renvoie les données qui peuvent être utilisées pour implémenter
find_identical_books()
dans un processus de travail sans accès à la bd. Voir db.utils pour une implémentation.
- data_for_has_book()[source]¶
Renvoie les données appropriées pour être utilisées dans
has_book()
. Ceci peut être utilisé pour une implémentation dehas_book()
dans un processus de travail sans accès à la bd.
- delete_custom_book_data(name, book_ids=())[source]¶
Effacer les données pour le nom. Par défaut efface toutes les données, si vous voulez seulement effacer les données pour certaines ids de livres, passez dans une liste d’ids de livres.
- delete_trash_entry(book_id, category)[source]¶
Supprimer une entrée de la corbeille. Ici, la catégorie est “b” pour les livres et “f” pour les formats.
- embed_metadata(book_ids, only_fmts=None, report_error=None, report_progress=None)[source]¶
Mettre à jour les métadonnées pour tous les fomats du book_ids sélectionné vers les métadonnées actuelle dans la base de données.
- export_note(field, item_id) str [source]¶
Exporter la note sous la forme d’un document HTML unique avec des images intégrées en tant que données : URL
- fast_field_for(field_obj, book_id, default_value=None)[source]¶
Semblable à field_for, sauf qu’il évite la consultation supplémentaire pour obtenir l’objet du champ
- field_for(name, book_id, default_value=None)[source]¶
Renvoie la valeur du champ
name
pour le livre identifié parbook_id
. Si un tel livre n’existe pas ou s’il n’y a pas de valeur spécifiée pour le champname` ou qu'un tel champ n'existe pas, alors ``default_value
est renvoyée.default_value
n’est pas utilisée pour title, title_sort, authors, author_sort and series_index. C’est parce que ceux-ci ont toujours des valeurs dans la base de données.default_value
est utilisée pour toutes les colonnes personnalisées.La valeur renvoyée pour les champs is_multiple est toujours un tuples, même si aucune valeur n’est trouvée (en d’autres termes, default_value est ignoré). L’exception concerne les identificateurs, pour lesquels la valeur retournée est toujours un dictionnaire. Les tuples renvoyés sont toujours dans l’ordre des liens, c’est-à-dire l’ordre dans lequel ils ont été créés.
- field_ids_for(name, book_id)[source]¶
Renvoie les ids (en tant que tuples) pour les valeurs que le champ
name
à dans le livre identifié parbook_id
. S’il n’y a pas de valeurs, ou pas de tel livre, ou pas de tel champ, un tuple vide est renvoyé.
- field_supports_notes(field=None) bool [source]¶
Retourne True si le champ spécifié prend en charge les notes. Si le champ est None, il renvoie un ensemble de tous les champs qui supportent les notes.
- find_identical_books(mi, search_restriction='', book_ids=None)[source]¶
Trouve les livres qui ont un sur-ensemble d’auteurs dans mi et ont le même titre (titre est à correspondance floue). Voir aussi
data_for_find_identical_books()
.
- format(book_id, fmt, as_file=False, as_path=False, preserve_filename=False)[source]¶
Renvoie le format de livre numérique comme une chaîne de caractères ou None si le format n’existe pas, ou que nous n’avons pas la permission d’écrire dans le fichier de livre numérique.
- Paramètres:
as_file – Si True le format de livre numérique est renvoyé comme un objet fichier. Notez que l’objet fichier est un fichier temporaire de file d’attente, aussi si ce que vous voulez faire est de copier le format sur un autre fichier, utilisez
copy_format_to()
à la place pour la performance.as_path – Copie le format de fichier vers un fichier temporaire et renvoie le chemin vers le fichier temporaire
preserve_filename – Si Vrai et renvoie un chemin le nom de fichier est le même que celui utilisé dans la bibliothèque. Notez qu’utiliser ceci signifie donner des appels répétés du même fichier temporaire (qui est recréé chaque fois)
- format_abspath(book_id, fmt)[source]¶
Renvoie le chemin absolu du fichier livre numérique du format format. Vous ne devriez presque jamais utiliser ceci, car compromet la promesse threadsafe de cette API. A la place utilisez,
copy_format_to()
.Actuellement utilisé uniquement dans la liste calibredb, la visionneuse, éditer le livre, compare_format au format original, Open With et les catalogues (via get_data_as_dict()).
A part depuis la visionneuse, open with et éditer le livre, je ne crois pas qu’aucun des autres ne fassent de fichier écriture I/O avec les résultats de cet appel.
- format_hash(book_id, fmt)[source]¶
Renvoie le hash du format spécifié pour le livre spécifié. Le type de hash est dépendant du système principal, mais il est habituellement SHA-256.
- format_metadata(book_id, fmt, allow_cache=True, update_db=False)[source]¶
Renvoie le chemin, la taille et mtime pour le format spécifié. Vous ne devriez presque jamais utiliser path à moins que vous n’en ayez absolument besoin, dès qu’il est accédé il compromet directement la promesse threadsafe de cette API. A la place utilisez la méthode
copy_format_to()
.- Paramètres:
allow_cache – Si
Vrai
les valeurs en cache sont utilisées, autrement un accès lent au système de fichiers est fait. Le cache des valeurs peut être périmé si l’accès est effectué au système de fichier en dehors de cette API.update_db – Si
Vrai
Le champ max_size de la base de données est mis à jour pour ce livre.
- formats(book_id, verify_formats=True)[source]¶
Renvoie le tuple pour tous les formats du livre spécifié. Si verify_format est Vrai, vérifie que les fichiers existent sur le disque.
- get_all_items_that_have_notes(field_name=None) set[int] | dict[str, set[int]] [source]¶
Retourne tous les item_ids pour les éléments qui ont des notes dans le champ spécifié ou pour tous les champs si field_name est None
- get_all_link_maps_for_book(book_id)[source]¶
Renvoie tous les liens pour tous les champs référencés par book_id. Si book_id n’existe pas, la méthode renvoie {}.
Exemple : Supposons que l’auteur A ait un lien X, que l’auteur B ait un lien Y, que le tag S ait un lien F, et la balise T a un lien G. Si le livre 1 a un auteur A et une balise T, cette méthode renvoie {“authors”:{“A”:”X”}, “tags”:{“T”, “G”}}. Si l’auteur du livre 2 n’est ni A ni B et qu’il n’a pas d’étiquette, cette méthode renvoie {}.
- Paramètres:
book_id – l’identifiant du livre en question.
- Renvoie:
{field: {field_value, link_value}, … pour tous les champs qui ont une valeur de lien non vide pour ce livre
- get_categories(sort='name', book_ids=None, already_fixed=None, first_letter_sort=False, uncollapsed_categories=None)[source]¶
Utilisé en interne pour implémenter le Navigateur d’Etiquettes
- get_custom_book_data(name, book_ids=(), default=None)[source]¶
Donne les données pour le nom. Par défaut renvoie les données pour tous les book_ids, passez dans une liste d’ids de livre si vous voulez seulement quelques données. Renvoie un mappage du book_id à la valeur. Si une valeur particulière ne peut être décodée, utilise l’option par défaut pour celle-ci.
- get_id_map(field)[source]¶
Renvoie un mappage des nombres id aux valeurs pour le champ spécifié. Le champ doit être un champ many-one ou many-many, autrement une ValueError est évoquée.
- get_ids_for_custom_book_data(name)[source]¶
Renvoie un ensemble d’ids de livre pour lesquels le nom a des données.
- get_item_id(field, item_name, case_sensitive=False)[source]¶
Renvoie l’id de l’item correspondant a item_name ou None s’il n’est pas trouvé. Cette fonction est très lente si vous effectuez des recherches pour plusieurs noms, utilisez get_item_ids() ou get_item_name_map(). De même, les recherches sensibles à la casse sont plus rapides que les recherches insensibles à la casse.
- get_item_ids(field, item_names, case_sensitive=False)[source]¶
Retourne un dict qui associe item_name à l’identifiant ou None
- get_item_name(field, item_id)[source]¶
Renvoie le nom d’élément pour l’élément spécifié par item_id dans le champ spécifié. Voir aussi
get_id_map()
.
- get_item_name_map(field, normalize_func=None)[source]¶
Renvoi un mapping entre les valeurs des éléments et leurs ids
- get_link_map(for_field)[source]¶
Renvoie un dictionnaire de liens pour le champ fourni.
- Paramètres:
for_field – le nom du champ pour lequel la carte de liens est souhaitée
- Renvoie:
{field_value:link_value, …} pour les liens non vides
- get_metadata(book_id, get_cover=False, get_user_categories=True, cover_as_data=False)[source]¶
Renvoie les métadonnées pour le livre identifié par book_id comme un un objet
calibre.ebooks.metadata.book.base.Metadata
. Notez que la liste des formats n’est pas vérifiée. Si get_cover est True, la couverture est retournée, soit un chemin au fichier temporaire comme mi.cover ou si cover_as_date est True comme mi.cover_data.
- get_next_series_num_for(series, field='series', current_indices=False)[source]¶
Renvoie les index de séries suivants pour les séries spécifiées, prendre en compte les préférences variées qui contrôlent la génération du numéro suivant de séries.
- Paramètres:
field – Le champ series-like (par défaut à la colonne séries intégrées)
current_indices – Si Vrai, renvoie à la place un mappage de book_id à l’actuelle valeur series_index.
- get_notes_resource(resource_hash) dict | None [source]¶
Retourne un dict contenant les données et le nom de la ressource ou None si aucune ressource avec le hash spécifié n’est trouvée
- get_proxy_metadata(book_id)[source]¶
Semblable à
get_metadata()
excepté qu’il renvoie un objet ProxyMedadata qui lit uniquement les valeurs depuis la base de données à la demande. Ceci est beaucoup plus rapide que get_metadata quand seulement un petit nombre de champs ont besoin d’être accédés depuis l’objet métadonnées renvoyé.
- get_usage_count_by_id(field)[source]¶
Renvoie un mappage de l’id au compte d’utilisation pour toutes les valeurs du champ spécifié, qui doit être un champ many-one ou many-many.
- has_book(mi)[source]¶
Renvoie True si et seulement si la base de donnée contient une entrée avec le même titre que l’objet Metadata transmis. La comparaison est sensible à la casse. Voir aussi
data_for_has_book()
.
- has_id(book_id)[source]¶
Renvoie Vrai si et seulement si le book_id spécifié existe dans la base de données.
- import_note(field, item_id, path_to_html_file, path_is_data=False)[source]¶
Importer une note précédemment exportée ou un fichier HTML arbitraire en tant que note pour l’élément spécifié
- items_with_notes_in_book(book_id: int) dict[str, dict[int, str]] [source]¶
Retourne un dict de champs des éléments qui ont des notes associées à ce champ pour le livre spécifié.
- link_for(field, item_id)[source]¶
Renvoie le lien, s’il y en a un, pour l’élément spécifié ou None si aucun lien n’est trouvé
- list_extra_files(book_id, use_cache=False, pattern='') Tuple[ExtraFile, ...] [source]¶
Obtenir des informations sur les fichiers supplémentaires dans le répertoire du livre
- Paramètres:
book_id – l’identifiant de livre dans la base de données pour ce livre
pattern – le modèle de noms de fichiers à rechercher. Le modèle vide correspond à tous les fichiers supplémentaires. Les modèles doivent utiliser / comme séparateur. Utilisez la constante DATA_FILE_PATTERN pour faire correspondre les fichiers à l’intérieur du répertoire de données.
- Renvoie:
Un n-uplet de tous les fichiers supplémentaires correspondant au modèle spécifié. Chaque élément du tuple est ExtraFile(relpath, file_path, stat_result). Où relpath est le chemin relatif du fichier vers le répertoire du livre en utilisant / comme séparateur. stat_result est le résultat de l’appel à os.stat() sur le fichier.
- merge_annotations_for_book(book_id, fmt, annots_list, user_type='local', user='viewer')[source]¶
Fusionner les annotations spécifiées avec les annotations existantes pour book_id, fm, user_type et user.
- merge_extra_files(dest_id, src_ids, replace=False)[source]¶
Fusionnez les fichiers supplémentaires de src_ids dans dest_id. Les fichiers en conflit sont renommés automatiquement sauf si replace=True auquel cas ils sont remplacés.
- move_book_from_trash(book_id)[source]¶
Annuler la suppression d’un livre dans le répertoire de la corbeille
- move_format_from_trash(book_id, fmt)[source]¶
Annuler la suppression d’un format dans le répertoire de la corbeille
- multisort(fields, ids_to_sort=None, virtual_fields=None)[source]¶
Renvoie une liste des ids de livre triés. Si ids_to_sort est Aucun, tout les ids de livre sont retournés.
les champs doivent être une liste de 2-tuples de la forme (field_name, ascending = True ou False). Le champ le plus important est le 2-tuple.
- notes_data_for(field, item_id) str [source]¶
Retourne toutes les données des notes sous forme de dict ou None si la note n’existe pas
- notes_for(field, item_id) str [source]¶
Retourne le document de notes ou une chaîne vide s’il n’est pas trouvé
- notes_resources_used_by(field, item_id)[source]¶
Retourne l’ensemble des hachages de toutes les ressources utilisées par la note pour l’élément spécifié
- pref(name, default=None, namespace=None)[source]¶
Renvoie la valeur pour la préférence spécifiée ou la valeur spécifiée comme étant
par défaut
si la préférence n’est pas paramétrée.
- read_backup(book_id)[source]¶
Renvoie la sauvegarde des métadonnées OPF comme une chaîne de caractères ou Aucun si une telle sauvegarde n’existe pas.
- remove_books(book_ids, permanent=False)[source]¶
Supprimer de la base de données les livres spécifiés par les book_ids et effacer leurs formats de fichier . Si
permanent
est à False, alors les formats de fichiers sont placés dans la corbeille de la bibliothèque.
- remove_extra_files(book_id: int, relpaths: Iterable[str], permanent=False) dict[str, Exception | None] [source]¶
Delete the specified extra files, either to Recycle Bin or permanently.
- remove_formats(formats_map, db_only=False)[source]¶
Supprimer les formats spécifiés des livres spécifiés.
- Paramètres:
formats_map – Un mappage de book_id à une liste de formats à supprimer du livre.
db_only – Si Vrai, retirer uniquement l’enregistrement pour le format de la base de données, n’efface pas le fichier de format actuel du système de fichiers.
- Renvoie:
Une correspondance entre l’identifiant du livre et l’ensemble des formats effectivement supprimés du système de fichiers pour ce livre.
- remove_items(field, item_ids, restrict_to_book_ids=None)[source]¶
Supprimer tous les éléments dans le champ spécifié avec les ids spécifiés. Renvoie l’ensemble des ids de livres affectés.
restrict_to_book_ids
est un ensemble optionnel d’ids de livres. Si spécifié les éléments seront uniquement supprimés de ces livres.
- rename_extra_files(book_id, map_of_relpath_to_new_relpath, replace=False)[source]¶
Renommer des fichiers de données supplémentaires
- rename_items(field, item_id_to_new_name_map, change_index=True, restrict_to_book_ids=None)[source]¶
Renommer les éléments d’un champ many-one ou many-many comme étiquettes ou séries.
- Paramètres:
change_index – Lors du renommage d’un champ series-like change aussi les valeurs series_index.
restrict_to_book_ids – Un ensemble optionnel d’ids de livres pour lesquels le renommage est effectué, par défaut à tous les livres.
- restore_book(book_id, mi, last_modified, path, formats, annotations=())[source]¶
Restaure l’entre du livre dans la base de données pour un livre qui existe déjà dans le système de fichiers.
- restore_original_format(book_id, original_fmt)[source]¶
Restaure le format spécifié à partir du ORIGINAL_FORMAT précédemment sauvé, s’il y en a. Renvoie Vrai en cas de réussite. Le ORIGINAL_FORMAT est supprimé après une restauration réussie.
- property safe_read_lock¶
Un verrou en lecture sûr qui ne fait rien si le thread à déjà un verrou en écriture, autrement il acquiert un verrou en lecture.Ceci est nécessaire pour prévenir les DowngradeLockErrors, qui peuvent survenir quand on met à jour le cache de recherche en la présence de colonnes composées. Mettre à jour le cache de recherche préserve un verrou exclusif, mais la recherche d’une colonne composée implique de lire des valeurs de champ par l’intermédiaire de ProxyMetadata qui essaye d’obtenir un verrou partagé. Il peut y avoir d’autres scénarios qui déclenchent ceci également.
Cette propriété renvoie un nouvel objet verrou à chaque accès. Cet objet verrou n’est pas récursif (pour la performance) et doit être uniquement utilisé dans une déclaration with comme
with cache.safe_read_lock:
autrement de mauvaises choses peuvent survenir.
- save_original_format(book_id, fmt)[source]¶
Sauver une copie du format spécifié comme ORIGINAL_FORMAT, écrase tout ORIGINAL_FORMAT existant.
- search(query, restriction='', virtual_fields=None, book_ids=None)[source]¶
Rechercher dans la base de données pour la requête spécifiée, en renvoyant un ensemble d’ids de livre correspondants.
- Paramètres:
restriction – Une restriction qui est ANDed à la requête spécifique. Notez que ces restrictions sont en cache, dès lors une recherche pour a AND b plus lente que celle avec une restriction b.
virtual_fields – Utilisé en interne (champs virtuels tels que on_device pour y faire une recherche)
book_ids – Si n’est pas Aucun, un ensemble d’ids de livre pour les livres sera recherché à la place de rechercher tous les livres.
- 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)[source]¶
Retour d’un tuple d’annotations correspondant à la requête en texte intégral spécifiée.
- 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)[source]¶
Recherche dans le texte des notes à l’aide d’un index FTS. Si la requête est vide, le système renvoie toutes les notes.
- set_annotations_for_book(book_id, fmt, annots_list, user_type='local', user='viewer')[source]¶
Définit toutes les annotations pour le book_id, le fmt, le user_type et l’utilisateur spécifiés.
- set_conversion_options(options, fmt='PIPE')[source]¶
les options doivent être une carte de la forme {book_id:conversion_options}
- set_cover(book_id_data_map)[source]¶
Paramétrer la couverture pour ce livre. Les données peuvent être soit une QImage, une QPixmap, un objet fichier ou une chaîne de caractères. Elles peuvent être aussi Aucun, dans quel cas toute couverture existante sera supprimée.
- set_field(name, book_id_to_val_map, allow_case_change=True, do_path_update=True)[source]¶
Paramétrer les valeurs du champ spécifié par
name
. Renvoie l’ensemble de tous les ids de livre affectés par le changement.- Paramètres:
book_id_to_val_map – Mappage des book_ids aux valeurs qui devraient être appliquées.
allow_case_change – Si Vrai, la casse des champs many-one ou many-many sera changée. Par exemple, si un livre à l’étiquette
tag1
et que vous paramétrez l’étiquette pour un autre livre àTag1
alors les deux livres ont l’étiquetteTag1
si allow_case_change est Vrai, autrement ils ont tous les deux l’étiquettetag1
.do_path_update – Utilisé en interne, vous ne devriez jamais le changer.
- set_link_map(field, value_to_link_map, only_set_if_no_existing_link=False)[source]¶
Définit les liens pour les valeurs des éléments dans le champ. Remarque : cette méthode ne modifie pas les valeurs qui ne figurent pas dans le value_to_link_map
- Paramètres:
field – le nom recherché
value_to_link_map – dict(field_value:link, …). Notez qu’il s’agit de valeurs et non d’identifiants de champ.
- Renvoie:
livres modifiés en définissant le lien
- set_metadata(book_id, mi, ignore_errors=False, force_changes=False, set_title=True, set_authors=True, allow_case_change=False)[source]¶
Paramétrer les métadonnées pour le livre id depuis l’objet Metadata mi.
En réglant force_changes=True forcera set_metadata à mettre à jour les champs même si mi contient des valeurs vides. Dans ce cas, “Aucun” est distingué de “vide”. Si mi.XXX est Aucun, le XXX n’est pas remplacé, autrement il l’est. Les étiquettes, identifiants, et attributs de couverture sont des cas spéciaux. Étiquettes et identifiants ne peuvent être paramétrés à Aucun aussi seront-ils toujours remplacés si force_change est Vrai. Vous devez vous assurer que mi contient les valeurs que vous voulez que le livre ait.. Les couvertures sont toujours changées si une nouvelle couverture est procurée, mais ne sont jamais supprimées. Aussi notez que force_changes n’a pas d’effet sur les réglages titre ou auteurs.
- set_notes_for(field, item_id, doc: str, searchable_text: str = '', resource_hashes=(), remove_unused_resources=False) int [source]¶
Définir le document de notes. Si le texte consultable est différent du document, indiquez-le dans searchable_text. Si le document fait référence à des ressources, leurs hachages doivent être présents dans resource_hashes. Définissez remove_unused_resources à True pour nettoyer les ressources inutilisées. Notez que la mise à jour d’une note nettoie automatiquement les ressources relatives à cette note de toute façon.
- set_pref(name, val, namespace=None)[source]¶
Paramétrer la préférence spécifiée à la valeur spécifiée. Voir aussi
pref()
.
- split_if_is_multiple_composite(f, val)[source]¶
Si f est une clé de recherche de colonne composite et que la colonne est is_multiple, diviser v en valeurs uniques et non vides. La comparaison est sensible à la casse. L’ordre n’est pas préservé. Retourne une list() pour des raisons de compatibilité avec les getters des champs de proxy metadata , par exemple les tags.
- tags_older_than(tag, delta=None, must_have_tag=None, must_have_authors=None)[source]¶
Renvoie les ids de tous les livres ayant l’étiquette
tag
qui sont plus anciennes que le moment spécifié, la comparaison d’étiquette est insensible à la casse.- Paramètres:
delta – Un objet timedelta ou Aucun. Si Aucun, alors tous les ids avec l’étiquette sont retournées.
must_have_tag – Si pas Aucun la liste des correspondances sera restreinte aux livres qui ont cette étiquette
must_have_authors – Une liste d’auteurs. Si pas Aucun la liste des correspondances sera restreinte aux livres qui ont ces auteurs (insensible à la casse).
- unretire_note_for(field, item_id) int [source]¶
Annule une note précédemment retirée pour l’élément spécifié. Les notes sont retirées lorsqu’un élément est supprimé de la base de données
- user_categories_for_books(book_ids, proxy_metadata_map=None)[source]¶
Retourne les catégories utilisateur pour les livres spécifiés. proxy_metadata_map est optionnel et est utile pour une amélioration de la performance, dans les contextes où un objet ProxyMetadata pour les livres existe déjà. Il devrait être une cartographie des book_ids à leurs objets correspondants ProxyMetadata.