Le blog de Genma
Vous êtes ici : Accueil » Lifehacking » Scan2Epub.sh où comment lire des Scantrad en Epub

Scan2Epub.sh où comment lire des Scantrad en Epub

D 16 octobre 2017     H 09:00     A Genma     C 2 messages   Flattr cet article Logo Tipee

TAGS : Bookeen Lifehacking Planet Libre

Scantrad

Un scanlation, parfois aussi nommé scanslation, scantrad ou mangascan, fait référence à un manga qui a été numérisé (scanné) et traduit par des fans depuis sa langue originale (habituellement le japonais ou le coréen) vers une autre. Définition.

Dit autrement, le scantrad est au manga ce que les fansub sont aux anime.

Mon besoin

Comme je l’évoquais dans mes articles Liseuse Booken et BD, Comics, Manga et Ma liseuse Bookeen et les mangas, il m’arrive de lire des versions scannées (les fameux scantrad) de manga que je possède en version papier ou non publié en France.

Jusqu’à présent, je copiais les dossiers contenant les images sur la liseuse Bookeen. Inconvénient, ce sont des images et donc, quand la liseuse se met en pause, on perd là où on est. Si on lit un epub, et qu’on retourne dans le dossier image, on recommence depuis la première image, c’est tout sauf pratique.

La solution que je voyais et que j’avais en projet depuis longtemps et de générer des epubs regroupant ces images dans un seul et même epub.

Framablog et l’interview de Nylnook

Sur le Framablog, il y a une l’interview de Nylnook, le gentil lutin écolo-dessinateur, dans laquelle Nylnook parle de tout son processus de création de bandes-dessinées, jusqu’à la généreration automatisée de bandes-dessinées au format électronique, en les exportant sous différents formats. Pour ça, il a fait un tutoriel long et complet : Faire une BD de A à Z avec des logiciels libres. Pour l’export en différent format, il a fait un script très complet et contient pas mal de choses. Et surtout ça m’a donné l’astuce sur comment faire des epub facilement ! Donc un grand merci à Nylnook pour ça.

La réponse à mon besoin - Scan2Epub.sh

Prérequis
- Connaitre le shell ;)
- Avoir Calibre d’installer (le logiciel qui permet de gérer sa bibliothèque d’epub mais aussi de faire des conversions)

J’ai donc extrait le bout de code (la méthode) du script et je l’ai rapidement adapté à ce voulais faire / à mes besoins et voilà ce que ça donne.

J’ai un dossier Ranma qui contient l’arborescence suivante

Ranma
   ├── Volume1
   │   ├── Chapitre1
   │   │   ├── Ranma_1-2_001-001-000-cover.jpg
   │   │   ├── Ranma_1-2_001-001-001.png
   │   │   ├── Ranma_1-2_001-001-002.png
   │   │   ├── ...
   │   ├── Chapitre2
   │   ├── Chapitre3
   │   └── ...
   ├── Volume2
   │   ├── Chapitre1
   │   └── ...
   └── ...

C’est un dossier avec des sous-dossiers contenant donc les fameux scans du manga Ranma.

Remarque les fichiers ont une nomenclature particulière à savoir Ranma_1-2_NumeroDuVolume-NumeroDuChapitre-NumeroDePage.png Exemple Ranma_1-2_001-001-002.png

J’ai crée un script rapidement en m’inspirant de celui de Nylnook :

#!/bin/bash

# Scan2Epub.sh

creator="Rumiko Takahashi"
title="Ranma 1/2"
ebookIsbn="123456789"
pubDate=`date`
language="Japonais"
tags="Manga, Ranma, Takahashi"
description="Manga de Ranma 1/2"

function convertToeBooks {
        for Volume in `ls $path`
        do
                nomManga=`echo Ranma_1_2_$Volume`
                echo "nomManga :" $nomManga
                # On met le numéro de volume en numéro de série, sinon on a des conflits dans Calibre à l'import
                # des volumes dans la bilbliothèque
                series=`echo $Volume |cut -c7-7`
                seriesindex=`echo $Volume |cut -c7-7`
                # On récupère le fichier de couverture dans le dossier Chapitre 1
                # Exemple de nom de couverture : Ranma_1-2_001-001-000-cover.jpg
                cover=`find -name *cover.jpg | grep \$Volume`
                cd ./Ranma/$Volume
                zip ../$nomManga.cbz `find -name *.png |sort`
                cd ../..
                # La fonction ebook-convert fait partie de Calibre
                ebook-convert ./Ranma/$nomManga.cbz ./Ranma/$nomManga.epub \
                --authors "$creator"  \
                --publisher "$creator"  \
                --title "$title"  \
                --isbn "$ebookIsbn"  \
                --pubdate "$pubDate"  \
                --language "$language"  \
                --series "$series"  \
                --series-index "$seriesindex"  \
                --tags "$tags"  \
                --comments "$description"  \
                --no-default-epub-cover --dont-grayscale --dont-normalize \
                --keep-aspect-ratio --output-profile tablet --no-process \
                --disable-trim --dont-add-comic-pages-to-toc --wide --extra-css "img{width:100%}"  \
                --cover $cover  \
                --no-svg-cover --remove-first-image
        done
}
# Appel de la méthode
convertToeBooks

Ca mouline un peu, ça sollicite pas mal le processeur pendant une dizaine de secondes et on a alors dans le dossier Ranma

└── Ranma
   ├── Ranma_1_2_Volume1.cbz
   ├── Ranma_1_2_Volume1.epub
   ├── Ranma_1_2_Volume2.cbz
   ├── Ranma_1_2_Volume2.epub
   ├── ...

Les fichiers .cbz sont des zip contenant les images, un vieux format utilisé à l’époque pour lire des bandes dessinées électroniques. Mais surtout, je retrouve des fichiers .epub ! Chaque fichier comme Ranma_1_2_Volume1.epub est à transférer ensuite sur la liseuse et est lisible comme un Ebook, avec temps de lecture, reprise à la bonne page etc. J’ai donc réussi mon mini-projet :)

Amélioration et v2

Quand je lance le script, le processus utilise un seul coeur, mais à 100% pendant quelques minutes, ce qui amène le ventilateur à tourner et faire du bruuit. J’ai un SSD, l’écriture disque n’est pas un facteur limitant, le processeur est un corei5, j’ai de la RAM. Donc je pourrais optimiser tout ça.

Le plus simple est de lancer 4 processus en paralèlle. Ma première idée est de faire un truc du genre

début de la boucle
appelDeFonction(i) &
appelDeFonction(i+1) &
appelDeFonction(i+2) &
appelDeFonction(i+3) &
retour en haut de la boucle

Ca commence à faire compliquer pour un simple script Shell, je pense que je vais repartir de Zéro et probablement faire ça via du Python pour avoir un language plus évolué.

Sinon, en autre fonctionnalité, il faudra que je rajoute la ligne qui va bien qui permettra, une fois les epub générés, d’en faire une copie automatique sur ma liseuse au montage de celle-ci.

 Les Tags - mots clefs de ce article

logo clef

 Vous aimez cet article? Soutenez le blog et partagez-le ;-)

Logo Tipee Flattr icon  Facebook icon  Twitter icon  Diapora icon   Licence Creative Commons

2 Messages

Un message, un commentaire ?
modération a priori

Ce forum est modéré a priori : votre contribution n’apparaîtra qu’après avoir été validée par un administrateur du site.

Qui êtes-vous ?
Votre message

Ce formulaire accepte les raccourcis SPIP [->url] {{gras}} {italique} <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Conférences

Médiathèques vous recherchez un conférencier sur l’éducation populaire et l’hygiène numérique? Jetez un coup d’oeil à mon CV

Date des prochaines conférences?
Cliquer ici

Rechercher sur le blog

Liens

Logo Flattr Logo Gmail Logo Twitter
Logo RSS Logo Linkedin Logo GitHub
Logo Gitlab Logo Mastodon
Logo Diaspora

Soutenir ce blog?

Logo Tipee Logo Liberapay

Licence

Licence Creative Commons

Derniers articles

1.  Kimi no na wa - Your Name

2.  Conférence Du pseudonymat au pseudonyme

3.  Yunohost - Pourquoi les ports 80 et 25 sont ils toujours utilisés ?

4.  Lifehacking - Trois écrans : réel confort, luxe ou superflu ?

5.  Etre autodidacte

6.  Virtualbox comme outil dans le cadre de formations

7.  Yunohost, Virtualbox, Interfaces réseaux

8.  Lifehacking - TinyTask

9.  Lifehacking - Mes astuces pour faire ma veille ciblée

10.  Le blog kanjian.fr


Date de mise à jour :

Le 22 novembre 2017