[HS] script bash pour attacher les sources aux pdfs

classic Classique list Liste threaded Arborescence
1 message Options
Répondre | Arborescence
Ouvrir ce message en vue arborescente
|

[HS] script bash pour attacher les sources aux pdfs

Vincent Gay
Bonsoir amis lilypondiens,

Grace à une remarque de Valentin lors du premier lily café virtuel j'attache maintenant mes sources (partition.ly et fichiers inclus) sous forme de pièces jointes au pdfs générés, Par contre je n'envisageais pas de reprendre les centaines de partitions antérieures, sauf éventuellement via un petit script bash. Le temps grincheux de ce dimanche m'a convaincu de me mettre au boulot et voici le résultat,  si ça peux servir...

Bonnes fêtes et portez vous bien

dépendances : ghostscript et pdftk


#!/bin/bash
oldIFS=$IFS     # sauvegarde du séparateur de champ
IFS=$'\n'       # nouveau séparateur de champ, le caractère fin de ligne

myMusicRep=/home/vincent/Nextcloud/Musique/MyRealBook  ### ma musique est là !
include="/home/vincent/Nextcloud/Musique/Lilypond/Inclusions/"

#décommenter la ligne suivante pour sauvegarder les fichier modifiés
#backup="Oui"


### indexage des fichiers sources
cd $myMusicRep
find -iname "*.ly" | sort > /tmp/mrb.lst  ### liste tous les fichiers sources dans un fichier temporaire

for line in $(</tmp/mrb.lst)          ### pour chaque fichier.ly
do
   
    ### liste des fichiers pdf généré
    racine=$(echo ${line%.ly})
    echo $line
    pdftab=($(grep "define output-suffix" $line))     ### j'utilise systématiquement les books
    for suffix in  ${pdftab[*]}
    do
        pdf=$racine"-"$(echo $suffix | cut -d "\"" -f2)".pdf"
        if [ ! -f $pdf ]; then
            echo $pdf >> \tmp\mrbPdfNonTrouvés
        fi
        embededlist=$(pdfdetach -list $pdf) ### liste des pièces jointes déjà présentes
        embednumber=$(echo ${embededlist:0:1}) ### nobre de pièces jointes
        if [ $embednumber != 5 ]; then    ### s'il y a 5 pieces jointes, c'est desrécentes, rien à faire. Sinon traitement
            gs -dBATCH -DNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=out.pdf  $pdf ### nettoyage et création d'un fichier temporaire
            if [ ! -z $backup ]; then cp $pdf $pdf".sos"; fi   ### sauvegarde éventuelle du pdf originel
            ### attachement des piècesjointes
            pdftk out.pdf attach_files $line $include"AdditionalFunctions.ly" $include"jazzchords.ily" $include"VariablesJazz.ly" $include"lilyjazz.ily" output $pdf
        fi
    done   
done



-- 
Vincent Gay
Envoyé depuis mon saxo-phone :)
http://blog.vintherine.org/ - http://photos.vintherine.org/

OpenPGP_signature (855 bytes) Download Attachment