Accueil > calibre technique >

<< Calibre technique  | |   Exemples de modèles >>

Modèles et expressions régulières

Pour paramétrer calibre, on utilise souvent des modèles (template) ou expressions barbares (regex). Dans ces pages, je vous donne beaucoup d'exemples à utiliser tels quels, mais c'est mieux de comprendre et de pouvoir adapter les exemples à ce qu'on veut précisément.

Les modèles de calibre

Ces modèles sont utilisé quand on veut se baser sur les colonnes de calibre pour indiquer ce qu'on veut. On les utilise notamment pour préciser dans quelle structure de répertoire copier des livres, quel nom donner au fichier-livre ou créer des colonnes personnalisées.

Principes de base de la syntaxe

On met le noms de colonne (en anglais) et entre deux accolades

Si vous voulez donner à votre fichier le nom du titre du livre, vous allez le définir ainsi : {title}

.
On peut utiliser des caractères de ponctuation

Si vous voulez créer une colonne qui contient le titre et le nom de l'auteur, vous allez la créer et indiquer pour la définir : {title} - {authors}, ce qui donnera Notre-dame de Paris - Victor Hugo par exemple

.
On peut définir des chemin (répertoires / sous répertoire)

Si vous utilisez une barre oblique, elle est considérée comme indiquant une suite de répertoires : {tags}/{authors}/... va donner :

Quand on indique un chemin, la dernière partie est le nom du fichier

{tags}/{authors}/{title} va donner :

Haut de page

Le nom des colonnes

Comme vous le constatez, on utilise le nom des colonnes en anglais (pas la traduction française que vous avez sur l'interface).

Comment connaitre le nom des colonnes ?
Mettez votre souris sur le nom de la colonne : une infobulle indiquera : Le nom de consultation/recherche est "xxx"

Les colonnes les plus souvent utilisées sont :

Haut de page

Mise en forme des données

Deux de ces colonnes peuvent poser problème : les étiquettes et les numéros de séries.

Etiquette : valeur multiple

La particularité des étiquettes est que vous pouvez mettre plusieurs valeurs dedans, séparées par des virgules.

Or si vous définissez un chemin comme {tags}/{title} et qu'il y a deux étiquettes, votre livre va être copié deux fois : une fois dans Etiquette1/Mon_titre.epub et une seconde fois dans Etiquette2/Mon_titre.epub ou bien un niveau supplémentaire de répertoire va se créer : Etiquette1/Etiquette2/Mon_titre.epub (ce qui est gênant quand on a 4 étiquettes pour un livre).

Pour éviter ce résultat, on choisit par exemple de se limiter à la première étiquette. C'est pour cela que vous trouverez les étiquettes avec la syntaxe suivante : {tags:re((.*?)(\,|$).*,\1)} (là, on a utilisé des expressions régulières pour couper la chaine des étiquettes en se basant sur la virgule qui les séparent)

Voir d'autres moyens de traiter les champs à valeur multiple

Les numéros de série

Vous pouvez demander d'intégrer la série et son numéro dans un titre : {series} {series_index} - {title}, ce qui donnera dans votre liseuse :

Bon, là, ça va. Mai si votre série fait plus que neuf titres, vous aurez :

Il faut donc mettre le numéro d'index sur deux voir trois chiffres : {series_index:0>2s} (ici, c'est sur 2).

Haut de page
Gérer les données manquantes

Admettons que vous voulez le format suivant : Série [01] - Mon titre. A priori, cela donne : {series} [{series_index:0>2s}] - {title}.

Oui, on obtient bien Les Misérables [01] - Fantine. Mais ça va aussi donner : [] - Notre-Dame de Paris : calibre est gentil, quand l'information manque (ici, la série et numéro de série), il n'en fait pas un drame, il ne met rien à la place. Par contre, il n'a aucune raison de ne pas mettre les [ et ] qu'on avait prévus.

Heureusement, les programmeurs, qui eux ont tout prévu, mettent à votre disposition une mise en forme spéciale : {le_champ | ce qu'on met avant s'il n'est pas vide | ce qu'on met après s'il n'est pas vide}. La barre verticale | s'obtient en faisant ALTGR + 6.

Pour nos numéros de série, cela donne : {series_index|[|]}, soit : crochet conditionnel, numéro de série, crochet conditionnel. Et comme on veut en plus le mettre sur deux chiffres, ça donne : {series_index:0>2s|[|]}.

Si on veut obtenir [Ma série 01] Mon titre, on écrira : {series|[|} {series_index:0>2s||]} {title} : crochet conditionnel, série, espace, numéro de série, cochet conditionnel, espace, titre.

Les données raccourcies

Il y a plein de manière de raccourcir le contenu des champs, mais je ne vous met ici que la plus simple : {champ:.nb}.

Ainsi, pour avoir les 5 premières lette d'une série : {series:.5}

La page complète sur les modèles de calibre est là : Le langage de modèle calibre

Haut de page

Les expressions régulières (ou expressions rationnelles ou regex)

Les expressions régulières sont extrèmement barbares, mais aussi terriblement utiles. Dans calibre, on les utilise notamment pour les Rechercher & Remplacer dans les options de conversion, la détection de métadonnées à partir des noms de fichier dans les paramètres d’importation et le Rechercher & Remplacer lors de l’édition par lot des métadonnées. On en a même utilisé au dessus pour résoudre notre problème de listes multiples.

Le principe

C'est une manière de trouver une chaine de caractères, qu'on définit de manière générale : "toutes les lettres jusqu'à la virgule" ou "tout ce qui se trouve entre [ et ]".
Initiez-vous aux expression régulières

Pour comprendre ce qui est au-dessus et pouvoir ensuite l'adapter à vos besoins, il est recommandé de suivre une formation accélérée avec cet excellent cours

Cela dit, à partir des modèles que je vous donne dans les pages Harmoniser sa bibliothèque et Exemples de modèles, vous devriez pouvoir faire ce que vous désirez, au prix de quelques adaptations (et quelques migraines).

Haut de page
Attention, concept à manier avec précaution

Attention : faire des Rechercher remplacer sur un lot de livres avec des expressions régulières est toujours un peu risqué. N'oubliez pas que chaque action est irrémédiable (inutile de vous exciter sur CTRL + Z, ça ne marche pas !).
calibre a prévu des champs de test, vous permettant de voir ce que donnerai le résultat avec les livres sélectionnés, et vous pouvez même taper votre propre exemple de test pour être certain que toutes les hypothèses sont correctement traitées. N'hésitez pas à en abuser !

Capitalisez l'utilisation de vos expressions régulières

Autre précision qui va faire votre bonheur : les expressions régulières que j'ai rassemblé ici pour vous sont essentiellement utilisées dans l'onglet Rechercher et remplacer de Modifier les métadonnées par lot. Pour que vous n'ayez pas à les réécrire à chaque fois que vous faites un peu de rangement, il est possible d'enregistrer pour les réutiliser plus tard. Vous pourrez donc capitaliser ce que vous allez trouver ici.

  1. Aller dans l'onglet Rechercher et remplacer de Modifier les métadonnées par lot
  2. Remplir les champs texte, sélectionner les champs cibles
  3. Cliquer sur le bouton Enregistrer
  4. Dans la boite de dialogue, mettre un libellé parlant
  5. Cliquer sur OK

Pour modifier une recherche, sélectionnez le même nom quand vous la réenregistrez. Après confirmation de votre part, la recherche sera enregistrée sous le même nom, avec votre correction.

Haut de page

Memento express

Les métacaractères (caractères qui ont une sigification spéciale) doivent être précédés d'un \ quand ils sont utilisés comme des caractères normaux. Les caractères concernés sont : # ! ^ $ ( ) [ ] { } | ? + * .

Les classes abrégées :

Les quantificateurs :

Haut de page

Exemples concrets

A lieu de vous donner un cours, je vais vous expliciter certaines des expressions que je vous propose dans la page Harmoniser sa bibliothèque

Rechercher les espaces mutiples (pour les supprimer)

(mettre un espace)+ : [espace] [plusieurs fois]

Découper une chaine

(.*) (.*) : [tous caractères, en plusieurs exemplaires. Le fait que ce soit entre parenthèse indique que c'est une fraction de chaine][espace : va marquer la fin de la première chaine] [tous caractères, en plusieurs exemplaires. Le fait que ce soit entre parenthèse indique que c'est une autre fraction de chaine]
Si on recherche le code ci-dessus et qu'on le remplace par \2, \1, on inverse les deux parties de la chaine en les séparant par " ,".

Rechercher les virgules sans espace à la suite

(.*),\s{0}([A-Za-z]) : [tous caractères, en plusieurs exemplaires - qui est la première partie de ma chaine] [virgule] [0 fois caractère espace] [Toutes les lettres majuscules ou minuscules - qui constituent la seconde partie de ma chaine].
Si on recherce ce qu'il y a eu dessus et qu'on le remplace par \1, \2, on remplace mon début,ma suite par mon début, ma suite.

Détecter des nombre en début de chaine

(\d+)(.*) : [un nombre qui peut être sur plusieurs chiffres][le reste]
Si on recherche la chaine au-dessus et qu'on la remplace par \2, on supprime les nombres en début de chaine

Voir plein d'autre expressions détaillées utiles

Un bon memento

Haut de page

Dernière modification de la page : 28/12/2014

La plupart des textes se trouvant ici ont été gracieusement mis à ma disposition par leur auteur ou traduits à partir de textes publiés en ligne par ceux qui en détiennent les droits. Vous pouvez les citer mais vous devez impérativement indiquer l'auteur d'origine et/ou, le cas échéant, reprendre le lien que j'ai mis vers le texte original.
Dans la mesure du possible, merci de mettre un lien vers l'article plutôt que le recopier intégralement. Conformément à la législation, vous avez le droit de résumer ou de citer brièvement tout texte qui vous intéresse.
Toute utilisation des textes se fera selon les termes de la Licence Creative Commons Paternité - Pas d'Utilisation Commerciale - Partage à l'Identique 2.0 France.
Contrat Creative Commons

Accueil - Plan du site - Contact