]> git.mjollnir.org Git - scripts.git/commitdiff
added martin's tagrename script to rename oggs based on their tags
authorPenny Leach <penny@mjollnir.org>
Fri, 30 Apr 2010 15:56:22 +0000 (17:56 +0200)
committerPenny Leach <penny@mjollnir.org>
Fri, 30 Apr 2010 15:56:22 +0000 (17:56 +0200)
bin/tagrename [new file with mode: 0755]

diff --git a/bin/tagrename b/bin/tagrename
new file mode 100755 (executable)
index 0000000..7258351
--- /dev/null
@@ -0,0 +1,36 @@
+#!/bin/sh
+set -eu
+
+if [ ! -r $HOME/.abcde.conf ]; then
+  echo "E: ~/.abcde.conf not found." >&2
+  exit 1
+fi
+
+. $HOME/.abcde.conf
+FORMAT=${OUTPUTFORMAT##*/}
+[ "$1" = -v ] && FORMAT=${VAOUTPUTFORMAT##*/} && shift
+
+extract_tag()
+{
+  local file; file="$1"
+  vorbiscomment -l "$file" | sed -rne "s,^${2}=,,p"
+}
+
+get_filename()
+{
+  local file; file="$1"
+  local filename
+
+  TRACKNUM="$(extract_tag "$file" TRACKNUMBER)"
+  TRACKFILE="$(extract_tag "$file" TITLE)"
+  ARTISTFILE="$(extract_tag "$file" ARTIST)"
+
+  eval mungefilename "$FORMAT"
+}
+
+for file in "$@"; do
+  newname="$(get_filename "$file").ogg"
+  case "$file" in */*) newname="${file%/*}/$newname";; esac
+  [ "$file" = "$newname" ] || 
+    { echo "I: $file → $newname"; mv "$file" "$newname"; }
+done