Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".
Test de l'ISO d'Ubuntu francophone : nous avons besoin de testeurs pour la version francophone d'Ubuntu 14.04. Liens et informations ici.

Attention, une faille de sécurité dans bash a récemment été rapportée, il est recommandé de mettre à jour son système (plus de détails) *** mise à jour 12/10/2014 ***

#1 Le 28/01/2011, à 18:49

soupaloignon

MultiScript : Audio

Bonjour à tous,

Dans la même idée que "MultiScript : Fichiers photos" ( http://forum.ubuntu-fr.org/viewtopic.php?pid=3371321  ) je me suis bricolé pour des besoins personnels un script pour effectuer certaines actions sur des fichiers audio.

Je vous le laisse ici, si ça peut vous être utile. n'hésitez pas à faire des retours

Description rapide : Script permettant de renommer des fichier audio suivant plusieurs paramètres / Conversion de formats audio. Formats supportés : flac, ogg, wav, mp3

Utilisation : Se placer dans le répertoire contenant les fichiers audio à traiter, lancer le script. Inutile de sélectionner les fichiers, le script va travailler sur toutes les fichiers contenus dans le répertoire (et uniquement dans le répertoire, il n'est pas récursif)
Important : Ne travaillez pas dans des dossiers qui contiennent un mélange de fichiers avec ces différents formats audio, le script n'est pas prévu pour cela et vous auriez des erreurs.


Fonctionnalités (Testé sous Mint 9 (Lucid), Debian Squeeze):

Global : Renommera les fichiers avec un intitulé à saisir, suivi d'une incrémentation sur 2 chiffres (départ 01)
Changer la casse : transformera la casse de l'extension en minuscule\n
Rajouter un intitulé devant le nom du fichier : Le nom du fichier est conservé, un intitulé à saisir est rajouté devant
Rajouter un intitulé à la fin du nom du fichier : Le nom du fichier est conservé, un intitulé à saisir est rajouté derrière
Renommer en masse sur X chiffres : Renomme les fichiers (en gardant l'ordre initial) sur un nombre de X chiffres. X étant une valeur à saisir
Conversion : Convertir des formats audio. Les originaux sont préservés, un dossier est créé dans le répertoire en cours d'utilisation.
Travaillant nativement sur des extensions en minuscules, ce script changera automatiquement la casse des extensions s'il rencontre des majuscules dans les extensions des fichiers avant traitement.


Nouvelle version 0.2 : http://forum.ubuntu-fr.org/viewtopic.ph … 2#p4062742


#!/bin/bash

####################################################################################
#
# MultiScript : Audio
# Permet de travailler sur des fichiers audio : Conversion de formats / Renommage
#
# Dépendances :
# A voir ;)
#
# Version :
# 0.1 : 2011/01/28
#
# Utilisation :
# Se placer dans le répertoire contenant les fichiers audio à traiter, lancer le script.
# Inutile de sélectionner les fichiers, le script va travailler sur toutes les fichiers 
# contenus dans le répertoire (et uniquement dans le répertoire, il n'est pas récursif)
#
# Le script travaille en modifiant la casse des extensions des fichiers (majuscule en minuscule), c'est voulu
# si ce comportement ne vous convient pas, n'utilisez pas ce script, ou modifiez-le ;)
#
# Le fil de discussion sur le forum d'Ubuntu fr : 
# 
# L'historique du script :
# 
#
# Testé sous Mint 9 (Lucid)
#
# www.soupaloignon.net
####################################################################################


####################################################################################
###### Mettre tout le script dans une boucle #######################################

while [ "$fin_du_script" != "oui" ]
do
####################################################################################


####################################################################################
###### Variable(s) générale(s) #####################################################

# Titre des fenêtres zenity
title="MultiScript : Audio (V 0.1)"

####################################################################################


####################################################################################
###### Function(s) #################################################################

function Casse-Extension-Wav
{
    # Transforme l'extension en minuscules
ls -d *.WAV | sed 's/\(.*\).WAV$/mv "&" "\1.wav"/' | sh
}

function Casse-Extension-Mp3
{
    # Transforme l'extension en minuscules
ls -d *.MP3 | sed 's/\(.*\).MP3$/mv "&" "\1.mp3"/' | sh
}

function Casse-Extension-Flac
{
    # Transforme l'extension en minuscules
ls -d *.FLAC | sed 's/\(.*\).FLAC$/mv "&" "\1.flac"/' | sh
}

function Casse-Extension-Ogg
{
    # Transforme l'extension en minuscules
ls -d *.OGG | sed 's/\(.*\).OGG$/mv "&" "\1.ogg"/' | sh
}
####################################################################################



####################################################################################
###### Afficher le menu ############################################################
            
    menu=`zenity --width=750 --height=500 \
    --title "$title" --text="Choisir l'action à effectuer sur des fichiers : wav / mp3 / ogg / flac" --list --hide-column 1 --column "" --column "" \
    0 "QUITTER LE SCRIPT" \
    1 "" \
    2 "Global : Intitulé / 2 chiffres" \
    3 "Changer la casse de l'extension : WAV => wav / MP3 => mp3 etc" \
    31 "" \
    4 "Rajouter un intitulé devant le nom du fichier" \
    41 "Rajouter un intitulé à la fin du nom du fichier" \
    5 "Renommer en masse sur X chiffres au choix" \
    10 "" \
    11 "conversion : Ogg => Wav" \
    12 "conversion : Flac => Wav" \
    13 "conversion : Mp3 => Wav" \
    14 "conversion : Wav => Flac" \
    15 "conversion : Flac => ogg" \
    10 "" \
    20 "A LIRE" \     
    | sed 's/ max//g' `



# Pour quitter
    if [ "$menu" = 0 ] ; then
    fin_du_script="oui"
    fi 

# Vérifier qu'un choix a été fait
    if [ ! "$menu" ]; then
    zenity --error --title="Erreur" --text="Choisissez une action"
    fi
####################################################################################

####################################################################################
###### Global #######

# Choix du menu
if [ "$menu" = 2 ] ; then


TEXTE=$(zenity --entry --width=500 --height=150 --title="$title : Intitulé devant le nom de fichier" --entry-text="" --text="Entrez le nom à rajouter devant vos fichiers :")

# Eviter les problèmes avec des noms de fichiers comportants des espaces
IFS=$'\n'

let "indice=1"
for fichier in *.mp3 *.wav *.flac *.ogg
do
         if [ -f "$fichier" ]; then
            extension=${fichier##*.}
            echo "$fichier" "=>" "$indice.$extension"
            mv "$fichier" `printf "%0"2"d" $indice`".$extension"
            let "indice+=1"
        fi
done

for fichier in *.mp3 *.wav *.flac *.ogg
do 
rename 's/^/'$TEXTE'/' $fichier
done


fi
####################################################################################
   
####################################################################################
###### Changer la casse WAV et Mp3 ############################################################ 

# Choix du menu 
if [ "$menu" = 3 ] ; then 
 
# Function Transforme l'extension en minuscules
Casse-Extension-Wav
Casse-Extension-Mp3
Casse-Extension-Flac
Casse-Extension-Ogg

fi
####################################################################################

####################################################################################
###### Rajouter un intitulé devant le nom du fichier ############################### 

# Choix du menu 
if [ "$menu" = 4 ] ; then 

# Eviter les problemes avec des noms comportant des espaces 
IFS=$'\n'

# Function Transforme la casse et ou l'extension en jpg/png
#Casse-Extension

## Texte à rajouter devant le nom du fichier
TEXTE=$(zenity --entry --width=500 --height=150 --title="$title : Intitulé devant le nom de fichier" --entry-text="" --text="Entrez le nom à rajouter devant vos fichiers :")
         if [ "${PIPESTATUS[0]}" != "0" ]; then
           exit
         fi
# Boucle d'insertion

for fichier in *.mp3 *.wav *.flac *.ogg
do 
rename 's/^/'$TEXTE'/' $fichier
done



fi
####################################################################################


####################################################################################
###### Rajouter un intitulé à la fin du nom du fichier ############################### 

# Choix du menu 
if [ "$menu" = 41 ] ; then 

# Eviter les problemes avec des noms comportant des espaces 
IFS=$'\n'

# Function Transforme la casse et ou l'extension en jpg/png
# Casse-Extension

## Texte à rajouter à la fin du nom du fichier
TEXTEFIN=$(zenity --entry --width=500 --height=150 --title="$title : Intitulé à la fin du nom du fichier" --entry-text="" --text="Entrez l'intitulé à rajouter à la fin de chaque nom de fichier :")
         if [ "${PIPESTATUS[0]}" != "0" ]; then
           exit
         fi


for file in *.mp3 *.wav *.flac *.ogg
do
base=`basename $file`
mv $file  ${base%.*}$TEXTEFIN.${base##*.}
done


fi
####################################################################################


####################################################################################
###### Renomme en masse sur X chiffres #############################################
 
# Choix du menu   
if [ "$menu" = 5 ] ; then  

# Choix du nombre de caracteres
nombre=$(zenity --entry --width=500 --height=150 --title="$title : Nombre de chiffres" --entry-text="2" --text="Choisir sur quel nombre de chiffres seront renommés vos fichiers :" )


if [ "${PIPESTATUS[0]}" != "0" ]; then
           exit
         fi

# Function Transforme la casse et ou l'extension en jpg/png
Casse-Extension

# Boucle
let "indice=1"
for fichier in *.mp3 *.wav *.flac *.ogg
do
         if [ -f "$fichier" ]; then
            extension=${fichier##*.}
            echo "$fichier" "=>" "$indice.$extension"
            mv "$fichier" `printf "%0"$nombre"d" $indice`".$extension"
            let "indice+=1"
        fi
done

fi
####################################################################################


####################################################################################
###### conversion de formats           #############################################
####################################################################################

################################# Ogg/Wav

if [ $menu -eq 11 ]; then

for i in *.ogg; do 
   j="${i%.ogg}"
   sox "$j.ogg" "$j.wav"
   echo $j.ogg
done


mkdir wav
mv *.wav wav

zenity --info  --text="L'encodage en Wav est terminé"

fi

################################# flac/wav

if [ $menu -eq 12 ]; then

flac --decode *.flac

mkdir wav
mv *.wav wav

zenity --info  --text="L'encodage Flac => Wav est terminé"

fi


################################# mp3/wav
if [ $menu -eq 13 ]; then
for fichier in *.mp3; do
  lame --verbose --decode "$fichier" "${fichier/%.mp3/.wav}";
done

mkdir wav
mv *.wav wav

zenity --info  --text="L'encodage Mp3 => Wav est terminé"

fi

################################# Wav/flac
if [ $menu -eq 14 ]; then
flac --best *.wav

mkdir flac
mv *.flac flac

zenity --info  --text="L'encodage Wav => Flac est terminé"

fi

################################# Flac/Ogg
if [ $menu -eq 15 ]; then
oggenc -q9 *.flac

mkdir ogg
mv *.ogg ogg

zenity --info  --text="L'encodage Flac => Ogg est terminé"

fi




####################################################################################
###### A LIRE ######################################################################

# Choix du menu 
if [ "$menu" = 20 ] ; then  

zenity --info --title="$title : Informations" --text="J'ai fait ce script pour mon usage personnel. S'il peut vous être utile, tant mieux.\n\nUtilisation :\n\nSe placer dans le répertoire contenant les fichiers audio à traiter, lancer le script. Inutile de sélectionner les fichiers, le script va travailler sur toutes les fichiers contenus dans le répertoire (et uniquement dans le répertoire, il n'est pas récursif)\n\nCe script travaille uniquement sur des fichiers aux formats : flac, ogg, wav, mp3\n\nImportant : Ne travaillez pas dans des dossiers qui contiennent un mélange de fichiers avec différents formats, le script n'est pas prévu pour cela et vous auriez des erreurs.\n\n\nFonctionnalités (Testé uniquement sous Mint 9 (Lucid)):\n
Global : Renommera les fichiers avec un intitulé à saisir, suivi d'une incrémentation sur 2 chiffres (départ 01)\n\nChanger la casse : transformera la casse de l'extension en minuscule\n
Rajouter un intitulé devant le nom du fichier : Le nom du fichier est conservé, un intitulé à saisir est rajouté devant\n\nRajouter un intitulé à la fin du nom du fichier : Le nom du fichier est conservé, un intitulé à saisir est rajouté derrière\n\nRenommer en masse sur X chiffres : Renomme les fichiers (en gardant l'ordre initial) sur un nombre de X chiffres. X étant une valeur à saisir\n\nTravaillant nativement sur des extensions en minuscules, ce script changera automatiquement la casse des extensions s'il rencontre des majuscules dans les extensions des fichiers à traiter.\n\nconversion : Convertir les formats audio. Les originaux sont préservés, un dossier est créé dans le repertoire en cours d'utilisation.

www.soupaloignon.net"

fi
########################################################################


done 
exit 0

Dernière modification par soupaloignon (Le 01/04/2011, à 09:03)


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne

#2 Le 28/01/2011, à 20:55

b52

Re : MultiScript : Audio

Je viens de placer ton script [ soupaloignon.sh ] dans mon [ $HOME/.gnome2/nautilus-scripts/ ] pour pouvoir l'utiliser depuis nautilus et ... pour une version 0.1, ça fonctionne sans problème.
Chapeau  cool

Dernière modification par b52 (Le 28/01/2011, à 21:01)


Les grands bonheurs viennent du ciel, ...
Xcfa, Linux on the root, Normalisation, Ogg Vorbis

Hors ligne

#3 Le 28/01/2011, à 21:17

soupaloignon

Re : MultiScript : Audio

Merci Claude pour ton test... et pour ton retour wink Si tu as des idées d'amélioration du code existant, n'hésite pas.
Tu as testé le script avec quel distribution ? (que je puisse l'indiquer dans la "doc")

La version 0.2 est sur les rails. En fait elle est déjà en utilisation sur ma machine. Elle rajoute la gravure (sans fronted) des fichiers wav du répertoire courant


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne

#4 Le 28/01/2011, à 21:35

b52

Re : MultiScript : Audio

Je suis sous Debian Squeeze très fraîchement installée.

Juste deux trucs:

1) Un test du contenu de la variable [ $menu ] est apparemment nécessaire du genre:

if [ -n "$menu" ]
# Teste si un argument est non vide.
then
   echo "menu NON VIDE"
else
   echo "menu EST VIDE="
fi

Histoire d'éviter une erreur comme:
            $ ./soupaloignon.sh: line 270: [: -eq : opérateur unaire attendu

2) La fenêtre d'action génère une erreur suite a un click sur Annule :
            $ ./soupaloignon.sh: command substitution: line 102: Erreur de syntaxe près du symbole inattendu « | »
            $ ./soupaloignon.sh: command substitution: line 102: `    | sed 's/ max//g' '

Je ne sais pas à quoi sert la variable [ $max ] et j'ai donc modifié (chez moi) le menu ainsi :

    menu=`zenity --width=750 --height=500 \
    --title "$title" --text="Choisir l'action à effectuer sur des fichiers : wav / mp3 / ogg / flac" --list --hide-column 1 --column "" --column "" \
    0 "QUITTER LE SCRIPT" \
    1 "" \
    2 "Global : Intitulé / 2 chiffres" \
    3 "Changer la casse de l'extension : WAV => wav / MP3 => mp3 etc" \
    31 "" \
    4 "Rajouter un intitulé devant le nom du fichier" \
    41 "Rajouter un intitulé à la fin du nom du fichier" \
    5 "Renommer en masse sur X chiffres au choix" \
    10 "" \
    11 "conversion : Ogg => Wav" \
    12 "conversion : Flac => Wav" \
    13 "conversion : Mp3 => Wav" \
    14 "conversion : Wav => Flac" \
    15 "conversion : Flac => ogg" \
    10 "" \
    20 "A LIRE"`

PS:
Au fait, ta page est inaccessible  hmm

Dernière modification par b52 (Le 28/01/2011, à 21:37)


Les grands bonheurs viennent du ciel, ...
Xcfa, Linux on the root, Normalisation, Ogg Vorbis

Hors ligne

#5 Le 29/01/2011, à 03:52

soupaloignon

Re : MultiScript : Audio

b52 a écrit :

Je suis sous Debian Squeeze très fraîchement installée.

Ok, je vais le rajouter dans les distrib testées

b52 a écrit :

Juste deux trucs:
1) Un test du contenu de la variable [ $menu ] est apparemment nécessaire du genre:
2) La fenêtre d'action génère une erreur suite a un click sur Annule :
Je ne sais pas à quoi sert la variable [ $max ] et j'ai donc modifié (chez moi) le menu ainsi :

Vu l'heure... je regarderai ça pendant le we. En tout cas merci pour le retour smile

b52 a écrit :

PS:
Au fait, ta page est inaccessible  hmm

Mouarfff...c'est de ma faute,  j'ai zappé la date de renouvellement du nom de domaine. Je m'en suis aperçu il y a quelques jours, et normalement tout devrait revenir à la normale prochainement


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne

#6 Le 01/02/2011, à 01:03

soupaloignon

Re : MultiScript : Audio

Salut Claude,

Désolé pour le retard de réponse, mais cela a été un we travaux/platre... big_smile

b52 a écrit :

Je ne sais pas à quoi sert la variable [ $max ]

Ce menu date de pas mal de temps, je l'utilise pour un autre script. Je me souviens absolument plus pourquoi j'avais mis ça à l'époque, même s'il devait y avoir une raison. Ceci dit cela fonctionne bien sans cela effectivement, je l'ai donc enlevé pour la prochaine version.


b52 a écrit :

La fenêtre d'action génère une erreur suite a un click sur Annuler

Oui, je n'ai jamais réussi à le faire fonctionner. En même temps je n'ai pas trop cherché car pour fermer le script il y a la 1ere ligne "Quitter le script". Mais ceci dit, si tu as une idée la dessus, je suis preneur


b52 a écrit :

Un test du contenu de la variable [ $menu ] est apparemment nécessaire du genre:

if [ -n "$menu" ]
# Teste si un argument est non vide.
then
   echo "menu NON VIDE"
else
   echo "menu EST VIDE="
fi

Là je ne vois pas de quoi tu veux parler. Tu proposes de tester si un choix a été fait lorsque l'on clique sur le bouton Valider ? Parce que si c'est ça, et sous réserve que j'ai bien compris ce que tu disais, cela existe déjà :

# Vérifier qu'un choix a été fait
    if [ ! "$menu" ]; then
    zenity --error --title="Erreur" --text="Choisissez une action"
    fi

Dernière modification par soupaloignon (Le 01/02/2011, à 01:09)


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne

#7 Le 01/02/2011, à 18:00

b52

Re : MultiScript : Audio

Dans ce morceau de code:

# Vérifier qu'un choix a été fait
    if [ ! "$menu" ]; then
    zenity --error --title="Erreur" --text="Choisissez une action"
    fi

Il manque les conditions :

# Si le menu est vide
    if [ ! -n "$menu" ]; then
        zenity --error --title="Erreur" --text="Choisissez une action"
        echo "menu EST VIDE"
# Sinon
    elif [ $menu -eq "11" ]; then
        etc ...

pour ne pas générer ce type d'erreur:
   ./soupaloignon.sh: line 270: [: -eq : opérateur unaire attendu
   ./soupaloignon.sh: line 288: [: -eq : opérateur unaire attendu
         ...

Mais ce code n'a aucune incidence sur le fonctionnement  wink

PS:
Cette forme génère une erreur:

if [ $menu -eq 11 ]; then

et cette forme non:

if [ "$menu" = 11 ]; then

Dernière modification par b52 (Le 01/02/2011, à 18:13)


Les grands bonheurs viennent du ciel, ...
Xcfa, Linux on the root, Normalisation, Ogg Vorbis

Hors ligne

#8 Le 28/02/2011, à 21:59

b52

Re : MultiScript : Audio

Toc toc toc ...
Tu as abandonné le projet  roll


Les grands bonheurs viennent du ciel, ...
Xcfa, Linux on the root, Normalisation, Ogg Vorbis

Hors ligne

#9 Le 01/03/2011, à 03:51

soupaloignon

Re : MultiScript : Audio

smile
Non, rassure toi, je suis vraiment pas du genre à abandonner un projet que j'initie (ni un projet auquel j'ai décidé de participer).... C'est juste qu'avec ma compagne on est en plein travaux d'aménagement de maison, et qu'il faut faire des priorités. Car malheureusement le temps n'est pas extensible. Mais je suis toujours dessus, même si cela ne se traduit pas forcément par des interventions, en tout cas sur ce post. Mais il y a d'autres post, en rapport avec ce script :  http://forum.ubuntu-fr.org/viewtopic.php?id=444784

L'idée c'est de poster une prochaine version du script qui tienne compte des remarques que tu as faite, et qui règle le problème évoqué dans le post cité précédemment.

Merci en tout cas de l'intérêt que tu y portes, c'est précieux pour moi smile (merde, c quand même le dev de Xcfa qui s'intéresse à mes quelques lignes de code. Je trouve cela stimulant smile)


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne

#10 Le 14/03/2011, à 23:07

b52

Re : MultiScript : Audio

oh mince, je te dérange pendant une gâchée de plâtre et je vais être maudit par ta compagne  sad
PS:
Prends ton temps, y a pas le feu au lac hein  smile


Les grands bonheurs viennent du ciel, ...
Xcfa, Linux on the root, Normalisation, Ogg Vorbis

Hors ligne

#11 Le 01/04/2011, à 09:01

soupaloignon

Re : MultiScript : Audio

Nouvelle version du scrpt :  MultiScript : Audio (V 0.2)

Les nouveautés :
- Ajout d'une fonction pour lancer la gravure des fichiers wav contenus dans un répertoire
- Modifications suite aux retours de b52  (Le platre est sec, c'est bon smile)
- Optimisation du code

#!/bin/bash

####################################################################################
#
# MultiScript : Audio
# Permet de travailler sur des fichiers audio : Conversion de formats / Renommage
# Travaille sur les formats : wav / mp3 / ogg / flac
#
# Dépendances :
# A voir ;)
#
# Version :
# 0.2 : 2011/04/01
# 0.1 : 2011/01/28
#
# Utilisation :
# Se placer dans le répertoire contenant les fichiers audio à traiter, lancer le script.
# Inutile de sélectionner les fichiers, le script va travailler sur toutes les fichiers 
# contenus dans le répertoire (et uniquement dans le répertoire, il n'est pas récursif)
#
# Le script travaille en modifiant la casse des extensions des fichiers (majuscule en minuscule), c'est voulu
# si ce comportement ne vous convient pas, n'utilisez pas ce script, ou modifiez-le ;)
#
# Le fil de discussion sur le forum d'Ubuntu fr : 
# 
# Infos et historique du script : http://forum.ubuntu-fr.org/viewtopic.php?id=440377
# 
# Version 0.2 testée Testé sous Mint 9 (Lucid)
# Version 0.1 testée sous Mint 9 (Lucid) / Debian Squeeze
# 
#
# www.soupaloignon.net
####################################################################################


####################################################################################
###### Mettre tout le script dans une boucle #######################################

while [ "$fin_du_script" != "oui" ]
do
####################################################################################


####################################################################################
###### Variable(s) générale(s) #####################################################

# Titre des fenêtres zenity
title="MultiScript : Audio (V 0.2)"

####################################################################################


####################################################################################
###### Function(s) #################################################################

function Casse-Extension
{
    # Transforme l'extension en minuscules
ls -d *.WAV | sed 's/\(.*\).WAV$/mv "&" "\1.wav"/' | sh
ls -d *.MP3 | sed 's/\(.*\).MP3$/mv "&" "\1.mp3"/' | sh
ls -d *.FLAC | sed 's/\(.*\).FLAC$/mv "&" "\1.flac"/' | sh
ls -d *.OGG | sed 's/\(.*\).OGG$/mv "&" "\1.ogg"/' | sh
}

####################################################################################



####################################################################################
###### Afficher le menu ############################################################
            
    menu=`zenity --width=750 --height=500 \
    --title "$title" --text="Choisir l'action à effectuer sur des fichiers : wav / mp3 / ogg / flac" --list --hide-column 1 --column "" --column "" \
    0 "QUITTER LE SCRIPT" \
    1 "" \
    2 "Global : Intitulé / 2 chiffres" \
    3 "Changer la casse de l'extension : WAV => wav / MP3 => mp3 etc" \
    31 "" \
    4 "Rajouter un intitulé devant le nom du fichier" \
    41 "Rajouter un intitulé à la fin du nom du fichier" \
    5 "Renommer en masse sur X chiffres au choix" \
    10 "" \
    11 "conversion : Ogg => Wav" \
    12 "conversion : Flac => Wav" \
    13 "conversion : Mp3 => Wav" \
    14 "conversion : Wav => Flac" \
    15 "conversion : Flac => ogg" \
    16 "" \
    17 "Graver les fichiers wav" \
    18 "" \
    21 "A LIRE"`




# Pour quitter
    if [ "$menu" = 0 ] ; then
    fin_du_script="oui"
    fi 

# Vérifier qu'un choix a été fait
    if [ ! "$menu" ]; then
    zenity --error --title="Erreur" --text="Choisissez une action"
        echo "menu EST VIDE"
    fi




####################################################################################

####################################################################################
###### Global #######

# Choix du menu

 if [ "$menu" = 2 ] ; then

TEXTE=$(zenity --entry --width=500 --height=150 --title="$title : Intitulé devant le nom de fichier" --entry-text="" --text="Entrez le nom à rajouter devant vos fichiers :")

# Eviter les problèmes avec des noms de fichiers comportants des espaces
IFS=$'\n'

let "indice=1"
for fichier in *.mp3 *.wav *.flac *.ogg
do
         if [ -f "$fichier" ]; then
            extension=${fichier##*.}
            echo "$fichier" "=>" "$indice.$extension"
            mv "$fichier" `printf "%0"2"d" $indice`".$extension"
            let "indice+=1"
        fi
done

for fichier in *.mp3 *.wav *.flac *.ogg
do 
rename 's/^/'$TEXTE'/' $fichier
done


fi
####################################################################################
   
####################################################################################
###### Changer la casse  ############################################################ 

# Choix du menu 
 if [ "$menu" = 3 ] ; then 
 
# Function Transforme l'extension en minuscules
Casse-Extension

fi
####################################################################################

####################################################################################
###### Rajouter un intitulé devant le nom du fichier ############################### 

# Choix du menu 
 if [ "$menu" = 4 ] ; then 

# Eviter les problemes avec des noms comportant des espaces 
IFS=$'\n'

# Function Transforme la casse et ou l'extension en jpg/png
#Casse-Extension

## Texte à rajouter devant le nom du fichier
TEXTE=$(zenity --entry --width=500 --height=150 --title="$title : Intitulé devant le nom de fichier" --entry-text="" --text="Entrez le nom à rajouter devant vos fichiers :")
         if [ "${PIPESTATUS[0]}" != "0" ]; then
           exit
         fi
# Boucle d'insertion

for fichier in *.mp3 *.wav *.flac *.ogg
do 
rename 's/^/'$TEXTE'/' $fichier
done

fi
####################################################################################


####################################################################################
###### Rajouter un intitulé à la fin du nom du fichier ############################### 

# Choix du menu 
 if [ "$menu" = 41 ] ; then 

# Eviter les problemes avec des noms comportant des espaces 
IFS=$'\n'

# Function Transforme la casse
Casse-Extension

## Texte à rajouter à la fin du nom du fichier
TEXTEFIN=$(zenity --entry --width=500 --height=150 --title="$title : Intitulé à la fin du nom du fichier" --entry-text="" --text="Entrez l'intitulé à rajouter à la fin de chaque nom de fichier :")
         if [ "${PIPESTATUS[0]}" != "0" ]; then
           exit
         fi


for file in *.mp3 *.wav *.flac *.ogg
do
    base=`basename $file`
    mv $file  ${base%.*}$TEXTEFIN.${base##*.}
done


fi
####################################################################################


####################################################################################
###### Renomme en masse sur X chiffres #############################################
 
# Choix du menu   
 if [ "$menu" = 5 ] ; then  

# Choix du nombre de caracteres
nombre=$(zenity --entry --width=500 --height=150 --title="$title : Nombre de chiffres" --entry-text="2" --text="Choisir sur quel nombre de chiffres seront renommés vos fichiers :" )
if [ "${PIPESTATUS[0]}" != "0" ]; then
           exit
         fi

# Function Transforme la casse
Casse-Extension

# Boucle
let "indice=1"
for fichier in *.mp3 *.wav *.flac *.ogg
do
         if [ -f "$fichier" ]; then
            extension=${fichier##*.}
            echo "$fichier" "=>" "$indice.$extension"
            mv "$fichier" `printf "%0"$nombre"d" $indice`".$extension"
            let "indice+=1"
        fi
done

fi
####################################################################################


####################################################################################
###### conversion de formats           #############################################
####################################################################################

################################# Ogg/Wav

if [ "$menu" = 11 ]; then

for i in *.ogg; do 
   j="${i%.ogg}"
   sox "$j.ogg" "$j.wav"
   echo $j.ogg
done


mkdir wav
mv *.wav wav

zenity --info  --text="L'encodage en Wav est terminé"

fi

################################# flac/wav

if [ "$menu" = 12 ]; then

flac --decode *.flac

mkdir wav
mv *.wav wav

zenity --info  --text="L'encodage Flac => Wav est terminé"

fi


################################# mp3/wav

if [ "$menu" = 13 ]; then

for fichier in *.mp3; do
  lame --verbose --decode "$fichier" "${fichier/%.mp3/.wav}";
done

mkdir wav
mv *.wav wav

zenity --info  --text="L'encodage Mp3 => Wav est terminé"

fi

################################# Wav/flac

if [ "$menu" = 14 ]; then

flac --best *.wav

mkdir flac
mv *.flac flac

zenity --info  --text="L'encodage Wav => Flac est terminé"

fi

################################# Flac/Ogg

if [ "$menu" = 15 ]; then

oggenc -q9 *.flac

mkdir ogg
mv *.ogg ogg

zenity --info  --text="L'encodage Flac => Ogg est terminé"

fi


################################# gravure des wav

if [ "$menu" = 17 ]; then

wodim -v -pad -dev=/dev/cdrw -dao -audio -eject *.wav

zenity --info  --text="La gravure est terminée"

fi


####################################################################################
###### A LIRE ######################################################################

# Choix du menu 
if [ "$menu" = 21 ] ; then  

zenity --info --title="$title : Informations" --text="J'ai fait ce script pour mon usage personnel. S'il peut vous être utile, tant mieux.\n\nUtilisation :\n\nSe placer dans le répertoire contenant les fichiers audio à traiter, lancer le script. Inutile de sélectionner les fichiers, le script va travailler sur toutes les fichiers contenus dans le répertoire (et uniquement dans le répertoire, il n'est pas récursif)\n\nCe script travaille uniquement sur des fichiers aux formats : flac, ogg, wav, mp3\n\nImportant : Ne travaillez pas dans des dossiers qui contiennent un mélange de fichiers avec différents formats, le script n'est pas prévu pour cela et vous auriez des erreurs.\n\n\nFonctionnalités (Testé uniquement sous Mint 9 (Lucid)):\n
Global : Renommera les fichiers avec un intitulé à saisir, suivi d'une incrémentation sur 2 chiffres (départ 01)\n\nChanger la casse : transformera la casse de l'extension en minuscule\n
Rajouter un intitulé devant le nom du fichier : Le nom du fichier est conservé, un intitulé à saisir est rajouté devant\n\nRajouter un intitulé à la fin du nom du fichier : Le nom du fichier est conservé, un intitulé à saisir est rajouté derrière\n\nRenommer en masse sur X chiffres : Renomme les fichiers (en gardant l'ordre initial) sur un nombre de X chiffres. X étant une valeur à saisir\n\nTravaillant nativement sur des extensions en minuscules, ce script changera automatiquement la casse des extensions s'il rencontre des majuscules dans les extensions des fichiers à traiter.\n\nconversion : Convertir les formats audio. Les originaux sont préservés, un dossier est créé dans le repertoire en cours d'utilisation.\n
\nGraver les fichiers wav : Grave un Cd audio des fichiers wav du répertoire. Le script présupose qu'un Cd vierge est dans le graveur.

www.soupaloignon.net"

fi
########################################################################


done 
exit 0

==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne

#12 Le 01/04/2011, à 21:12

b52

Re : MultiScript : Audio

Salut @soupaloignon,

Génial ton script cool

Je me suis permis d'y apporter quelques modifs pour une meilleure lisibilité du code:
   - Ajout indentations
   - Utilisation de case .. esac
   http://download.tuxfamily.org/xcfaudio/ … ReadMe.txt
   http://download.tuxfamily.org/xcfaudio/Soupaloignon/

Merci pour l'info, j'ai regardé, mais sans vraiment comprendre comment utiliser ça dans un script bash.
J'essaye de voir avec metaflac et la ligne "--import-tags-from=FILE" (sans succès jusqu'à présent d'ailleurs wink)

Faudrait que je jette un oeil à l'occasion !

PS:
Je n'ai pas testé la gravure wav mais tout le reste pour moi sous Squeeze, est ok smile

Dernière modification par b52 (Le 01/04/2011, à 21:24)


Les grands bonheurs viennent du ciel, ...
Xcfa, Linux on the root, Normalisation, Ogg Vorbis

Hors ligne

#13 Le 02/04/2011, à 11:40

soupaloignon

Re : MultiScript : Audio

Hello

b52 a écrit :

Génial ton script cool

Génial je sais pas, mais extrêmement pratique en tout cas


b52 a écrit :

Je me suis permis d'y apporter quelques modifs pour une meilleure lisibilité du code:
   - Ajout indentations
   - Utilisation de case .. esac
   http://download.tuxfamily.org/xcfaudio/ … ReadMe.txt
   http://download.tuxfamily.org/xcfaudio/Soupaloignon/

Permet toi, au contraire. Par contre qu'apporte l'utilisation de case .. esac par rapport à ce qu'il y avait avant ?
Excellent l'en tête du ReadMe

Merci pour l'info, j'ai regardé, mais sans vraiment comprendre comment utiliser ça dans un script bash.
J'essaye de voir avec metaflac et la ligne "--import-tags-from=FILE" (sans succès jusqu'à présent d'ailleurs wink)

En fait cette partie là appartient à un autre script (utilisé conjointement avec celui-ci). Et l'ensemble me permet de réaliser un projet dont j'avais déjà parlé sur le fil de discussion de Xcfa, le transfert de tous mes Cd audio en numérique sous 2 formats. Le flac et ses tags que j'utiliserai avec un serveur son (mpd + client175), et un archivage en wav.
http://forum.ubuntu-fr.org/viewtopic.php?id=448319


b52 a écrit :

PS:
Je n'ai pas testé la gravure wav mais tout le reste pour moi sous Squeeze, est ok smile

Super, je vais l'indiquer sur le script. Pour la gravure c'est avec wodim, donc ça m'étonnerai que cela ne fonctionne pas avec une Debien wink


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne

#14 Le 02/04/2011, à 13:47

b52

Re : MultiScript : Audio

Par contre qu'apporte l'utilisation de case .. esac par rapport à ce qu'il y avait avant ?

Outre une meilleure vue de l'ensemble de ton code surtout si tu en refais une lecture dans 6 mois, cela m'a permis de voir de suite que les deux premières options de case:

    case $menu in
    "")
        zenity --error --title="Erreur" --text="Choisissez une action"
        echo "menu EST VIDE"
        ;;
    0)
        fin_du_script="oui"
        ;;

... pourraient ne faire qu'un.
La première option étant uniquement activée par un click sur la fermeture de la fenêtre.
Mais tu es le Maître à bord cool

Excellent l'en tête du ReadMe

C'est l'excellent figlet qui fait tout  wink
Une démo est possible (en fenêtre shell) avec:
     $ showfigfonts

PS:
Au fait, je n'ai point vu de référence pour ton script sur tes pages roll

Dernière modification par b52 (Le 02/04/2011, à 14:00)


Les grands bonheurs viennent du ciel, ...
Xcfa, Linux on the root, Normalisation, Ogg Vorbis

Hors ligne

Haut de page ↑