On Thu, Oct 30, 2003 at 07:50:44PM +0200, Anarky wrote: > Todd Slater wrote: > >Seriously, there could be some limitations depending on your view. > > > >1. You're going lossy to lossy so quality will be degraded > >2. You *may* lose ID3 tags > >3. Depending on how many mp3's you have, it could take a loooong time > > > >Google for mp32ogg and see what you come up with. > > > > > > > yes, but that program only does 1 file at a time .. I'm talking about > batch converting everything. I'd be willing maybe to accept the losses :)
OK, here you go. As an added bonus, it keeps ID3 tags. Requires mpg123 to convert to wav, mp3info to read id3 tags, and of course oggenc. Todd
#/bin/bash # ommtoc one more mp3 to ogg converter # remember, lossy to lossy = lower quality sound # this names ogg files to format: # track# - title - album - artist.ogg # # requires mpg123 # requires mp3info # # not extensively tested!! # # SET UP VARIABLES # # top level directory to search (search is recursive) searchPath="/home/you/mp3s" # # quality for ogg encoding quality=3 # # remove wav file? yes/no rmWav=yes # # remove original mp3? yes/no rmMp3=no # # no more variables! # # find all mp3's find "$searchPath" -type f -iname '*.mp3' > mp3list while read mp3 do workingPath=`dirname "$mp3"` wavName=`basename "$mp3"|sed s/\.[mM][pP]3/\.wav/` testID3=`mp3info -p %t "$mp3"` if [ -z "$testID3" ] ; then noID3Name=`basename "$mp3"|sed s/\.[mM][pP]3/\.ogg/` echo "Converting '$mp3' to wav..." mpg123 --wav "$workingPath/$wavName" "$mp3" >/dev/null 2>&1 echo "Encoding "$wavName" to ogg..." oggenc -q $quality -o "$workingPath/$noID3Name" "$workingPath/$wavName" >/dev/null 2>&1 if [ $rmMp3 = "yes" ] ; then rm -f "$mp3" fi if [ $rmWav = "yes" ] ; then rm -f "$workingPath/$wavName" fi else album=`mp3info -p %l "$mp3"` artist=`mp3info -p %a "$mp3"` genre=`mp3info -p %g "$mp3"` title=`mp3info -p %t "$mp3"` track=`mp3info -p %n "$mp3"` prettyTrack=`printf "%02d" $track` year=`mp3info -p %y "$mp3"` echo "Converting '$mp3' to wav..." mpg123 --wav "$workingPath/$wavName" "$mp3" >/dev/null 2>&1 echo "Encoding "$wavName" to ogg..." oggenc -q $quality -a "$artist" -N "$prettyTrack" -l "$album" -t "$title" -G "$genre" -d "$year" -n "$workingPath/$prettyTrack - %t - %l - %a.ogg" "$workingPath/$wavName" >/dev/null 2>&1 if [ $rmMp3 = "yes" ] ; then rm -f "$mp3" fi if [ $rmWav = "yes" ] ; then rm -f "$workingPath/$wavName" fi fi done < mp3list rm mp3list echo Done!
Want to buy your Pack or Services from MandrakeSoft? Go to http://www.mandrakestore.com