#!/bin/sh
FULLPATH=$1
FILE=${FULLPATH##*/}
FILENAME=${FILE%.*}
EXT=${FILE##*.}
#echo "FILENAME=$FILENAME"
#echo "EXTension=$EXT"
shift
OPTS=$@
echo filename=$FILENAME
meta=`mp4info "$FULLPATH" | awk '/Metadata / {sub(/^[ \t]+/, "")};1'`
#echo meta=$meta
TITLE=`echo "$meta" | awk '/Metadata Name: / {gsub(/Metadata Name: /,""); print }'`
ARTIST=`echo "$meta" | awk '/Metadata Artist: / {gsub(/Metadata Artist: /,""); print }'`
if [ -z "$TITLE" ]
then
TITLE="unknown"
else
echo TITLE=$TITLE
fi
if [ -z "$ARTIST" ]
then
ARTIST="unknown"
else
echo ARTIST=$ARTIST
fi
TARGET="$ARTIST - $TITLE.$EXT"
cp "$FULLPATH" "$TARGET"
if [ -n $ "$TARGET" ]
then
rm "$FULLPATH"
fi
Save the above script into an executable file, say mp4fixname.
To fix a filename, just run it and pass the encoded filename.
For example, if the file name is NXJA.m4a, we just run the script as below:
mp4fixname NXJA.m4a
The original filename will be replaced in artist and song name format according to metadata/tags stored in the original file.