cdrip : Ripper un cd en console !
Par krusaf le dimanche, mars 25 2007, 15:14 - Releases - Lien permanent
Le script fonctionne mais est en beta !! (ça fait 1 mois qu'il est en beta :p donc autant que je le mette en ligne en attendant que la motivation vienne pour le finaliser
)
Retrouvez le script en annexe ainsi qu'ici mais temporairement.
#!/bin/bash
# cdrip.sh : Script pour ripper un cd en ligne de commande
#
# usage: cdrip.sh
#
# Licence : GNU GPL
# (c) Sylvain GAUNET 2007
#set -x
# usage : Affiche l'aide
function usage()
{
echo "Usage : cdrip [-mp3 | -ogg]"
echo " -mp3 : rip in mp3"
echo " -ogg : rip in ogg"
}
# Tests des arguments, si nok => usage
while [ $# -ne 0 ]
do
case "$1" in
-mp3)
mp3="ok"
shift 1;;
-ogg)
ogg="ok"
shift 1;;
-*)
usage
exit 1;;
*)
break;;
esac
done
# Au moins un argument doit etre saisi !
if [ "$mp3" = "" -a "$ogg" = "" ]
then
usage
exit 1
fi
# Initialisation des variables appelant les programmes
cddbcmd="/usr/bin/cddbcmd" # apt-get install cddb
discidcmd="/usr/bin/cd-discid"; # apt-get install cd-discid
discdev="/dev/cdrom";
cdtowav="/usr/bin/cdparanoia";
cdtowavparams="";
wavtoogg="/usr/bin/oggenc";
wavtooggparams="-b 192";
# Fichier temporaire
tmp=/tmp/tmp.$$
# Test si tous les programmes appelés existent
erreur=0;
if [ ! -x ${discidcmd} ]
then
echo "${discidcmd} not found !";
erreur=1;
fi;
if [ ! -x ${cddbcmd} ]
then
echo "${cddbcmd} not found !";
erreur=1;
fi;
if [ ! -x ${cdtowav} ]
then
echo "${cdtowav} not found !";
erreur=1;
fi;
if [ ! -x ${wavtoogg} ]
then
echo "${wavtoogg} not found !";
erreur=1;
fi;
if [ "$erreur" = "1" ]
then
echo "Please install missing software";
exit 1;
fi;
# Recupere infos du disque
infostr=$(${cddbcmd} cddb query `${discidcmd} ${discdev}`)
if [ "$?" != "0" ]
then
echo "Insert disc !"
exit 1
fi
categ=$(echo $infostr | awk '{ print $1 }');
discid=$(echo $infostr | awk '{ print $2 }')
artist=$(echo $infostr | awk '{ i=3 ;while($i!="/"){ printf($i" "); i++; } }')
album=$(echo $infostr | awk -F"/" '{ print $2 }')
genre=$(echo $infostr | awk '{ print $1 }');
# Ready : Récupere infos de la base cddb
${cddbcmd} cddb read ${categ} ${discid} | grep TTITLE > ${tmp}
mkdir -p "$artist/$album"
cd "$artist/$album"
# On boucle sur les chansons, extraction puis rip
i=1
while read ligne
do
# Recupere nom du trackname
trackname=$(echo $ligne | awk -F"=" '{ print $2 }')
#echo "-----------------------"
#echo "artiste=$artist"
#echo "genre=$genre"
#echo "tracknum=$i"
#echo "title=$trackname"
#echo "album=$album"
#echo "-----------------------"
#echo "${trackname} $i";
# Extraction cd => wav
$cdtowav $cdtowavparams $i "$trackname"
if [ "$ogg" = "ok" ]
then
# Rip en ogg
$wavtoogg $wavtooggparams \
--artist "$artist" \
--genre "$genre" \
--tracknum "$i" \
--title "$trackname" \
--album "$album" \
"$trackname" -o "$i - ${trackname}.ogg"
fi
if [ "$mp3" = "ok" ]
then
# Rip en mp3
lame "$trackname" "$i - ${trackname}.mp3"
numgenre=$(id3v2 -L | awk -F': ' -v genre="rock" '{ if(tolower($2)==tolower(genre)) print substr($1,2,length($1)); }')
# Mise a jour tag
id3v2 -a "$artist" -A "$album" -g "$numgenre" -T "$i" -t "$trackname" "$i - ${trackname}.mp3"
fi
# Efface ficheir wav
\rm "$trackname";
i=$(($i+1));
done < ${tmp}
# Efface fichier temporaire
\rm -f "${tmp}"




clics


Commentaires
Pas mal ton travail , dommage que tu n'ai pas eu de commentaire depuis !
En voulà un .
Merci pour ton travail .