# 260904 - ISBN des livres pour indexation Calibre

# ISBN des livres pour indexation Calibre

*Procédure en trois étapes, arrêtée le 2026-09-20. Copie de référence : `Jux-scripts/Livres-ISBN/doc_bookstack_300.md`.*

## Le processus

**1. Julien dépose** les EPUB et PDF à identifier dans

```
D:\Procedures Calibre\Dossier à renseigner
```

avec leurs sous-dossiers s'il veut retrouver ses rayons dans le CSV.

**2. Claude lance le script** (ou Julien, c'est une seule commande) :

```
py -3.12 D:\Syncthing\Jux_univers\Jux-scripts\Livres-ISBN\renseigner.py
```

Il produit **un seul fichier, dans le dépôt lui-même**, daté du jour, dans l'ordre des fichiers :

```
D:\Procedures Calibre\Dossier à renseigner\260920-livres-isbn.csv
```

**3. Claude écrit dans les fichiers déposés** ce qu'il a trouvé — l'ISBN, et le titre/auteur du catalogue quand la proposition est sûre :

```
py -3.12 D:\Syncthing\Jux_univers\Jux-scripts\Livres-ISBN\ecrire_metadonnees.py --go
```

L'outil est `ebook-meta.exe`, celui de Calibre : ce qu'il écrit, Calibre le lit à l'ajout, par construction. Décision de Julien (2026-09-20) : écrire **même quand la recherche peut être erronée** — « c'est moi qui valide les livres un par un ensuite ; si l'ISBN est faux, je le vois. Ça me fait gagner un temps fou. » Chaque fichier est copié à côté avant l'écriture, contrôlé après, restauré si le contrôle échoue. Le CSV reçoit une colonne `ecrit`.

**4. Julien ajoute les livres un à un dans Calibre, vérifie, valide, corrige**, le CSV ouvert à côté (LibreOffice Calc l'ouvre directement, séparateur `;`). Une fois le lot fait, il vide le dépôt — Calibre a copié les fichiers dans sa bibliothèque, les originaux sont dans Foxy.

**Aucun script n'écrit dans Calibre ni dans Foxy.** Le dépôt est une copie de travail ; les deux scripts refusent tout dossier réseau.

## Lire le CSV

Une ligne d'intitulé `=== rayon === (n)` précède chaque sous-dossier. Puis, par livre :

| Colonne | Ce qu'elle dit |
|---|---|
| `confiance` | **`o`** : ISBN sûr, à saisir tel quel. **`?`** : trouvé en catalogue mais à vérifier (comparer `titre`/`auteur` à la couverture). Vide : rien trouvé |
| `a_saisir` | **Ce que Julien devra taper** dans Calibre — `rien`, `isbn`, `titre`, `auteur` ou une combinaison. Le reste, Calibre le lira tout seul dans le fichier à l'ajout |
| `isbn`, `titre`, `auteur` | Les valeurs à reporter |
| `provenance` | `fichier` (lu dans le livre), `BnF`, `OpenLibrary` |
| `calibre_lira` | `isbn` si Calibre lira l'ISBN de lui-même |
| `remarque` | Les avertissements : fichier que Calibre ne sait pas ouvrir, nom à renommer, doublon, titre suspect |

**Dans Calibre**, l'ISBN se saisit dans *Modifier les métadonnées → Identifiants* sous la forme `isbn:9782…`. Ensuite *Télécharger les métadonnées* complète la fiche — **mais uniquement le résumé** : le réglage *Préférences → Partage → Téléchargement des métadonnées → Champs à télécharger* ne doit garder que *Résumé*. Les étiquettes sont le classement de Julien, jamais écrasées.

## Ce que fait le script, et pourquoi

- **Il lit les métadonnées dans les fichiers** — l'OPF d'un EPUB, le DocInfo, le XMP et la page de copyright d'un PDF, les enregistrements EXTH d'un MOBI. Sur Foxy, 37 % des EPUB portent déjà leur ISBN : autant de livres identifiés sans une requête. Le nom de fichier ne sert qu'en dernier recours.
- **Il demande à Calibre ce que lui en lira** (`ebook-meta.exe`, le lecteur même de l'import). C'est mesuré, pas deviné : Calibre lit l'ISBN d'un EPUB 14 fois sur 14 quand il est dans l'OPF, d'un PDF une fois sur deux — il ne lit jamais la page de copyright. D'où la colonne `a_saisir`.
- **Il interroge la BnF puis OpenLibrary** pour ce qui n'a pas d'ISBN. Ni Amazon (la source Calibre est morte, HTTP 500) ni Google Books (429 depuis cette IP).
- **Il ne pré-coche (`o`) que sur une preuve** : ISBN lu dans le fichier, ou score ≥ 0,90 avec auteur concordant. Jamais sur un résultat obtenu sans filtre auteur, jamais sur un titre de moins de 25 caractères sans auteur (`Wraps`, `Whoopies` : plusieurs livres portent ce titre).
- **Il met en cache** lectures Calibre et réponses en ligne dans `D:\Procedures Calibre\ISBN\` : relancer ne réinterroge pas.

## Pièges connus

- **Un ISBN se retrouve, il ne se déduit pas.** Un ISBN inventé passe la clé de contrôle une fois sur dix et pointe un autre livre. Tout numéro est vérifié (clé ISBN-10/13), et dans un PDF n'est retenu que précédé du mot ISBN ou EAN.
- **Le DocInfo d'un PDF est souvent du bruit d'atelier** : `PDF Reducer Demo version` (203 fois sur le lot Cuisine), `~1`, `Microsoft Word - doc1`. Règle : un titre d'ouvrage ne se répète pas à l'identique dans cinq fichiers.
- **Un nom de fichier bien formé porte légitimement l'auteur** (`Appetites - Anthony Bourdain.epub`). La règle qui rejette un auteur « copié du nom de fichier » ne vise que les blocs sans espace (`SaveursAmericainesChristineFleurent`).
- **Un nom avec accent décomposé (NFD, fichier passé par un Mac) fait échouer Calibre** sur « fichier introuvable » alors que l'EPUB est sain. Le script le lit quand même et note « à renommer avant l'ajout ».
- **Sans auteur, un titre identique ne prouve rien.** Signal d'alerte : zéro « à vérifier » sur 200 résultats n'est jamais naturel.
- **`X - Y` ambigu** (`Cioran - Exercices Négatifs` vs `Constantin - Bertrand Lançon`) : le titre lu dans le fichier tranche ; sinon le catalogue est interrogé dans les deux sens.
- Brochures, magazines, compilations de recettes **n'ont pas d'ISBN** — le script ne s'y acharne pas.
- `\\NASMAISON\foxy` n'est dans aucune sauvegarde connue. Vrai des 16 616 fichiers comme de la bibliothèque Calibre.

## Historique

- **2026-09-04** — chaîne initiale (`inventaire_livres.py` + `resoudre_livres.py`), lot Cuisine Géo : 619 fichiers, 233 ISBN (38 %).
- **2026-09-05** — les CSV suivent l'ordre du répertoire, plus le score : on vérifie un ISBN en voyant ses voisins d'étagère.
- **2026-09-20** — processus ramené à trois étapes, `renseigner.py` comme point d'entrée unique, un seul CSV dans le dépôt, lecture par Calibre mesurée. Le soir même : **Claude écrit l'ISBN dans les fichiers déposés** (`ecrire_metadonnees.py`), Julien valide dans Calibre. Premier lot : Cuisine Géo Asie/Europe/Monde, ~480 fichiers.