PDA

Visualizza la versione completa : [Bash-Script] convertire da mpc a mp3


GNUbie
14-03-2005, 19:10
devo convertire una serie di file mpc a mp3.
tempo fa un amico mi fece uno scriptino facile facile ke faceva benissimo il suo lavoro... ora ho perso lo script e ho provato a farlo da solo...ma essendo una schiappa assurda non riesco a venirne fuori

per convertire un file da mpc a mp3 uso mppdec che fa il passaggio mpc-wav, e poi lame.
il problema è che mppdec richiede sia il nome del file di input (e potrebbe andar bene un generico *.mpc) sia l'output che però deve essere specifico (*.wav non basta)

il codice molto molto molto elementare che ho provato è il seguente



#!/bin/bash

FILEMPC=*.mpc

for i in *.mpc
do
FILEWAV=$FILEMPC.wav
mppdec $FILEMPC $FILEWAV
done


naturalmente si presenta il problema di cui sopra, il nome del file output wav deve essere specificato, così facendo invece lui decodifica l'mpc nel generico *.mpc.wav

essendo lo script molto semplice da realizzare (da quel che ricordo) e dato che googlando non ho trovato niente se non enormi guide (e io di questo script ne ho bisogno nell'immediato...) chiedo a voi una mano...mi basterebbe anche la soluzione per il passaggio mpc-wav...dopo dovrebbe essere facile e mi arrangio da solo.

grazie mille a chi avrà lo sbattimento (spero minimo) di aiutarmi.

M4rko
14-03-2005, 20:01
una cosa del genere puo andare?

for file in `ls *.mpc`;
do
mppdec $file $file.wav
done

GNUbie
14-03-2005, 20:17
Originariamente inviato da M4rko
una cosa del genere puo andare?

for file in `ls *.mpc`;
do
mppdec $file $file.wav
done

no...stesso problema...il nome del file non è specificato in modo corretto

gianiaz
14-03-2005, 20:35
mmpdec $file `echo $file | sed s/.wav//`


cosi dovrebbe andare...

GNUbie
14-03-2005, 20:50
Originariamente inviato da gianiaz


mmpdec $file `echo $file | sed s/.wav//`


cosi dovrebbe andare...

no non va neanche così...credo che sarebbe meglio specificare il nome completo del file anche per quello mpc...perchè se uso quel codice mi crea tanti file wav, uno con il numero della canzone e uno col titolo...ovviamente vuoti.
non ci capisco nienteeeee :oVVoVe:

Fatur
14-03-2005, 21:14
Anche a me serviva una cosa del genere, e ho fatto uno script, però in perl, che fa la conversione di tutti i file della directory nella quale lo chiami.
Se ti può servire...

è lungo perchè ci ho messo tutti i colori e altre cose inutili... :D:D:D



#!/usr/bin/perl

use Term::ANSIColor;

my $mpcidec="mppdec";
my $mp3enc="lame";
my @list=`ls *.[mM][pP][cC] 2>/dev/null`;
my $name="";
my $mpc="";
my $mp3="";
my $wav="";
my $def="192";

if ( ($ARGV[0] == "-h" ||$ARGV[0] == "--help" ) && $#ARGV == 0 )
{
print "mpc2mp3 converts mpc to mp3\nusage: $0 [options]\n\noptions:\n\t-b <bitrate>\tmp3 bitrate encoding (default 192)\n";
print "\t-h\tprints this help\n";
exit 0;
}

if ( $ARGV[0] == "-b" && $#ARGV == 1 )
{
$def=$ARGV[1];
}

if ($#list == -1)
{
print "Sorry, no mpc files in this direectory\n";
exit 0;
}

my $parameters="-b $def";

system(qq(banner "Mpc 2 Mp3"));

for ($i=0;$i<=$#list;$i++)
{
$mpc=$list[$i];
$_=$mpc;
$name="$1" if ( /^(.*).mpc$/);
$mpc=qq($name.mpc);
$wav=qq($name.wav);
$mp3=qq($name.mp3);

print color("yellow"),
"...decoding ",
color("red"),
"\"$mpc\"",
color("yellow"),
" to ",
color("red"),
"\"$wav\"\n",
color("reset");

system(qq($mpcidec "$mpc" "$wav")); # or die "Cannot execute $mpcidec $mpc $wav\n";
system(qq(rm -rf "$mpc"));


print color("green"),
" -",
color("yellow"),
"*",
color("green"),
"- decoded",
color("red"),
" mpc ",
color("green"),
"to",
color("red"),
" wav\n",
color("reset");
print color("yellow"),
"...encoding ",
color("red"),
"\"$wav\"",
color("yellow"),
" to ",
color("red"),
"\"$mp3\"\n",
color("reset");

system("$mp3enc $parameters \"$wav\" \"$mp3\" ");# or die "Cannot execute $mp3enc $wav $mp3\n";
system(qq(rm -rf "$wav"));

print color("green"),
" -",
color("yellow"),
"*",
color("green"),
"- encoded",
color("red"),
" wav ",
color("green"),
"to",
color("red"),
" mp3\n",
color("reset");

print " ...",
color("green"),
"Done",
color("reset"),
"!\n\n";
}
exit 0;

GNUbie
14-03-2005, 21:27
grazie infinite Fatur!! non ci capisco molto di perl ma almeno va!!

se qualcuno comunque vuole cimentarsi con la bash...sarei ben lieto di provare gli script!

p.s. Fatur ma è Zappa quello nell'avatar?

Fatur
14-03-2005, 21:36
si, è zappa!

Cmq, imparato il perl, il bash scripting mi sta un po' stretto :)

Loading