05/07/2009 - Linux Feed

LINUX « E-Pillole



Soluzione piccolo problema con mp32ogg

Post inserito il 29/08/2007 da Fede in Problem Solving

Dopo essermi finalmente deciso ad utilizzare mp32ogg per convertire tutti i miei .mp3 in .ogg ho quasi subito riscontrato un problemino davvero banale e di facile risoluzione...anche per chi, come me, di perl ne conosce solo l'esistenza :)

In sintesi, a causa di questo "pezzo" di codice:

sub findfunc() {
	$file = $_;
	($name,$dir,$ext) = fileparse($file,'\.mp\d');
	if((/\.mp\d/,$ext) && -f $file) {
		&checkfile($file);
	}
}

vengono intercettati solo ed esclusivamente i files con estensione .mp3 e di conseguenza ignorati eventuali .mP3 / .Mp3 / .MP3

mp32ogg fix

Quello che manca, e che andremo a fixare, è quindi una regular expression all'interno della routine fileparse() che traformi mp32ogg in uno script completamente case-insensitive.

Vediamo come...

Molto semplicemente, basterà applicare al file /usr/bin/mp32ogg questa "patch":

--- mp32ogg	2006-12-08 09:45:30.000000000 +0100
+++ mp32ogg	2007-08-29 01:11:33.000000000 +0200
@@ -148,8 +148,8 @@
 
 sub findfunc() {
 	$file = $_;
-	($name,$dir,$ext) = fileparse($file,'\.mp\d');
-	if((/\.mp\d/,$ext) && -f $file) {
+	($name,$dir,$ext) = fileparse($file,'\.[mM][pP]\d');
+	if((/\.[mM][pP]\d/,$ext) && -f $file) {
 		&checkfile($file);
 	}
 }
@@ -217,7 +217,7 @@
 			warn "not enough ID3 info to rename, reverting to old filename.\n";
 		}
 
-		($filename,$dirname,$ext) = fileparse($mp3file,'\.mp\d');
+		($filename,$dirname,$ext) = fileparse($mp3file,'\.[mM][pP]\d');
 	}
 	else {
 		$filename =~ s/\%a/$info->{ARTIST}/g;

Supponendo quindi che il file contenente la "patch" si chiami fix_mp32ogg.diff e risieda sul vostro Desktop, sarà sufficiente digitare:

sudo patch /usr/bin/mp32ogg ~/Desktop/fix_mp32ogg.diff

e niente più problemi con le estensioni dei nostri mp3 da convertire in ogg!!

Ovviamente, il "bug" è stato già segnalato sia in Debian che in Ubuntu, e a breve riceveremo quasi sicuramente un bell'aggiornamento che andrà a rimpiazzare la nostra modifica rudimentale :)

Nel frattempo, accontentiamoci di una patch fatta in casa...


Post letto 1769 volte | Commenti (7) | Bookmark   del.icio.us    segnalo


Commento postato da elcamilo il 29/08/2007
mi sarebbe dispiaciuto non essere il primo a ringraziarti,
dunque grazie!

ho notato che spesso il file ogg è più grande dell'originale, do u?

per l'aggiornamento mainstream non sarei così ottimista:
http://faceprint.com/code/

come funziona la patch, in genere? mp32ogg se la va a leggere ogni volta che lo usi o lo hai proprio modificato? se cancello il file .diff dal desktop torna tutto come prima?

ciao

Commento postato da Fede il 29/08/2007
@elcamilo

la grandezza del file ogg dipende dalla qualità con cui vengono convertiti gli mp3...

la scala va da 1 a 10 e se ricordo bene:

5 corrisponde piò o meno a 160kbps

io li sto convertendo *tutti* con qualità 6 (192kbps) e fino ad ora (più o meno 40gb completati), siccome molti mp3 superavano i 192kbps il totale in ogg è minore rispetto al totale in mp3 :)

>>come funziona la patch, in genere?

tranquillo, il file .diff sul desktop puoi anche eliminarlo o spostarlo dove ti pare...

/usr/bin/mp32ogg è stato modificato è puoi vederlo tu stesso aprendo lo script con un editor di testo qualsiasi:

gedit /usr/bin/mp32ogg

tutto ok vero...?? funziona...??

ciaociao

Commento postato da Fede il 29/08/2007
@elcamilo

>>per l'aggiornamento mainstream non sarei così ottimista:

dimenticavo....per l'aggiornamento non c'è da preocuparsi...arriverà ;)

anche se l'autore dello script non accetta patch, essendo rilasciato sotto licenza artistica, ci penseranno i developer di Debian e/o Ubuntu :)

ciaociao

Commento postato da elcamilo il 31/08/2007
>>tutto ok vero...?? funziona...??

si, funziona a dovere: copia i tag e cancella il vecchio..potenza del terminale, giusto?!

a volte però mi da un errore, per intere cartelle non riesce a determinare...ecco:

Could not determine MP3 version, aborting at /usr/bin/mp32ogg line 169.

in 40Gb nn ti è mai successo? ciao

Commento postato da Fede il 01/09/2007
@elcamilo

>>Could not determine MP3 version, aborting at /usr/bin/mp32ogg line 169.

già...questo è l'altro bug che è stato segnalato su launchpad :(

in pratica:

# Sanity checking: Is this file really an MP3 file?
die "Could not determine MP3 version, aborting" if ($fileinfo->{VERSION}=="");

se ha l'estensione .mp3 ma in realtà non è un MP3, a causa di quel *die* esce e stampa quel messaggio di errore :(

la soluzione sarebbe di skippare, ma purtroppo non conoscendo perl nello specifico non ho idea di come si possa fare :(

>>in 40Gb nn ti è mai successo? ciao

2 canzoni...quindi 2 volte :(

ciaociao

Commento postato da emilator il 08/12/2007
Mitico, ottima patch! Grazie della pillola, uso regolarmente mp32ogg, finalmente posso convertire velocemente anche il resto dei file. Playogg, sempre!

Commento postato da Fede il 10/12/2007
@emilator

mi fa piacere constatare di non essere l'unico a non avere più mp3 :)

pensavo di essere ormai irrecuperabile come il Sig. Stallman :)

fiuuuu...

ciaociao

Commenta Post

(opzionale)
(opzionale)


Codice antispam: Codice antispam