Perl y mp3info


Bajé unos mp3 de rolas de los 90’s, pero sucede que no traía ninguna informacion en los metadatos, pero la información necesaria estaba en el nombre del archivo, así que me puse a hacer un script que sacara los datos del nombre de archivo para imprimir la linea necesaria para ejecutar en shell y actualizar de golpe todos los archivos, pero resulta que varias canciones tenían una comilla, y cositas por el estilo, por lo cual había que escapar los caracteres correctamente para poder ejecutar el dichoso “script”, y pues lo lógico, si estas usando perl, seguro debe haber un módulo para actualizar la información de mp3, y pues lo busqué y simplemente sustituyendo una linea por otra ya pude actualizar los tags de los mp3, pa poder subirlos al aipo y que tengan sentido en el astuto sistema de organización del mismo 🙂

Seguro hay una mejor manera de “sacar la información” de la cadena (nombre del archivo), pero no la conozco :P, así que esto funciona, y bien.

#!/usr/bin/perl
use MP3::Info;
# Declare the subroutines
sub trim($);

open(TT, "tt.txt");
while( $record = <TT> ) {
chop $record;
@cols = split(/-/, $record);
$n = trim($cols[0]);
$a = trim($cols[1]);
@tmp = split(/\(/,$cols[2]);
$t = trim($tmp[0]);
@tmp2 = split(/\)/,$tmp[1]);
$y = $tmp2[0];
set_mp3tag($record, $t, $a, "Top 100 90's", $y, "GaRaGeD", "Pop",$n);
}
close(TT);
exit 0;

# Perl trim function to remove whitespace from the start and end of the string
sub trim($)
{
my $string = shift;
$string =~ s/^\s+//;
$string =~ s/\s+$//;
return $string;
}
# Files in tt.txt are in this format
# 001 - Nirvana - Smells Like Teen Spirit (1992).mp3