Posts Tagged mp3

Getting m4a to work with rhythmbox (itunes to mp3 conversion)

Posted by on Monday, 6 July, 2009

Note: This tutorial is related to Ubuntu, however the clueful can use it easily enough

My kids old apple bit the dust the other day, so i thought ‘stuff buying another overpriced machine, their linux box can suffice’
They use gnome, and are familiar with rhythmbox – which i might add, works brilliantly with iPods.

So after a few days the kids started moaning that half the music had disappered. I double checked, and it turns out half it bought of iTunes was in m4a format which wasnt readable.
Solutions!
If you are not tied to rhythmbox then jump in and install xmms and xmms-faad packages.

If you are then this is the solution.
Install the Medibuntu sources
sudo wget http://www.medibuntu.org/sources.list.d/`lsb_release -cs`.list --output-document=/etc/apt/sources.list.d/medibuntu.list; sudo apt-get -q update; sudo apt-get --yes -q --allow-unauthenticated install medibuntu-keyring; sudo apt-get -q update

Then install the following packages
sudo apt-get install libavcodec-unstripped-52 libavdevice-unstripped-52 libavformat-unstripped-52 libavutil-unstripped-49 libpostproc-unstripped-51 libswscale-unstripped-0 ffmpeg

Now convert!
ffmpeg -i file.m4a -acodec libmp3lame file.mp3

Now you need to add the id3 tags,
id3tool -t "title of song" -a "album name" -r "Artist" file.mp3

Bingo!


Sorting MP3s

Posted by on Tuesday, 7 April, 2009

#!/bin/bash
#
# My mp3s are always heniously unsorted and blowed if im gonna sit there spending hours sorting them
# Call me lazy or something but this definatly helps (even though i spent a couple days writing this and working out bugs)
#
# WARNING – THIS PROGRAM RELIES ON ID3 TAGS!
#
# There are a couple programs to get the ID3 tags sorted out available
# easytag, juk, rhythembox etc (those are all gui ones)
#
# Make sure mp3info is installed ( http://ibiblio.org/mp3info/ )
# just ./runthis and hey presto (make sure you edit where your mp3s are of course first)
#debug
#set -x

#The Dir where all your mp3s are
DIR=”/other/mp3s”

#The final destination dir for the mp3s – No trailing / needed
DESTINATION=”/other/mp3s”

#This is the thing that seperates fields (some people prefer _ some prefer a space however SPACES BREAK THINGS! use ‘1’ if you want spaces)
SPACER=”_”

#try not too edit to much below this

if [ -e moving.log ];then
rm -rf moving.log
fi

if [ ${SPACER} = “1” ];then
SPACER=”[:space:]”
fi

if [ $1 ];then

find ${DIR} -type f -name \*.[mM][Pp]3 | while read i
do

FINALDEST=”${DESTINATION}”
ARTIST=`mp3info -p %a “$i” | tr [:punct:][:blank:] ${SPACER} `
ALBUM=`mp3info -p %l “$i” | tr [:punct:][:blank:] ${SPACER} `
GENRE=`mp3info -p %g “$i” | tr [:punct:][:blank:] ${SPACER}`
SONGNAME=`mp3info -p %t “$i” | tr [:punct:][:blank:] ${SPACER}`
TRACKNUM=`mp3info -p %n “$i”`
FILENAME=`mp3info -p %f “$i” | tr [:punct:][:blank:][mM][Pp]3 ${SPACER} `

# sort the artists
function artistpath {
if [ ! “${ARTIST}” ];then
FINALDEST=”${FINALDEST}/Unknown/”
else
FINALDEST=”${FINALDEST}/${ARTIST}/”
fi
}
function albumpath {
#sort the albums
if [ ! “${ALBUM}” ];then
FINALDEST=”${FINALDEST}/Unknown/”
else
FINALDEST=”${FINALDEST}/${ALBUM}/”
fi
}
if [ $1 == “1” ];then
artistpath
albumpath
elif [ $1 == “2” ];then
albumpath
artistpath
elif [ $1 == “3” ];then
artistpath
elif [ $1 == “4” ];then
albumpath
fi

FINALDEST=`echo ${FINALDEST} | sed s/${SPACER}${SPACER}*/${SPACER}/g`
echo mkdir -p “${FINALDEST}”
echo mkdir -p “${FINALDEST}”>>moving.log
mkdir -p “${FINALDEST}”

unset NEWNAME

if [ “$2″ ];then

NEWNAME=`echo $2 | sed s/TRACKNUM/$TRACKNUM/g | sed s/ALBUM/$ALBUM/g | sed s/ARTIST/$ARTIST/g | sed s/SONGNAME/$SONGNAME/g`
else
NEWNAME=”${TRACKNUM}-${ALBUM}-${ARTIST}-${SONGNAME}”
fi

if [ “${TRACKNUM}” == “” ] && [ “${ALBUM}” == “” ] && [ “${ARTIST}” == “” ] && [ “${SONGNME}” == “” ];then
echo “Songname is non existant (no id3 tag?) – resorting to ${FILENAME} $i”
echo “Songname is non existant (no id3 tag?) – resorting to ${FILENAME} $i”>>moving.log
NEWNAME=”${FILENAME}”
fi
NEWNAME=`echo ${NEWNAME} | sed s/–*/-/g | sed s/^-// | sed s/^${SPACER}// `
FINALDEST=”${FINALDEST}${NEWNAME}.mp3″
FIXDEST=`echo ${FINALDEST} | sed s/${SPACER}${SPACER}*/${SPACER}/g `
echo moving $i to ${FIXDEST}
echo moving $i to ${FIXDEST} >>moving.log
mv -u “$i” “${FIXDEST}”
FINALDEST=”${DESTINATION}”
unset FIXDEST
done

# cleaning up empty dirs
#add this
#for i in `find ./ -type d ` ; do if [ “`find $i -type f`” ];then echo checking $i ; else echo $i is empty;rm -r “$i” ; fi ; done

for EMPTYDIR in ${DESTINATION}/*
do
if [ -d “${EMPTYDIR}” ];then
if [ “`find ${EMPTYDIR} -type f`” ];then
echo Checking ${EMPTYDIR} for cleanup
else
echo ${EMPTYDIR} is empty and being removed
echo ${EMPTYDIR} is empty and being removed >>moving.log
rm -r “${EMPTYDIR}”
#find “${EMPTYDIR}”
fi
else
echo ${EMPTYDIR} is a file

fi
done

# main else

else
echo “Useage: $0 {1|2|3|4} [PATTERN] ”
echo “1 sort by artist then album”
echo “2 sort by album then artist ”
echo “3 sort by artist only”
echo “4 sort by album only”
echo
echo “[PATTERN] – defaults to TRACKNUM-ARTIST-ALBUM-SONGNAME”
echo “ARTIST – Artist”
echo “ALBUM – Album Name”
echo “TRACKNUM – TrackNumber”
echo “SONGNAME – Songname”
fi

# Yes i realize some of the code is horiffic but it did the job at the time ;]
# Liz