• [^] # Re: Amusant !

    Posté par . En réponse au journal Mini shell script pour optimiser des images pour une liseuse. Évalué à 4.

    Et donc, je me réponds, et je vais avoir droit à la geekscotte :p

    C'est sale, c'est pas fini, mais ça fait le taff :p

    #!/bin/sh
    ##### manga_to_epub.sh
    # Ce script convertit un répertoire contenant des images d'un scantrad de
    # manga en epub utilisable sur un reader Sony TRS-P2
    # Il prend en argument le chemin vers le répertoire contenant le "chapitre"
    # qui devra être traité.
    # Le chemin devra se présenter sous la forme : /bla/bla/nom_de_la_série/
    # où se trouve un répertoire par chapitre
    ################################################################################
    # Vérification des arguments donnés au script #
    ################################################################################
    # Test de la présence de l'argument chemin
    if [[ X1ドル = X ]]
     then
    echo "Chemin vers le chapitre manquant" && exit 1
     else CHEMIN=1ドル
    fi
    # Test de la presence du chemin
    if [[ ! -d "${CHEMIN}" ]]
     then
    echo "Chemin inexistant" && exit 1
    fi
    ################################################################################
    # Déclaration des fonctions #
    ################################################################################
    # Test de la présence de zip
    f_test_zip ()
    {
    which zip > /dev/null 2>&1
    if [[ $? != 0 ]]
     then
    echo "L'utilitaire zip est introuvable. Merci de l'installer" && exit 1
     else
    ZIP="zip -9 -r -q"
    fi
    }
    # Test de la présence de ebook-convert
    f_test_ebookconvert ()
    {
    which ebook-convert > /dev/null 2>&1
    if [[ $? != 0 ]]
     then
    echo "L'utilitaire ebook-convert est introuvable. Merci d'installer calibre" && exit 1
    fi
    }
    # Récupération des métadonnées
    # Le sed goret au milieu permet de transformer les ' en ’ pour ne pas exploser la ligne de commande générée pour ebook-convert
    f_metadatas ()
    {
    if [[ -f "${CHEMIN}"/.chapt_meta ]]
     then
    echo "Informations sur le volume déjà présentes"
     else
    echo "Nom des auteurs"
     read AUTEURS
     echo "Nom de l'album"
     read ALBUM
     echo "Nom de la série"
     read SERIE
     echo "AUTEURS="${AUTEURS}"" >> "${CHEMIN}"/.chapt_meta
     echo "ALBUM="${ALBUM}"" >> "${CHEMIN}"/.chapt_meta
     echo "SERIE="${SERIE}"" >> "${CHEMIN}"/.chapt_meta
     sed -i -e 's/\x27/’/g' "${CHEMIN}"/.chapt_meta
    fi
    }
    # Génération du fichier de traitement des chapitres.
    f_chapitres ()
    {
    echo "Génération de la liste des chapitres à traiter"
    cd "${CHEMIN}"
    touch .chapt_old
    find . -type d | sed -e '1d' -e 's/\.\///g' | sort > .chapt_all
    diff -n .chapt_old .chapt_all | sed -e'1d' > .chapt_new
    if [ ! -s .chapt_new ](http://fr.wikipedia.org/wiki/ ! -s .chapt_new "Définition Wikipédia")
     then echo "Pas de nouveaux chapitres à traiter" && exit 0
    fi
    }
    # Compression des répertoires de chapitres
    f_compress ()
    {
    echo "Compression du chapitre ${chapter}"
    ${ZIP} "${chapter}".cbz "${chapter}";
    if [[ $? != 0 ]]
     then echo "Problème dans la compression du répertoire" && exit 1
    fi
    echo "${chapter}".cbz:"${chapter}" >> comics.txt
    }
    # Création du .cbc
    f_collection ()
    {
    echo "Création de l'archive"
    ${ZIP} `basename "${CHEMIN}"`.cbc comics.txt *.cbz
    if [[ $? != 0 ]]
     then echo "Problème dans la création de l'archive" && exit 1
    fi
    }
    # Création de l'ebook à partir des fichiers générés et des métadonnées
    f_epubification ()
    {
    echo "Création de l'ebook. Veuillez patienter"
    auteurs=`grep AUTEURS .chapt_meta | cut -d"=" -f2`
    album=`grep ALBUM .chapt_meta | cut -d"=" -f2`
    serie=`grep SERIE .chapt_meta | cut -d"=" -f2`
    ebook-convert `basename "${CHEMIN}"`.cbc `basename "${CHEMIN}"`.epub --output-profile sony --keep-aspect-ratio --right2left --dont-grayscale --no-process --no-sort --no-default-epub-cover --authors \""${auteurs}"\" --series \""${serie}"\" --title \""${album}"\" > /dev/null 2>&1;
    if [[ $? != 0 ]]
     then echo "Problème dans la génération de l'epub" && exit 1
    fi
    }
    # Nettoyage des chapitres
    f_nettoyage ()
    {
    echo "Nettoyage des fichiers temporaires"
    rm -f *.cbz *.cbc comics.txt
    }
    ################################################################################
    # Test de présence des outils nécessaires #
    ################################################################################
    # Test de la présence de zip
    f_test_zip
    # Test de la présence de ebook-convert
    f_test_ebookconvert
    ################################################################################
    # Traitements sur les fichiers #
    ################################################################################
    echo "Début de la création de l'ebook"
    f_metadatas
    f_chapitres
    while read chapter
     do
    f_compress
    done < .chapt_new
    f_collection
    f_epubification
    f_nettoyage
    mv .chapt_all .chapt_old
    echo "Votre ebook est créé"
    
    

    cd /pub && more beer