From d44b9b10397bfd92e2310d05c695146b6f6b1b1a Mon Sep 17 00:00:00 2001 From: Matteo Cypriani Date: Sun, 11 Jan 2009 23:14:25 +0000 Subject: [PATCH] Add metaflac-field2field.sh MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Field to field operations (copy, move) in FLAC metadatas. ++++ Script pour faire des opérations de champ à champ (copie, déplacement) sur des fichiers FLAC. --- metaflac-field2field.sh | 61 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100755 metaflac-field2field.sh diff --git a/metaflac-field2field.sh b/metaflac-field2field.sh new file mode 100755 index 0000000..4445d42 --- /dev/null +++ b/metaflac-field2field.sh @@ -0,0 +1,61 @@ +#!/bin/sh +# Utilise metaflac pour effectuer des actions de copie ou déplacement de champ à champ sur les fichiers FLAC. +# Lancer ce script sans argument pour afficher son utilisation. + +print_usage() +{ + echo "Utilisation :" + echo " $0 [ [...] ]" + echo "ACTION : copy | move | rmcopy | mvcopy" + echo " copy : chaque occurrence de SRC_FIELD est dupliquée pour créer une occurrence de DST_FIELD ; toutes les occurrences existantes de SRC_FIELD et de DST_FIELD sont conservées." + echo " move : chaque occurrence de SRC_FIELD est déplacée pour créer une occurrence de DST_FIELD ; les occurrences existantes de DST_FIELD sont conservées." + echo " rmcopy : les occurrences existantes de DST_FIELD sont supprimées, puis chaque occurrence de SRC_FIELD est dupliquée pour créer une occurrence de DST_FIELD ; les occurrences de SRC_FIELD sont conservées." + echo " rmmove : les occurrences existantes de DST_FIELD sont supprimées, puis chaque occurrence de SRC_FIELD est déplacée pour créer une occurrence de DST_FIELD." + exit 1 +} + +# Bon nombre d'arguments ? +if [ $# -lt 4 ] ; then + echo "Mauvais nombre d'arguments !" + print_usage +fi + +ACTION=$1 +shift + +# Type d'action connue ? +case $ACTION in + copy) ;; + move) ;; + rmcopy) ;; + rmmove) ;; + *) echo "Action inconnue !" ; print_usage ;; +esac + +SRC_FIELD=$1 +shift +DST_FIELD=$1 +shift + +echo "Champ source : $SRC_FIELD" +echo "Champ destination : $DST_FIELD" +echo "Action : $ACTION" + +echo "Traitement des fichiers..." + +if echo $ACTION | egrep '^rm' >/dev/null ; then + echo "Suppression du champ $DST_FIELD sur tous les fichiers..." + metaflac --remove-tag=$DST_FIELD "$@" +fi + +for file in "$@" ; do + echo "Fichier : $file" + metaflac --show-tag=$SRC_FIELD "$file" | sed 's/^[A-Z]\+=//' | while read c1 ; do + metaflac --set-tag=$DST_FIELD="$c1" "$file" + done +done + +if echo $ACTION | egrep 'move$' >/dev/null ; then + echo "Suppression du champ $SRC_FIELD sur tous les fichiers..." + metaflac --remove-tag=$SRC_FIELD "$@" +fi