Re: grip & cdparanoia
Jean-Philippe Caruana a écrit :
Pour info j'ai créé un petit script Perl qui me permet de ripper des cd
audio et place automatiquement les mp3 dans des dossiers du genre :
genre/artiste/album. Si ça interresse...
tu peux tjs faire péter, sit tu veux bien...
Sauf que j'ai un peu honte : aucune gestion des erreurs, et sans doute
beaucoup d'erreurs de programation. Mais enfin je débute en Perl, alors
pas taper svp !
PS1 : je le mets en fichier joint.
PS2 : tous les commentaires, suggestions, critiques sont les bien venus.
Ça m'apprendra...
--
Nicolas Roudninski
nroudninski@wanadoo.fr
#!/usr/bin/perl -w
use strict;
use File::Basename;
use File::Spec;
use Term::ReadKey;
use CDDB_get qw ( get_cddb );
#######################################################################
# cdripnic - rippe les cd audio
#######################################################################
my $dvd_dev = "/dev/hdc";
my $ligne;
my $title;
my $pid;
my @sortie;
my $repmp3 = "/home/media/music/"; # ne pas oublier le "/" a la fin !
my $wav;
my $mp3;
my $cdwav = "cdda2wav -L 1 -D $dvd_dev ";
my $cdrip;
my $encode;
#######################################################################
# Traitement des parametres de la ligne de commande
system "eject -t";
#######################################################################
# Obtention des donnees cddb
my %config_cddb;
# following variables just need to be declared if different from defaults
$config_cddb{CDDB_HOST}="freedb.freedb.org"; # set cddb host
$config_cddb{CDDB_PORT}=8880; # set cddb port
$config_cddb{CDDB_MODE}="cddb"; # set cddb mode: cddb or http
$config_cddb{CD_DEVICE}="/dev/cdrom"; # set cd device
# user interaction welcome?
$config_cddb{input}=0; # 1: ask user if more than one possibility
# 0: no user interaction
# get it on
my %cd=get_cddb(\%config_cddb);
unless(defined $cd{title}) {
die "no cddb entry found";
}
# do somthing with the results
print "Artiste : $cd{artist}\n";
print "Album : $cd{title}\n";
print "Categorie : $cd{cat}\n";
print "cddbid: $cd{id}\n";
print "trackno: $cd{tno}\n";
my $n=1;
foreach my $i ( @{$cd{track}} ) {
print "Titre $n : $i\n";
$n++;
}
#######################################################################
# Creation du repertoire de destination
# variables
my $artiste = $cd{artist};
$artiste =~ s/ /_/g;
my $album = $cd{title};
$album =~ s/ /_/g;
#chop($album);
my $cat = $cd{cat};
$cat =~ s/ /_/g;
# creation rep
my $outdir = $repmp3.$cat;
# test existence rep categorie
if ( -e $outdir ) {
chdir $outdir;
} else {
mkdir $outdir or die "Impossible de créer le répertoire destination : $!";
}
$outdir = $outdir."/".$artiste;
if ( -e $outdir ) {
chdir $outdir;
} else {
mkdir $outdir or die "Impossible de créer le répertoire destination : $!";
}
chdir $outdir;
$outdir = $outdir."/"."$album";
print "Répertoire de destination : $outdir\n";
mkdir $outdir or die "Impossible de créer le répertoire destination : $!";
#######################################################################
# Rip du CD
chdir $outdir;
$n = 0;
my $t = $n + 1;
foreach my $i ( @{$cd{track}} ) {
$t = $n + 1;
$i =~ s/\(|\)|\'/-/g;
print "Titre $t : $i\n";
$i =~ s/ /_/g;
print "t vaut : $t\n";
if ( $t < 10 ) {
$t = "0".$t;
}
$i = "[$t]_".$i."\n";
print $i;
system "$cdwav -t $t $i";
chop($i);
$wav = "$i".'.wav';
$mp3 = "$i".'.mp3';
$n++;
$t++
}
#unlink glob "*.inf" or warn "Impossible de supprimer le fichier : $!";
#system `eject /dev/hdc`;
#######################################################################
# Encodage et id3tag des fichiers
#chdir $outdir;
$t = 1;
my $j;
my $k;
my $inffile;
my @inffile;
foreach my $j ( @{$cd{track}} ) {
# ouverture du fichier inf en lecture
$inffile = "$j".'.inf';
open TAGINFO, "<$inffile" or warn "Impossible d'ouvrir le fichier $j !";
while (<TAGINFO>) {
chomp;
if (/Albumperformer/) { @inffile = split /=/,$_; $artiste = $inffile[1]; }
if (/Albumtitle/) { @inffile = split /=/,$_; $album = $inffile[1]; }
if (/Tracktitle/) { @inffile = split /=/,$_; $title = $inffile[1]; }
}
close $inffile;
$k = $j;
$j =~ s/\(|\)|\'/-/g;
$wav = "$j".'.wav';
$mp3 = "$j".'.mp3';
system `lame $wav --tt $title --ta $artiste --tl $album --tn $t --tg $cat $mp3`;
unlink $wav;
$t++
}
unlink glob "*.inf" or warn "Impossible de supprimer le fichier : $!";
unlink "audio.cdindex" or warn "Impossible de supprimer le fichier : $!";
unlink "audio.cddb" or warn "Impossible de supprimer le fichier : $!";
system "eject /dev/hdc";
#######################################################################
# Creation de la liste m3u
Reply to: