Des scripts Bash que j’ai développé moi-même, en partant du script d’une connaissance qui permettait d’avoir des images à la bonne définition (celle de la liseuse), au format PNG, avec uniquement les 16 niveaux de gris supportés par les écrans e-ink.
Selon cette connaissance, ImageMagick donne un meilleur rendu que de laisser la liseuse s’occupe du redimensionnement et du tramage des images.
Grosso modo, j’ai repris les commandes ImageMagick utilisées dans ce script, quelque peu modifiées pour coller à ce que je voulais et j’ai ajouté « quelques » lignes pour quoi générer un fichier EPUB valide avec les métadonnées que j’ai envie d’avoir (trois fois rien, juste un petit millier de ligne en plus
il y a sans doute moyen de faire mieux, mais je débutais à l'époque et j'ignorais et ignore toujours comment utiliser des templates avec un script Bash, donc tout texte nécessaire est dans le script).
Je me souviens plus si c’était dans le script d’origine, mais je rajoute une rotation à 90° des images doubles, en plus de les redimensionner, comme ça j’ai juste à tourner la liseuse pour les voir, pas besoin de bricoler avec le gyroscope (je lis allongé sur le côté, donc il est totalement inutile)
Autre avantage, si la définition des images d’origine est supérieure à celle de la liseuse, ça permet généralement d’avoir des images plus légères. Si elles ont une définition moindre, par contre, ça peut produire l’effet inverse (ça dépend de la complexité des images dans les deux cas)
Pour donner un exemple : tous les tomes de Dream Team pèsent autour de 11 Go dans la version éditeur. Après passage à la moulinette de mon script, l’ensemble pèse autour de 5,5 Go (les gains ne sont pas toujours aussi extrêmes attention). Je n'ai pas passé tous les tomes dans KCC, mais sur quelques tests, KCC était plus lourd (forcément, c'est du JPG au lieu d'avoir du PNG 16 niveaux de gris)
Quelques défauts à signaler :
– le zoom, on oublie : ça marche toujours, mais ça n'a pas grand intérêt alors que toute l'information disponible est déjà affichée par la liseuse…
– par rapport à KCC, mon script ne rogne pas les marges autour de l’image (j’avais regardé si c’était possible, et il y a sans doute de quoi faire avec ImageMagick, mais avec une Elipsa, je m’en moque pas mal des marges blanches
)
– créer les images prend du temps, beaucoup de temps. Sur mon Mac M1 Pro, ça prend autour de 3 minutes pour un manga de taille classique et sur mon Core i5 8500T, ça prend 5 minutes (le script tourne dans un Windows Linux Subsystem à base de Debian), si votre machine est plus vieille, ça prendra encore plus de temps.
Ça fait ventiler à fond (même le M1 Pro si je lui demande de faire beaucoup de fichiers à la suite)
. En comparaison, KCC prendra 30 secondes pour faire la même chose
– KCC modifie les niveaux des images, mon script va au mieux faire un --autolevel qui ne changera pas toujours grand-chose
(il y a toujours UN fichu pixel noir qui met le cirque
KCC est parfois un peu agressif je trouve.
Pour ce dernier point, l’idéal, je pense, ça serait de faire ça avec un logiciel de retouche d’images, une fois quelques images corrigées, ça doit pouvoir s’automatiser, mais j’ai la flemme de le faire
(ça peut faire perdre en contraste quand les zones les plus sombres n'utilisent pas le noir pur, mais bon, la flemme quoi).
Voici tout le processus de A à Z :
1/ L’achat
2/ Le téléchargement, soit avec l’application Kobo, soit ADE (
), soit directement pour les livres sans DRM (j’utilise deux librairies, Kobo et 7switch, puisque certains éditeurs ne vendent pas sur la seconde).
3/ L’ajout dans Calibre, avec un déverrouillage des livres au passage (Calibre me sert à créer une sauvegarde de mes livres : la base de données Calibre est ensuite sauvegardée par Time Machine)
4/ Récupération des EPUB (avec un petit script utilisant la commande find pour récupérer les fichiers ajoutés depuis moins de 6h au répertoire de ma bibliothèque Calibre)
5/ Extraction des images des EPUB, avec un script qui lit les métadonnées de chaque fichier (grâce à Xidel) après avoir extrait toutes les données de chaque EPUB (via unzip). Le script récupère le titre de chaque livre et l’utilise comme base du répertoire. Et ensuite, il récupère les images en lisant la section Spine des fichiers EPUB (ça permet d’éviter toutes les petites manies des éditeurs, puisque cette section donne les pages dans le bon ordre – truc drôle, ce script est incapable de récupérer les images des fichiers EPUB que je génère, parce que j’utilise une possibilité non retenue par les éditeurs et que bon, je n'ai aucune raison d'extraire mes fichiers
). Pour faire bonne mesure, j’affiche le sens de lecture dans le terminal, comme ça je peux mettre le bon sens dans les métadonnées du fichier EPUB que je vais créer ensuite.
Ce script récupère aussi la table des matières, mais c'est rarement très utile… le plus souvent, c'est un truc comme
1=Cover
2=intro
3=Start
ou
2=Pour commencer…
Au top de l'utilité (j'ai déjà vu une table des matières qui listait toutes les pages… à l'envers
)
6/ Détection des pages doubles : je lis super rapidement (en essayant de ne pas me gâcher la découverte) chaque manga avec YACReader, qui permet de facilement enregistrement deux images collées l’une à l’autre. Ensuite, j’ai un script qui va utiliser ImageMagick pour créer pour de bon l’image de chaque double page repérée (ça permet d’avoir une meilleure qualité que ce que produit YacReader).
7/ Conversion des images, avec un script à part, qui ne gère que ça (je pourrais le faire aussi avec mon script qui crée les fichiers EPUB, mais je délègue cette conversion à un mini-PC avec un Core i5 8500T pour éviter de faire souffler mon Macbook Pro 14" ). Ce script utilise ImageMagick et c'est l'étape la plus longue (~ 5 minutes)
8/ En parallèle, je créé différents fichiers texte pour stocker les métadonnées (Nom du ou des artistes, titre / sous-titre de la série, date de sortie, langue, sens de lecture, dans un fichier métadonnees.txt, ISBN dans un fichier isbn.txt, résumés dans un fichier resume.txt - je suis au top de l'originalité
- et un fichier par tome pour la table des matières quand il y en a une).
Il doit y avoir moyen de tout regrouper dans un seul et unique fichier JSON pour la série, mais les fichiers texte ont l’avantage d’être simple à manipuler, et, ce script qui créé des EPUB est mon premier vrai projet en Bash après avoir regardé un Mooc sur le sujet : bref, simple, c'est bien
J’utilise deux scripts différents pour tout générer : un qui m'aide générer les métadonnées généralistes, un qui m'aide pour les tables des matières (j'avais espéré que l'OCR permettrait de gagner du temps, mais bon…). Après, beaucoup sont saisies à la main parce que je ne les saisis pas toujours si je suis pressé de lire
(mais le script qui créé les EPUB peut remplacer la plupart des métadonnées manquantes par des métadonnées bidon).
9/ La création des fichiers EPUB, avec mon script le plus gros (autour de 1200-1300 lignes, commentaires inclus). J’en parlais un peu avant, mais je génère des fichiers EPUB avec les images intégrées dans la section Spine.
Si vous voulez voir de quoi je parle, le plus simple est d’ouvrir, dans Sigil, le fichier Page Blanche issu des exemples officiels : il y a une version proche de ce que font les éditeurs dans leur fichier, et la seconde est celle que j’ai retenue (techniquement, mon script sait faire les deux, mais c’est plus rapide avec cette seconde méthode).
http://idpf.github.io/epub3-samples/30/samples.html
Le script utilise unzip pour créer l’archive comme il faut (cf un précédent message) et y ajouter tous les fichiers nécessaires, EpubCheck pour vérifier que tout est 100 % valide (c’est bien pratique pour détecter les ratés dans les métadonnées) et Kepubify pour créer automatiquement les fichiers kepub (même si honnêtement, je n’ai pas l’impression que ça change tant que ça, vu le peu de code dans mes fichiers).
Le script fait le ménage dans les caractères spéciaux, pour éviter les ratés, que ce soit dans le fichier EPUB ou dans le nom du fichier EPUB (dans le nom, j’y vais comme un barbare : tous les caractères spéciaux sont remplacés par des _
).
10/ Transférer les fichiers vers l’Elipsa quand elle est branchée en USB (je réfléchis à faire un script haha) puis aller les lire.
Dans les petits trucs hors scripts :
- NickelSeries pour gérer les séries directement sur la liseuse (je n'utilise pas Calibre pour les transférer, et de toute façon, Calibre fait la tronche quand il ouvre mes fichiers EPUB…)
- j'utilise le mode Sombre, ça permet de bien délimiter la limite des pages.
Je pense que je n'ai rien oublié (merci le diagramme gribouillée sur une feuille pendant cette formation où je m'ennuie…).
Initialement, je pensais refaire mon script pour faire tout, à savoir extraire les images, les convertir puis recréer les fichiers EPUB à la volée, en ayant récupéré les métadonnées depuis le fichier officiel, mais chez certains éditeurs, c'est vraiment crados, les métadonnées officielles… et surtout, c'est un peu plus simple d'avoir des scripts plus spécialisés, à la fois pour les modifier, mais aussi pour débusquer les erreurs (le truc que j'aimerais réussir à faire, c'est me créer une bibliothèque de fonctions communes à tous mes scripts, histoire de ne pas avoir plusieurs versions de la même fonction suivant l'âge du script
).