handy script to add mp3 title info to mp3 files add mp3info sh
handy script to add mp3 title info to mp3 files add mp3info sh
I am listening to Irish CD that Kate brought home and fixing up some .mp3 file info. Using this script I made earlier (25/12/2009).
#!/bin/bash
# Retrospectively add mp3 info into mp3 files. # Based on directory name and file name.
# usage: #~/mp3$ add_mp3info.sh */*/*.mp3 #~/mp3$ add_mp3info.sh -f therapy/*/*.mp3 # WARNING: doesnt work for other directory levels # TODO: oops, doesnt work if leading ./ or anything leading. # BUT: is safe enough, it wont overwrite existing mp3info (unless -f FORCE flag is passed)
# e.g. # artist_name/album_name/01-track_title.mp3 does not have an ID3 1.x tag. #find . -name *.mp3 -exec mp3info {} ; |less
FORCE=$1 if [[ "$FORCE" == "-f" ]] ; then echo foo; shift; fi #for f in tom_waits/*/*; do for f in $*; do info=$(mp3info "$f") if [[ "$FORCE" == "-f" || "$info" == "" ]] ; then echo "Adding info to file:$f" artist=;album=;title=;track=; artist=${f%%/*.mp3} rest=${f#*/} album=${rest%%/*.mp3} rest=${rest#*/} title=${rest%%.mp3} title=${title##*-} track=${rest%%-*} title=$(echo $title|sed "s/_([a-z])/ U1/g" |sed "s/^([a-z])/U1/") artist=$(echo $artist|sed "s/_([a-z])/ U1/g" |sed "s/^([a-z])/U1/") album=$(echo $album|sed "s/_([a-z])/ U1/g" |sed "s/^([a-z])/U1/") params="" #[[ "$title" != "" ]] && params="$params -t "$title"" mp3info -t "$title" -l "$album" -a "$artist" -n "$track" -c "badgers are lovely" "$f" fi done
# TODO: oops, doesnt work if leading ./ or anything leading. #/home/jamesc/bin/add_mp3info.sh: 24: [[: not found # so this wont work: find . -name "*.mp3" -exec add_mp3info.sh {} ;
# to get meta info from music/video files generally (if it is there): exiftool
A couple of other handy snippets:
# fill in fixed mp3 info into file, increment track number as you go.
track=1
function mrfle1 {
title="$TTITLE"
f=$t
mp3info -t "$title" -l "$album" -a "$artist" -n "$track" -c "is maith linn broc" "$f"
track=$((track+1))
}
# rename track files according to title (replacing non-alpha-numerics for thefile name)