domingo, 27 de fevereiro de 2011

Dicas de Programação: Como ler o ID3v1 tag de um arquivo MP3 em Perl

Agora uma dica em Perl :)

Para ler o ID3v1 tag de um arquivo MP3 em Perl, você pode usar o módulo MP3:Tag (baixando do cpan), ou usar a seguinte dica:

1o.) Abrir o arquivo para leitura.

#!/usr/bin/perl

use strict;
use warnings;

open(my $in, '<', 'teste.mp3') or die 'Arquivo não encontrado';

2o.) Colocar todo o conteúdo dele em uma variável.

my $data = join('', <$in>);

3o.) Verificar se nos dados do arquivo existe a TAG+ ou TAG

if ($data =~ /TAG\+/) {
...
}elsif ($data =~ /TAG/) {
...
}

4o.) Se for TAG+, a gente pega os 227 ultimos bytes do arquivo e separa as informações.

$data = substr($data, length($data) - 227);
(my $header, my $title, my $artist, my $album, my $speed, my $genre, my $start_time, my $end_time) = unpack('a4a60a60a60a1a30a6a6', $data);

5o.) Se for TAG, a gente pega os 128 ultimos bytes do arquivo e separa as informações (igual, que nem :P)

$data = substr($data, length($data) - 128);
(my $header, my $title, my $artist, my $album, my $year, my $comment, my $genre) = unpack('a3a30a30a30a4a30a1', $data);

6o.) Depois, fechamos o arquivo

close($in);

Hum... Acho que é mais fácil baixar o módulo :P

Até a próxima!

Nenhum comentário: