|
|
|
@ -18,41 +18,45 @@
|
|
|
|
|
|
|
|
|
|
#set -x
|
|
|
|
|
|
|
|
|
|
print_usage()
|
|
|
|
|
{
|
|
|
|
|
echo "Usage:"
|
|
|
|
|
echo " $0 <ACTION> <SRC_FIELD> <DST_FIELD> <FILE.flac> [ <FILE2.flac> [...] ]"
|
|
|
|
|
echo "<ACTION> : copy | move | rmcopy | mvcopy"
|
|
|
|
|
echo " copy: each occurrence of SRC_FIELD is duplicated to create an occurrence of"
|
|
|
|
|
echo " DST_FIELD; all the existing occurrences of SRC_FIELD and DST_FIELD are"
|
|
|
|
|
echo " kept."
|
|
|
|
|
echo " move: each occurrence of SRC_FIELD is renamed to create an occurrence of"
|
|
|
|
|
echo " DST_FIELD; the existing occurrences of DST_FIELD are kept."
|
|
|
|
|
echo " rmcopy: the existing occurrences of DST_FIELD are deleted, then each"
|
|
|
|
|
echo " occurrence of SRC_FIELD is duplicated to create an occurrence"
|
|
|
|
|
echo " of DST_FIELD; the occurrences of SRC_FIELD are kept."
|
|
|
|
|
echo " rmmove: the existing occurrences of DST_FIELD are deleted, then each"
|
|
|
|
|
echo " occurrence of SRC_FIELD is renamed to create an occurrence of"
|
|
|
|
|
echo " DST_FIELD."
|
|
|
|
|
exit 1
|
|
|
|
|
}
|
|
|
|
|
USAGE=$(cat <<EOF
|
|
|
|
|
Usage:
|
|
|
|
|
$0 <ACTION> <SRC_FIELD> <DST_FIELD> <FILE.flac> [ <FILE2.flac> [...] ]
|
|
|
|
|
|
|
|
|
|
<ACTION> : copy | move | rmcopy | mvcopy
|
|
|
|
|
copy: each occurrence of SRC_FIELD is duplicated to create an occurrence of
|
|
|
|
|
DST_FIELD; all the existing occurrences of SRC_FIELD and DST_FIELD are
|
|
|
|
|
kept.
|
|
|
|
|
move: each occurrence of SRC_FIELD is renamed to create an occurrence of
|
|
|
|
|
DST_FIELD; the existing occurrences of DST_FIELD are kept.
|
|
|
|
|
rmcopy: the existing occurrences of DST_FIELD are deleted, then each
|
|
|
|
|
occurrence of SRC_FIELD is duplicated to create an occurrence
|
|
|
|
|
of DST_FIELD; the occurrences of SRC_FIELD are kept.
|
|
|
|
|
rmmove: the existing occurrences of DST_FIELD are deleted, then each
|
|
|
|
|
occurrence of SRC_FIELD is renamed to create an occurrence of
|
|
|
|
|
DST_FIELD.
|
|
|
|
|
EOF
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
# Right number of arguments?
|
|
|
|
|
if [ $# -lt 4 ] ; then
|
|
|
|
|
echo "Wrong number of arguments!"
|
|
|
|
|
echo "Wrong number of arguments!" >&2
|
|
|
|
|
print_usage
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
ACTION=$1
|
|
|
|
|
ACTION="$1"
|
|
|
|
|
shift
|
|
|
|
|
|
|
|
|
|
# Known action type?
|
|
|
|
|
case $ACTION in
|
|
|
|
|
case "$ACTION" in
|
|
|
|
|
copy) ;;
|
|
|
|
|
move) ;;
|
|
|
|
|
rmcopy) ;;
|
|
|
|
|
rmmove) ;;
|
|
|
|
|
*) echo "Action unknown \"$ACTION\"!" ; print_usage ;;
|
|
|
|
|
*)
|
|
|
|
|
printf 'Action unknown "%s"!\n\n' "$ACTION" >&2
|
|
|
|
|
printf '%s\n' "$USAGE" >&2
|
|
|
|
|
exit 1
|
|
|
|
|
;;
|
|
|
|
|
esac
|
|
|
|
|
|
|
|
|
|
SRC_FIELD=$1
|
|
|
|
@ -60,28 +64,28 @@ shift
|
|
|
|
|
DST_FIELD=$1
|
|
|
|
|
shift
|
|
|
|
|
|
|
|
|
|
echo "Source field: $SRC_FIELD"
|
|
|
|
|
echo "Destination field: $DST_FIELD"
|
|
|
|
|
echo "Action: $ACTION"
|
|
|
|
|
printf 'Source field: %s\n' "$SRC_FIELD"
|
|
|
|
|
printf 'Destination field: %s\n' "$DST_FIELD"
|
|
|
|
|
printf 'Action: %s\n' "$ACTION"
|
|
|
|
|
|
|
|
|
|
echo "Processing files..."
|
|
|
|
|
|
|
|
|
|
if echo $ACTION | egrep '^rm' >/dev/null ; then
|
|
|
|
|
echo "Deleting field $DST_FIELD on each file..."
|
|
|
|
|
metaflac --remove-tag=$DST_FIELD "$@"
|
|
|
|
|
if echo "$ACTION" | grep '^rm' >/dev/null ; then
|
|
|
|
|
printf 'Deleting field "%s" on each file...\n' "$DST_FIELD"
|
|
|
|
|
metaflac --remove-tag="$DST_FIELD" "$@"
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
for file in "$@" ; do
|
|
|
|
|
echo "Setting field \"$DST_FIELD\" on file: $file"
|
|
|
|
|
metaflac --show-tag=$SRC_FIELD "$file" | sed 's/^[A-Z]\+=//' | while read c1 ; do
|
|
|
|
|
echo "Adding $DST_FIELD=$c1..."
|
|
|
|
|
metaflac --set-tag=$DST_FIELD="$c1" "$file"
|
|
|
|
|
printf 'Setting field "%s" on file: "%s"\n' "$DST_FIELD" "$file"
|
|
|
|
|
metaflac --show-tag="$SRC_FIELD" "$file" | sed 's/^[A-Z]\+=//' | while read -r c1 ; do
|
|
|
|
|
printf 'Adding "%s"...\n' "$DST_FIELD=$c1"
|
|
|
|
|
metaflac --set-tag="$DST_FIELD"="$c1" "$file"
|
|
|
|
|
done
|
|
|
|
|
done
|
|
|
|
|
|
|
|
|
|
if echo $ACTION | egrep 'move$' >/dev/null ; then
|
|
|
|
|
echo "Deleting $SRC_FIELD on each file..."
|
|
|
|
|
metaflac --remove-tag=$SRC_FIELD "$@"
|
|
|
|
|
if echo "$ACTION" | grep 'move$' >/dev/null ; then
|
|
|
|
|
printf 'Deleting "%s" on each file...\n' "$SRC_FIELD"
|
|
|
|
|
metaflac --remove-tag="$SRC_FIELD" "$@"
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4
|
|
|
|
|