260904 - ISBN des livres pour indexation Calibre
ISBN des livres pour indexation Calibre
ObjectifProcé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. Julien ajoute les livres deun à un dans Calibre et saisit les métadonnées lui-même, le CSV ouvert à côté (LibreOffice Calc l'ouvre directement, séparateur ). Une fois le lot fait, il vide le dépôt — \\NASMAISON\foxy;16Calibre 616a fichiers,copié 10les 360fichiers EPUBdans etsa 6bibliothèque, 240les PDForiginaux accumuléssont depuisdans trente ans — pour reconstruire une bibliothèque exploitable par Kavita.Foxy.
Règle absolue : lecture seule.Aucun script n'écrit dans\\NASMAISON\foxy,Calibre ni danslesFoxy.fichiers, ni dans Calibre.C'estJulien qui renseigne les métadonnées.Les scripts préparentladécision,règleilsdune la prennent pas2026-09-04, etnelel'appliquentscriptpas.refuse tout dossier réseau.
Scripts : Jux-scripts/Livres-ISBN/ — stdlib Python seule, README.md complet dans
Lire le CSV
Une ligne d'intitulé === rayon === (n) précède chaque sous-dossier. Puis, par livre :
Les dossiers
|
o ? : trouvé en catalogue mais à vérifier (comparer titre/auteur à la couverture). Vide : rien trouvé |
|
, , |
auteur ou une C'estcombinaison. Le reste, Calibre le moulelira destout procédures Photos-Caesium et Musique-FLAC : un dossier de dépôt, un dossier de résultat.
La procédure
cd D:\Syncthing\Jux_univers\Jux-scripts\Livres-ISBN
py -3.12 inventaire_livres.py # etape 1 : lit les fichiers
py -3.12 resoudre_livres.py # etape 2 : interroge les catalogues
Étape 3 : Julien relit propositions.csv, corrige, et saisitseul dans Calibre.
Pour viser un dossier du NAS plutôt que le dossier de dépôt :
py -3.12 inventaire_livres.py --dossier "//NASMAISON/foxy/Histoire"
Ce qui a changé par rapport à la première rédaction
La procédure d'origine tenait en trois temps : lire le nom des fichiers, faire deviner l'identité par l'IA à partir de recherches Internet (Amazon notamment), puis saisir à la main. Trois points ont été corrigés, chacun sur mesure et non sur intuition.
1. Les métadonnées sont DANS les fichiers — c'est la découverte
L'étape 1 lisait le nom de fichier. Or un EPUB porte son OPF, un PDF son DocInfo et son XMP, un MOBI ses enregistrements EXTH. C'est gratuit, hors ligne, instantané, et sans commune mesure avec ce que dit un nom de fichier.
Vérifié sur le dossier d'examen 0_A Inventorier, 6 fichiers :
9866gwlaz0l55yw8lsfh.epubL.animal.en.nous.2011.Michel.Odoul.epubisbn, titre, auteur
Rovere Maxime - L'école de la vie.epubprovenance
fichier (lu dans le livre), BnF, OpenLibrary
calibre_lira
isbn si Calibre lira l'ISBN de remarque
6Dans surCalibre, 6l'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é portaient: leurle titreré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 leurpourquoi
Sur 150 fichiers prismétadonnées dans les foxy: 150 titres exploitables, 147 lus dans le fichier même, et 56 ISBN (37 %) déjà présentsfichiers — 56l'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 seulerequête. requêteLe réseau.
de fichier ne sert qu'en dernier recours.
ebook-meta.exe, le lecteur même de l'import). C'est mesuré, pas deviné : Calibre lit l'ISBN d'un EPUB a_saisir.
Il interroge la BnF puis OpenLibrary <dc:identifier><dc:identifier opf:scheme="ISBN">9782226422156</dc:identifier>
<dc:identifier>urn:isbn:9791020923059</dc:identifier>
<meta property="dcterms:identifier">9791020922816</meta>
<meta property="pageBreakSource">urn:isbn:9791020923059</meta>
2.Ni Amazon est une impasse — BnF et OpenLibrary marchent
La(la source Amazon de Calibre passeest parmorte, unHTTP scraping500) Google et ne renvoie plus rien ;ni Google Books répond (429 depuis cette IP,IP).
o) que sur une Lesconcordant. sourcesJamais retenuessur sontun BnFrésultat obtenu sans filtre auteur, jamais sur un titre de moins de 25 caractères sans auteur (SRU)Wraps, Whoopies : plusieurs livres portent ce titre).
GOOGLE_BOOKS_KEYD:\Procedures Calibre\ISBN\ Pièges sourceconnus
3.
Un ISBN se retrouve, il ne se déduit « Extrapolation », « l'IA qui déduit » : c'est le point à ne pas garder.pas.
Le rôle du traitement automatique est de nettoyer le titre pour interroger un catalogue, puis de vérifier la clé de ce que le catalogue renvoie. Tout numéro passe par un contrôle de clé et une normalisation en ISBN-13 avant d'entrer dans un CSV.
Corollaire pour les PDF : un numéro n'est retenu que s'il est précédé du mot ISBN ou EAN. Sans cette exigence, un numéro quelconque passe la clé de contrôle une fois sur dix —et sur 6 240 PDF, cela ferait des centaines de faux.
4. « Un seul auteur, sinon Calibre ne trouve rien »
C'étaitpointe un symptômeautre delivre. laTout source morte, pas une règle. La requêtenuméro est bienvérifié normalisée(clé àISBN-10/13), et dans un auteur, mais les autres restent dans le CSV. Et le filtre auteur est désormais insensible à l'ordre : Harari Yuval Noah et Yuval Noah Harari sont reconnus comme le même auteur, ce qui sortait auparavant Sapiens, Homo Deus et Nexus de la pile des pré-cochés pour rien.
Le fichier d'état
etat.csv sépare ce que dit le fichier, ce que dit le nom et la synthèse — les trois restent lisibles côte à côte, ce qui permet de voir pourquoi une valeur a été retenue.
confiancehautemoyennefaiblenullea_resoudre vaut oui (à interroger), vide (ISBN déjà là) ou non (pas même un titre : aucune requête n'y changera rien).
Le pré-cochage engage la main de Julien
La colonne PDF n'est decisionpré-remplieretenu que oqu'au-dessus de 0,90, et jamais :
Points techniques à ne pas re-découvrir
Cioran - Exercices NégatifsConstantin - Bertrand Lançon(ambigu)BnF (sens inverse)dictionnairehistoireessaiœuvresexercicesDictionnaire Aristote - Pierre PellegrinPhotocopillagePDF picto.epsReducer Demo version (203 fois sur le lot Cuisine), ~1, Microsoft Word - doc1ARISTOTELOUSthique à Eudemeuvres complètes\\NASMAISON\foxy//NASMAISON/foxyBibliotheque Calibre--toutdoublon possible avec #NCadence mesurée (2026-09-04)
Les deux étapes reprennent où elles s'étaient arrêtées (--reprendre), donc le travail se fait par lots, dossier par dossier. Rendement de la résolution sur 32 livres d'histoire : 28 fiches trouvées, 22 pré-cochées (69 %).
Ce qu'il ne faut pas chercher à indexer
Le constat du 2026-08-31 tient : sur 302 livres sans ISBN dans la bibliothèque Calibre, 181 n'en avaient pas à trouver — 122 PDF (brochures, PDF Reducer Demo version, Mon chien / Collectif OSAV), 47 compilations de recettes, 9 guides. Une brochure n'a pas d'ISBN, aucune source ne le lui inventera.
Ces fichiers sortent en a_resoudre=non et ne consomment aucune requête. S'ils polluent la vue « livres », l'angle est de les étiqueter comme documents, pas de s'acharner à les indexer.
Note pour la suite — Kavita
Kavita lit les métadonnées dans l'EPUB (son OPF), pas dans la base Calibre. Une bibliothèque Calibre impeccable ne suffira donc pas : il faudra, côté Calibre, incruster les métadonnées dans les fichiers (Modifier les métadonnées → Polir les livres → Mettre à jour les métadonnées). À vérifier sur l'instance avant de s'engager.
Et pour Kavita, l'ISBN est un moyen, pas une fin : ce qui s'affiche, c'est le titre, l'auteur, la série, le résumé et la couverture. L'ISBN n'est que la clé qui permet d'aller les chercher d'un coup et sans erreur.
Point de vigilance
\\NASMAISON\foxy n'est dans aucune sauvegarde connue : ni dans sync_kdrive_complete.sh (qui ne traite que le NAS sasnexte), ni dans la sauvegarde VPS. C'est vrai de la bibliothèque Calibre comme des 16 616 fichiers. À trancher séparément.
REX — premier lot réel : Cuisine Géo (2026-09-04)
619 fichiers, 9,6 Go déposés depuis \NASMAISON\foxy\Cuisine\Cuisine Géo (8 sous-dossiers par origine géographique). 79 % de PDF — le mélange le plus difficile du fonds, et l'inverse des échantillons de mise au point.
Résultat
IMG 3940Bilan : 233 livres sur 619 (38 %) portent un ISBN — 61 gratuits, 172 retrouvés. Durée : 2 min 40 d'inventaire, 15 min de résolution.
Le taux d'ISBN embarqué tombe à 10 % ici (contre 37 % sur un échantillon majoritairement EPUB) : un PDF n'a pas de champ ISBN, il faut aller le lire sur la page de copyright. Et une part des 243 sans réponse n'a tout simplement pas d'ISBN à trouver — magazines, compilations de recettes, fascicules scannés.
Sept défauts corrigés grâce à ce lot
Aucun n'était visible sur les échantillons de mise au point. Ils sont tous corrigés dans les scripts.
Chemin de plus de 260 caractères — la limite historique de Windows. os.walk voit le fichier, getsize/open échouent dessus sur un WinError 3 « chemin introuvable » alors qu'il est bien là. Corrigé par les chemins étendus \?\.
Un seul fichier illisible tuait tout l'inventaire. Inacceptable sur 16 616 fichiers : l'incident est désormais consigné dans la ligne (ILLISIBLE : …) et le parcours continue.
Crash d'encodage à l'affichage. Une cédille combinante (U+0327) dans un nom fait lever UnicodeEncodeError sur une console cp1252 — le calcul était bon, c'est le print qui tombait, à 410 fichiers sur 619. sys.stdout.reconfigure(errors="replace").
⚠⚠ Signatures d'outil préférées au nom de fichier. Le plus grave. 342 des 487 PDF portaient une signature dans leur DocInfo : PDF Reducer Demo version 203 fois, ~1 (reste de nom 8.3) 139 fois. Saveurs Americaines Christine Fleurent.pdf se voyait donc attribuer le titre ~1 — une métadonnée pourrie préférée à un nom de fichier excellent. Deux garde-fous : une liste noire, et surtout une règle générale — un titre d'ouvrage ne se répète pas à l'identique dans cinq fichiers différents, qui rattrapera les signatures inconnues.
SaveursAmericainesChristineFleurentGenesedelacuisineQuebecoise- Anthony Bourdain.epub). Titres corrompus ou tronqués à la source — vérifié sur les octets, le décodeur n'est pas en cause :
/Title (orkaises inratables)Recettes New-yorkaises inratables.pdf/Title <feff005100750000006200650063>éQu\x00becDeux règles générales : rejet de toute valeur contenant un octet de contrôle, et rejet d'un titre embarqué inclus en plein mot dans celuicopié du nom de fichier.fichier La seconde» ne sevise déclencheque pasles blocs sans espace (SaveursAmericainesChristineFleurent).
Auteur» -alors Titreque Titrenote « à renommer avant l'ajout ».New-Yorkaises coupé en deux. Je découpais sur un tiret sans espaces — un mot composé n'est pas un séparateur. D'où l'auteur « Recettes New » pour le titre « Yorkaises inratables ».
Deux règles nouvelles, qui valent pour tout le fonds
Les noms d'appareil ne sont plus interrogés. IMG 3940, DSC01234, Page 12 : 142 des 557 livres à résoudre, soit un quart des requêtes vouées à l'échec. Ils sortent en a_resoudre=non. Le filtre exige un préfixe d'appareil : Cuisine 1900 et Menus 2015 restent des livres.
⚠ Sans auteur pour corroborer,auteur, un titre exactement identique ne prouve rien. BeaucoupSignal 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 WrapsWhoopiesLe signal qui a mis la puce à l'oreille : zéro « à relire » sur les 206 premiers résultats, tout étant soit pré-coché soit vide. Une distribution aussi tranchée
\\NASMAISON\foxy n'est sauvegarde connue. Vrai des 16 616 fichiers comme de la bibliothèque Calibre.
Historique
--reclasser2026-09-04 inventaire_livres.py resoudre_livres.py), lot Cuisine Géo : decision%).
propositions.csvCorrection du
2026-09-05 — les CSV suivent l'ordre du Signaléplus parle Julien après la première relecture réellescore : « c'est une immense perte de temps de rechercher les livres alors qu'ils sont tous mélangés ». Défaut de conception, corrigé.
propositions.csv était trié par score décroissant. Sur 619 livres et 80 rayons, cela éparpillait les livres d'un même dossier sur toute la longueur du fichier. Or on ne vérifie pas un ISBN isolément, on le vérifie en voyant ses voisins d'étagère : dans un rayon « Origine Asie/Chine », l'œil corrige seul ce qu'un score ne voit pas. Le score classe bien la confiance, il ne classe pas le travail.
Les deux CSV sont désormais rangés dossier par dossier, dans l'ordre de l'explorateur, avec une ligne d'intitulé et un compte avant chaque rayon :
=== Origine Amerique Caraibes/Amérique du Nord/Canada === (8)
dossier--tri score2026-09-20 --reclasserrenseigner.py etat.csvlecture par id⚠ Les lignes d'intitulé portent un id VIDE. C'est le seul marqueur qui permette aux relectures (--reprendre, --reclasser, l'étape 2) de les distinguer d'un livre et de les sauter. Ne jamais leur donner d'identifiant — sinon elles seraient interrogées comme des ouvrages.
⚠ Piège rencontré en appliquant le correctif : create table if not exists ne migre pas une base existante. L'ajout de la colonne dossier a fait échouer l'insertion sur livres.sqlite (table livres has no column named dossier). La table est désormais recréée à chaque inventaire — son contenu était de toute façon reconstruit intégralement.
Résultat sur le lot Cuisine : 619 livres répartis en 80 rayons.