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
[EMAIL PROTECTED]

#!/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

Répondre à