#!/bin/sh # # metaflac-field2field.sh, Copyright © 2009 Matteo Cypriani # # This program is free software. It comes without any warranty, to # the extent permitted by applicable law. You can redistribute it # and/or modify it under the terms of the Do What The Fuck You Want # To Public License, Version 2, as published by Sam Hocevar. See # http://sam.zoy.org/wtfpl/COPYING for more details. # # This script uses metaflac to process field to field copy/move on # FLAC file metadatas. # Launch this script without arguments to display usage. # ---- # Ce script 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