lilypond-user-fr
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[HS] script bash pour attacher les sources aux pdfs


From: Vincent Gay
Subject: [HS] script bash pour attacher les sources aux pdfs
Date: Sun, 20 Dec 2020 18:46:47 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.6.0

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/

Attachment: OpenPGP_signature
Description: OpenPGP digital signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]