[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: