#!/usr/bin/perl
#DATA: 17/03/2003
#AUTORE: Vittorio Zuccala' <nathanvi@nathanvi.it>
#LICENZA: GPL
#INSTALLAZIONE Copia lo script nella cartella /bin come utente root 'cp Mp3WavOgg.txt /bin/Mp3WavOgg.pl'
# Donagli i permessi 'chmod 511 /bin/Mp3WavOgg.pl'
#FUNZIONE: Conversione file audio Mp3, Ogg, Wav
#USO: Mp3WavOgg.pl DirDaConvertire [TipoConversione] [(yes||no)]
#PARAMETRI: DirDaConvertire: E' la directory nella quale ci sono i file audio da convertire
# Ricorda di terminare con uno slash!!
# TipoConversione: Sono due lettere maiuscole (se si inseriscono in minuscolo
# il programma le converte in automatico in maiuscole). Queste
# lettere indicano il tipo di conversione che si desidera:
# MW --> Mp3 to Wav
# OW --> Ogg to Wav
# WO --> Wav to Ogg
# MO --> Mp3 to Ogg
# yes||no: Inserisci yes o no a seconda che desideri che vengano eliminati
# i files che dovevi convertire dopo la conversione.
# Questo parametro e' particolarmente utile sul "yes" se non si
# dispone di un hard disk molto grande.
#COMMENTI: Questo programma si puo' inserire nella cartella /bin ed eseguibile su sistemi linux.
# Essendo un sostenitore del movimento Open Source spesso mi seccava il fatto che i miei
# amici mi spedissero file Mp3. Anche la maggior parte dei file musicali su internet e'
# in tale formato. Questo programma e' nato per convertire in formato Ogg (ovvero l'analogo
# open del mp3) i file musicali. Il programma offre anche altri tipi di conversioni...
#DIPENDENZE: Per utilizzare il programma, deve essere installato sulla propria macchina
# oltre all'interprete "perl", il programma "mpg123" per convertire da mp3 a wav,
# "oggenc" e "oggdec" per la conversione da e a ogg <--> wav.
#Verifica l'inserimento della cartella.
if($ARGV[0]=~/\//){
$doppia=0;
uc($ARGV[1]);
lc($ARGV[2]);
if($ARGV[1] eq "MW" || $ARGV[1] eq "OW" || $ARGV[1] eq "WO" || $ARGV[1] eq "MO"){
$dirUSARE=$ARGV[0];
$conv=uc($ARGV[1]);
SCELTA:
{
$scelta=1, last SCELTA if($conv eq "MW");
$scelta=2, last SCELTA if($conv eq "OW");
$scelta=3, last SCELTA if($conv eq "WO");
$scelta=4, last SCELTA if($conv eq "MO");
}
if($ARGV[2] eq "yes" || $ARGV[2] eq "no"){
$cancello=$ARGV[2];
}
else{
do{
print "\nEventualmente puoi specificare se desideri cancellare i file temporanei(yes | no)\n\n";
print "Desideri cancellare i file temporanei? (yes | no)\n";
chomp($cancello=<STDIN>);
}while($cancello ne "yes" && $cancello ne "no");
}
}
else{
$dirUSARE=$ARGV[0];
do{
print "\n\n\nOltre al path puoi inserire le lettere in maiuscolo della conversione...\n";
print "Ad esempio se vuoi convertire da Wav a Ogg puoi scrivere: Mp3WavOgg.pl path WO\n";
print "Come ulteriore parametro puoi specificare se vuoi cancellare i file temporanei (yes | no)";
print "\nInserisci il numero della conversione che vuoi eseguire:\n";
print "1) MP3 --> WAV\n";
print "2) OGG --> WAV\n";
print "3) WAV --> OGG\n";
print "4) MP3 --> OGG\n";
print "5) WAV --> MP3\n";
chomp($scelta=<STDIN>);
}while($scelta!=1 && $scelta!=2 && $scelta!=3 && $scelta!=4 && $scelta!=5);
do{
print "\n\n\nEventualmente puoi specificare se desideri cancellare i file temporanei(yes | no)\n";
print "Desideri cancellare i file temporanei? (yes | no)\n";
chomp($cancello=<STDIN>);
}while($cancello ne "yes" && $cancello ne "no");
}
&AssegnoVariabili;
&Converto;
print "FINE CONVERSIONE\n\n";
}
else{
print "\n\n\nUTILIZZO: Mp3WavOgg.pl path/ [tipo_conversione] [yes | no]\n\n";
print "Il path(SEGUITO DA UNO SLASH /) e' dove sono inseriti i files da convertire\n";
print "tipo_conversione sono due lettere: WO OW MW MO (Wav-Ogg Ogg-Wav Mp3-Wav Mp3-Ogg)\n";
print "l'ultimo parametro indica se vuoi cancellare i file prima della conversione ormai vecchi(yes || no)\n\n\n";
}
sub AssegnoVariabili
{
if($scelta==1){
$extINIZIO="mp3";
$extFINE="wav";
}
elsif($scelta==2){
$extINIZIO="ogg";
$extFINE="wav";
}
elsif($scelta==3){
$extINIZIO="wav";
$extFINE="ogg";
}
elsif($scelta==4){
$extINIZIO="mp3";
$extFINE="wav";
}
elsif($scelta==5){
$extINIZIO="wav";
$extFINE="mp3";
}
else{
print "\n\nScelta NON disponibile!!\n\n\n";
}
}
sub Converto
{
print "\nINIZIO CONVERSIONE FILE $extINIZIO TO $extFINE!! $cancello\n\n";
opendir(DIR,"$dirUSARE");
@files=readdir(DIR);
sort(@files);
foreach $file (@files){
if($file=~/\.$extINIZIO$/){
($nome,$extINIZIO)=split(/\./,$file);
print "STO CONVERTENDO $nome.$extINIZIO\n";
print "Aspetta....\n";
$IN=join('.',($nome,$extINIZIO));
$OUT=join('.',($nome,$extFINE));
$IN=~s/ /\\ /g;
$IN=~s/\(/\\\(/g;
$IN=~s/\)/\\\)/g;
$IN=~s/\'/\\\'/g;
$OUT=~s/ //g;
$OUT=~s/\(//g;
$OUT=~s/\)//g;
$OUT=~s/\_//g;
$OUT=~s/\'//g;
if($scelta==1 && $cancello eq "yes" && $doppia){
system("mpg123 -w $dirUSARE/$OUT $dirUSARE/$IN");
system("rm -f $dirUSARE/$IN");
system("oggenc $dirUSARE/$OUT");
system("rm -f $dirUSARE/$OUT");
$extINIZIO="mp3";
}
elsif($scelta==1 && $cancello eq "yes" && !$doppia){
system("mpg123 -w $dirUSARE/$OUT $dirUSARE/$IN");
system("rm -f $dirUSARE/$IN");
}
elsif($scelta==1 && $cancello eq "no"){
system("mpg123 -w $dirUSARE/$OUT $dirUSARE/$IN");
}
elsif($scelta==2 && $cancello eq "yes"){
system("oggdec $dirUSARE/$IN");
system("rm -f $dirUSARE/$IN");
}
elsif($scelta==2 && $cancello eq "no"){
system("oggdec $dirUSARE/$IN");
}
elsif($scelta==3 && $cancello eq "yes"){
system("oggenc $dirUSARE/$IN");
system("rm -f $dirUSARE/$IN");
}
elsif($scelta==3 && $cancello eq "no"){
system("oggenc $dirUSARE/$IN");
}
elsif($scelta==4){
$doppia=1;
&DoppiaConversione;
}
elsif($scelta==5 && $cancello eq "yes"){
system("lame $dirUSARE/$IN");
system("rm -f $dirUSARE/$IN");
}
elsif($scelta==5 && $cancello eq "no"){
system("lame $dirUSARE/$IN");
}
print "File $IN convertito!!\n\n\n\n\n\n\n";
}
}
closedir(DIR);
}
sub DoppiaConversione
{
$scelta=1;
&AssegnoVariabili;
&Converto;
$scelta=3;
&AssegnoVariabili;
&Converto;
}
--
VittorioZuccala - 06 Jan 2005