From CodeMonkeyWiki
Ape to mp3
#!/bin/sh
for FILE in *.ape; do
FILENAME=`echo $FILE | sed 's/\.ape//g'`
mac "$FILE" "$FILENAME.wav" -d
done
for FILE in *.wav; do
FILENAME=`echo $FILE | sed 's/\.wav//g'`
lame -h -b 192 "$FILENAME.wav" "$FILENAME.mp3"
done
rm *.ape
rm *.wav
Mp3 Renamer (Ongoing)
#!/bin/bash
echo "MP3 Renamer v1.3"
# get default artist name & album from directory structure
DEFAULT_ARTIST=`pwd | rev | awk -F \/ '{print $2}' | rev`
DEFAULT_ALBUM=`pwd | rev | awk -F \/ '{print $1}' | rev`
#if album name starts with xxxx - (year) then remove it
DEFAULT_ALBUM=`echo $DEFAULT_ALBUM | sed 's/^[0-9][0-9][0-9][0-9]\ \-\ //g'`;
# artist from
read -p "1) Enter Artist To Replace (leave blank for none): " -e ARTIST_TO_REMOVE
# artist to
read -p "2) Enter Formatted Artist Name (leave blank for \"$DEFAULT_ARTIST\"): " -e ARTIST_TO_ADD
if [ "$ARTIST_TO_ADD" = "" ]; then
ARTIST_TO_ADD=$DEFAULT_ARTIST;
fi
if [ "$ARTIST_TO_ADD" = "" ]; then
echo "Blank Artist Name, exitting...";
exit;
fi;
# album name
read -p "3) Enter Album Name (leave blank for \"$DEFAULT_ALBUM\"): " -e ALBUM_NAME_TO_ADD
if [ "$ALBUM_NAME_TO_ADD" = "" ]; then
ALBUM_NAME_TO_ADD=$DEFAULT_ALBUM;
fi
if [ "$ALBUM_NAME_TO_ADD" = "" ]; then
echo "Blank Album Name, exitting...";
exit;
fi;
# filename pattern
if [ "$ARTIST_TO_REMOVE" != "" ]; then
FILENAME_PATTERNS[1]="XX-"$ARTIST_TO_REMOVE"-track_name";
FILENAME_PATTERNS[2]="XX_"$ARTIST_TO_REMOVE"_track_name";
FILENAME_PATTERNS[3]="XX "$ARTIST_TO_REMOVE" track_name";
FILENAME_PATTERNS[4]="[CD]XX-"$ARTIST_TO_REMOVE"-track_name";
FILENAME_PATTERNS[5]="XX - "$ARTIST_TO_REMOVE" - Track Name";
else
FILENAME_PATTERNS[1]="XX-track_name";
FILENAME_PATTERNS[2]="XX_track_name";
FILENAME_PATTERNS[3]="XX track_name";
FILENAME_PATTERNS[4]="[CD]XX-track_name";
FILENAME_PATTERNS[5]="XX - Track Name";
fi;
FILENAME_PATTERNS[6]="XX. Track Name";
FILENAME_PATTERNS[7]="XX Track Name";
FILENAME_PATTERNS[8]="EXX - Track Name";
FP_LEN=${#FILENAME_PATTERNS[*]}
for ((i=1; i<=$FP_LEN;i+=1));
do
echo " $i) ${FILENAME_PATTERNS[$i]}.mp3";
done
read -p "4) Choose Filename Pattern To Rename From (see list above): " -e FP_IDX
FP=${FILENAME_PATTERNS[$FP_IDX]};
#suffix
read -p "5) Enter Suffix (Leave blank for none): " -e FILENAME_SUFFIX
#continue confirmation
if [ "$FILENAME_SUFFIX" = "" ]; then
RENAME_FROM="$FP.mp3";
else
RENAME_FROM="$FP$FILENAME_SUFFIX.mp3";
fi
if [ $FP_IDX != 4 ]; then
echo "Renaming from \"$RENAME_FROM\" to $ARTIST_TO_ADD - $ALBUM_NAME_TO_ADD - XX - Track Name.mp3";
else
echo "Renaming from \"$RENAME_FROM\" to $ARTIST_TO_ADD - $ALBUM_NAME_TO_ADD - CD[CD] - XX - Track Name.mp3";
fi
read -p "Is this OK [y/n]:" -e CONFIRM
# user confirmed rename
if [ "$CONFIRM" = "y" ]; then
# declare sed regex
EXT="s/\.MP3/\.mp3/g";
UNDERLINE="s/\_/\ /g";
DECAPITALISE="s/\ [A-Z]*/\L&/g;";
CAPITALISE="s/\ [a-z]/\U&/g; s/([a-z]/\U&/g";
for MP3 in *.[Mm][Pp]3
do
# remove filename extension
LEN=`expr length "$MP3"`
REM_LEN=`expr $LEN - 4`;
STEP0="${MP3:0:$REM_LEN}"
# strip out suffix
if [ "$FILENAME_SUFFIX" != "" ]; then
STEP1=`echo $STEP0 | sed "s/$FILENAME_SUFFIX//g"`;
else
STEP1="$STEP0";
fi
STEP2=`echo $STEP1 | sed "s/\.mp3//g"`;
# use pattern to process filename
case $FP_IDX in
# "XX-"$ARTIST_TO_REMOVE"-track_name" / "XX-track_name"
1) if [ "$ARTIST_TO_REMOVE" != "" ]; then
REGEX="s/\-$ARTIST_TO_REMOVE\-/\ \-\ /g";
else
REGEX="s/^\([0-9][0-9]\)\-/\1\ \-\ /g";
fi;;
# "XX_"$ARTIST_TO_REMOVE"_track_name" / "XX_track_name"
2) if [ "$ARTIST_TO_REMOVE" != "" ]; then
REGEX="s/\_$ARTIST_TO_REMOVE\_/\ \-\ /g";
else
REGEX="s/^\([0-9][0-9]\)\_/\1\ \-\ /g";
fi;;
# "XX "$ARTIST_TO_REMOVE" track_name" / "XX track_name"
3) if [ "$ARTIST_TO_REMOVE" != "" ]; then
REGEX="s/\ $ARTIST_TO_REMOVE\ /\ \-\ /g";
else
REGEX="s/^\([0-9][0-9]\)\-/\1\ \-\ /g";
fi;;
# "[CD]XX-"$ARTIST_TO_REMOVE"-track_name" / "[CD]XX-track_name"
4) if [ "$ARTIST_TO_REMOVE" != "" ]; then
REGEX="s/^\([0-9]\)\([0-9][0-9]\)\-$ARTIST_TO_REMOVE\-/CD\1\ \-\ \2\ \-\ /g";
else
REGEX="s/^\([0-9]\)\([0-9][0-9]\)\-/CD\1\ \-\ \2\ \-\ /g";
fi;;
# "XX - "$ARTIST_TO_REMOVE" - Track Name" / "XX - Track Name"
5) if [ "$ARTIST_TO_REMOVE" != "" ]; then
REGEX="s/^\([0-9][0-9]\)\ \-\ $ARTIST_TO_REMOVE\ \-\ //g";
else
REGEX="s/^\([0-9][0-9]\)\ \-\ //g";
fi;;
# "XX. Track Name"
6) REGEX="s/^\([0-9][0-9]\)\. /\1\ \-\ /g";;
# "XX Track Name"
7) REGEX="s/^\([0-9][0-9]\)\ /\1\ \-\ /g";;
# "EXX - Track Name"
8) REGEX="s/^E//g";;
*) echo "Unknown pattern choice, exitting..."; exit;;
esac
if [ "$REGEX" != "" ]; then
STEP3=`echo $STEP2 | sed "$REGEX"`;
else
STEP3="$STEP2";
fi
# normalise filename
STEP4=`echo $STEP3 | sed "$UNDERLINE; $DECAPITALISE"`;
STEP4=`echo $STEP4 | sed "$CAPITALISE"`;
# now add formatted artist name and album title
STEP5="$ARTIST_TO_ADD - $ALBUM_NAME_TO_ADD - $STEP4";
echo "Moving \"$MP3\" to \"$STEP5.mp3\"";
mv "$MP3" "$STEP5.mp3"
done
else
echo Cancelled
fi