Manipulando Tags ID3 Com O eyeD3

Introdução

O eyeD3 é um script escrito em Python com a finalidade de processar tags ID3 que são responsáveis por armazenar as informações de uma música como nome da música, nome do artista, nome do álbum e também capa do álbum. O primeiro passo é instalar esse programa:

No Fedora

$ sudo yum install python-eyed3.noarch

Ubuntu [3]

$ sudo apt-get install eyed3

Para instalá-lo em outras distribuições confira o link [2].

Para testar se a instalação foi feita corretamente, digite:

$ eyeD3 --help

Versões das tags ID3

Atualmente existem três versões dessas tags: ID3v1, ID3v2.3 e ID3v2.4. A primeira é bastante simples e raramente usada para fins gerais pois fornece um número limitado de tags (não é possível inserir imagem do álbum, por exemplo).

As outras duas são semelhantes, sendo que a ID3v2.4 oferece uma opção maior de tags e também trabalha melhor com caracteres UTF-8. Players atuais já oferecem suporte a essa versão mais nova e por isso será ela que usaremos aqui.

Inserindo minhas primeiras tags

Obtenha um arquivo de música qualquer para que possamos testar as opções desse programa. O meu arquivo se chama musica.mp3. Para inserirmos o nome do artista ou banda, digitamos:

$ eyeD3 --artist='Nome do artista' musica.mp3
ou
$ eyeD3 --artist 'Nome do artista' musica.mp3

A opção –artist é responsável por setar o nome da banda. A saída do comando mostrará as tags já no arquivo como também a tag inserida.

Agora vamos inserir outras informações, como o número da faixa, nome do álbum e da música e o ano em que o álbum foi gravado:

$ eyeD3 --track 05 musica.mp3
$ eyeD3 --album 'Nome do album' musica.mp3
$ eyeD3 --title 'Nome da musica' musica.mp3
$ eyeD3 --genre 'Gênero musical' musica.mp3
$ eyeD3 --recording-date 1999 musica.mp3

Como podemos verificar se as tags foram inseridas corretamente? Um modo é utilizando o próprio eyeD3 sem parâmetros:

$ eyeD3 musica.mp3
musica.mp3      [ 16.80 MB ]
-------------------------------------------------------------------------------
Time: 07:20     MPEG1, Layer III        [ 320 kb/s @ 44100 Hz - Joint stereo ]
-------------------------------------------------------------------------------
ID3 v2.4:
title: Nome da musica
artist: Nome do artista
album: Nome do album
recording date: 1999
track: 5                genre: Gênero musical (id None)
-------------------------------------------------------------------------------

Observe que o eyeD3 já utilizou a versão ID3v2.4 como padrão.

Bem, outro modo de verificarmos nossas tags é utilizando seu player de áudio favorito. Se as tags estão todas corretas então ele será capaz de mostrá-las:

tags inseridas com sucesso

tags inseridas com sucesso

Inserindo imagem de capa

A opção mais interessante do programa é aquela responsável por inserir a imagem da capa do álbum . Isso é feito através da opção –add-image. Para usá-la devemos, primeiramente, obter a imagem do álbum:

Imagem da capa do álbum

Imagem da capa do álbum (folder.png)

Outra coisa que devemos saber é se a imagem representa a parte da frente (capa) ou de trás (verso). É muito frequente usarmos somente a capa do álbum que é representada pela opção FRONT_COVER. Vamos ver como fica o comando final:

$ eyeD3 --add-image folder.png:FRONT_COVER musica.mp3

Vamos verificar se o player reconheceu a imagem:

Player com imagem da capa

Player com imagem da capa

Basicamente é isso. Um resumo das opções mais usuais você vê abaixo:

+------------------+---------------------------------------------+
|     --track      |               Numero da faixa               |
+------------------+---------------------------------------------+
|    --artist      |           Nome do artista ou banda          |
+------------------+---------------------------------------------+
|     --album      |                Nome do album                |
+------------------+---------------------------------------------+
|     --title      |           Nome (titulo) da musica           |
+------------------+---------------------------------------------+
|--recording-date  |         Data de gravação do album           |
+------------------+---------------------------------------------+
|   --add-image    | Imagem do album (use FRONT_COVER para capa) |
+------------------+---------------------------------------------+

obs: –recording-date é o equivalente a opção –year das versões anteriores do eyeD3. A opção –year foi retirada do programa e ela indicava a data de lançamento do álbum. Então, para diversos players, a tag setada por –recording-date será lida como data de lançamento.

Remoção de tags

Sempre é útil remover tags ID3 principalmente quando há duas versões delas no mesmo arquivo. Para remover tags da versão 1 do padrão ID3 digite:

$ eyeD3 --remove-v1 musica.mp3

Já para remover a segunda versão:

$ eyeD3 --remove-v2 musica.mp3

É possível também remover todas as tags ID3, sem distinção de versão:

$ eyeD3 --remove-all musica.mp3

Conversão entre versões

Imagine que você tenha um arquivo usando tags ID3v1.x e queira transformá-las para uma versão mais atual, como a ID3v2.4. Para isso, basta digitar:

$ eyeD3 --to-v2.4 arquivo.mp3

Repare que não importa qual versão de tags está presente no arquivo, seja ID3v1.x, ID3v2.3, pois no final, ela será transformada para a versão ID3v2.4.

Outras opções de conversão também estão disponíveis, confira o –help do programa para isso. Tenha em mente que converter um formato mais novo para o antigo, isso é ID3v2.x para ID3v1, poderá ocasionar em perda de informação já que o formato antigo fornece um escopo menor de tags.

Exemplo de inserção

Ora ou outra você encontrará uma música sem o devido tagueamento correto e terá que realizar essa tarefa na mão. Aqui apresentarei como você deve se proceder.

O primeiro passo é conhecer as informações básicas da música: nome do artista, do álbum, da música, número da faixa e data de lançamento e imagem do álbum. Geralmente isso é facilmente obtido usando-se a wikipedia ou alguma página semelhante. Informações sobre músicas mais “undergrounds” podem ser encontradas na last.fm.

Usarei as informações da wikipedia em [4] para taguear uma música. Veja a tabela abaixo:

+-----------------+---------------------+
| Artista/Banda   |      Axiom Funk     |
+-----------------+---------------------+
| Nome do Album   |    Funkcronomicon   |
+-----------------+---------------------+
| Nome da Musica  |     Pray My Soul    |
+-----------------+---------------------+
|Numero da Faixa  |          8          |
+-----------------+---------------------+
|     Genero      |         Funk        |
+-----------------+---------------------+
|      Ano        |         1995        |
+-----------------+---------------------+
|Imagem do Album  | Funkcronomicon.jpg  |
+-----------------+---------------------+

O nome da música no meu HD é pray_my_soul.mp3 e vou inserir todos os dados da tabela nesse arquivo:

$ eyeD3--artist='Axiom Funk' \
--album='Funkcronomicon' \
--title='Pray My Soul' \
--track=8 \
--genre=Funk \
--recording-date=1995 \
--add-image=Funkcronomicon.jpg:FRONT_COVER pray_my_soul.mp3

-------------------------------------------------------------------------------
Time: 05:11 MPEG1, Layer III [ 256 kb/s @ 44100 Hz - Stereo ]
-------------------------------------------------------------------------------
Setting artist: Axiom Funk
Setting album: Funkcronomicon
Setting title: Pray My Soul
Setting track: 8
Setting track genre: Funk
Setting year: 1995
Adding image Funkcronomicon.jpg
Converting tag to ID3 version v2.3
Writing tag...
ID3 v2.3:
title: Pray My Soul artist: Axiom Funk
album: Funkcronomicon year: 1995
track: 8 genre: Funk (id 5)

FRONT_COVER Image: [Size: 17294 bytes] [Type: image/jpeg]
Description:

Separei as opções por uma nova linha simplesmente para melhorar a visualização, mas elas podem ser digitadas uma após as outras. Por fim, para verificarmos se as tags foram corretamente adicionadas:

Facilitando sua vida: dtag.sh

Se você passa alguma parte de seu tempo consertando tags de música então verá que essa tarefa entediante se resume na seguinte situação: para todas as músicas de um álbum, as informações como nome do artista, nome do álbum, gênero e imagem do álbum são as mesmas para todas as músicas. O que muda entre uma música e outra é o número da faixa e, obviamente, o nome da música.

Para automatizar esse processo, criei um script chamado de dtag.sh [7] que, dado um arquivo texto chamado de info.txt, ele consegue taguear todas as músicas do diretório de modo fácil e prático.

Um arquivo info.txt se parece com o seguinte:

$ cat info.txt
album:Takin' Off
artist:Herbie Hancock
year:1962
genre:Jazz
add-image:folder.jpg

Watermelon Man
Three Bags Full
Empty Pockets
The Maze
Driftin'
Alone and I

as informações iniciais, separadas com dois pontos, são as que estarão em todos os arquivos do álbum. Após a linha em branca obrigatória, temos os nomes das músicas do álbum, de tal modo que a sua posição representa o número da faixa (ex: segundo nome = faixa 02)

Por exemplo, para taguear todas as músicas do álbum “Takin’ Off” do Herbie Hancock basta copiar esse arquivo info.txt para a pasta do álbum e executar o script como se segue:

$ cp info.txt Musicas/Herbie_Hancock/Takin_Off
$ ./dtag.sh Musicas/Herbie_Hancock/Takin_Off

Se achou o script útil então não deixe de baixá-lo na páginas de Downloads. Veja também mais informações sobre ele em [7].

Renomeando arquivos de acordo com as tags

Uma opção interessante é a –rename que aceita um formato para renomear o arquivo de entrada. Nos exemplos citados, usamos o áudio pray_my_soul.mp3 que embora esteja devidamente etiquetado, o seu nome não diz muita coisa sobre ele. Usando a opção –rename podemos renomeá-lo usando os valores de suas próprias tags. Veja:

$ eyeD3 --rename='$time:num-$artist-$album-$title' pray_my_soul.mp3
Renaming file to '08-Axiom Funk-Funkcronomicon-Pray My Soul'

O arquivo pray_my_soul.mp3 não existe mais, pois foi renomeado como 08-Axiom Funk-Funkcronomicon-Pray My Soul.mp3

O significado de cada formato se encontra na tabela:

+------------+-----------------------+
|$track:num  |    Numero da faixa    |
+------------+-----------------------+
|  $artist   | Nome da banda/artista |
+------------+-----------------------+
|  $album    |     Nome do album     |
+------------+-----------------------+
|  $title    |     Nome da musica    |
+------------+-----------------------+

One-liners Úteis

Juntando o eyeD3 com o poder dos comandos do sistema Linux, podemos realizar algumas tarefas até que interessantes. Deixarei algumas aqui para vocês. Demais explicações não serão dadas para não fugir do escopo do tutorial.

obs: dependendo do tamanho de sua coleção de músicas os comandos podem demorar muito, pois para cada arquivo será preciso executar o eyeD3 mais algum comando de filtro (ex: sed).

1) Renomear muitas músicas de uma só vez

$ eyeD3 --rename '$track:num-$artist-$album-$title' *.mp3 > /dev/null 2&>1

2) Encontrar músicas de determinado estilo a partir do diretório atual

$ GENRE=Punk; find -name '*.mp3' -exec eyeD3 {} \; | \
   sed -n "/------/{n;h;n;n;n;};/genre: ${GENRE}/{x;p;}"

The_Clash-London_Calling-Death_Or_Glory.mp3     [ 3.64 MB ]
The_Clash-London_Calling-Jimmy_Jazz.mp3 [ 3.62 MB ]
The_Clash-London_Calling-Revolution_Rock.mp3    [ 5.14 MB ]
The_Clash-London_Calling-Train_In_Vain.mp3      [ 2.95 MB ]
The_Clash-London_Calling-Spanish_Bombs.mp3      [ 3.09 MB ]
The_Clash-London_Calling-The_Guns_Of_Brixton.mp3        [ 2.93 MB ]

3) Encontrar músicas que ainda usam o formato ID3v1.x

$ find -name '*.mp3' -exec eyeD3 {} \; | \
     sed -n "/------/{n;h;n;n;n;};/^ID3 v1/{x;p;}"

02 - Sax Machine.mp3    [ 14.22 MB ]
07 - Blackout.mp3       [ 6.84 MB ]
08 - Sacred to the Pain.mp3     [ 8.99 MB ]
06 - Jungle Free-Bass.mp3       [ 10.29 MB ]
03 - Animal Behavior.mp3        [ 8.15 MB ]
04 - Trumpets and Violins, Violins.mp3  [ 6.69 MB ]
01 - Hideous Mutant Freekz.mp3  [ 13.46 MB ]
05 - Telling Time.mp3   [ 9.21 MB ]
06 - Free-bass (Godzillatron Cush).mp3  [ 10.41 MB ]
08 - Pray My Soul.mp3   [ 9.49 MB ]
04 - Orbitron Attack.mp3        [ 22.81 MB ]
01 - Order Within the Universe.mp3      [ 6.03 MB ]
03 - If 6 was 9.mp3     [ 10.99 MB ]
07 - Tell The World.mp3 [ 7.11 MB ]
02 - Under the Influence (Jes Grew).mp3 [ 10.51 MB ]
05 - Cosmic Slop.mp3    [ 9.67 MB ]

4) Encontrar músicas sem imagem do álbum

$ find . -name '*.mp3' -print0 | \
   while read -d $'' file; do eyeD3 "$file" | \
   sed -n '1h; /Image: /{:a;n;ba;}; ${x;p;};' ; done

05 - Hawaii Five O Theme.mp3    [ 5.80 MB ]
07 - Bukowski And Christ.mp3    [ 5.85 MB ]
10 - Oscar Bravo.mp3    [ 8.10 MB ]
08 - 90 Degrees In The Shade.mp3        [ 7.12 MB ]
01 - Blue Mambo.mp3     [ 6.20 MB ]
03 - Unchain Your Mind.mp3      [ 7.36 MB ]
02 - Ship To Paradise.mp3       [ 6.58 MB ]
04 - From Childbirth to Bingo.mp3       [ 7.54 MB ]
06 - Bigfoot.mp3        [ 7.13 MB ]
09 - Obey The Rules Of The Night.mp3    [ 5.75 MB ]

Referências

[1] Usando O Programa cid3v2 Para Inserir Tags ID3v2.3.x, by Daemonio (Acessado em: Novembro/2011)
https://daemoniolabs.wordpress.com/2011/11/06/usando-o-programa-cid3v2-para-inserir-tags-id3v2-3-x/

[2] eyeD3 0.6.17, by Travis Shirk (Acessado em: Novembro/2011)
http://eyed3.nicfit.net/

[3] Strip All Unwanted MP3 ID3 Tags, by gmendoza (Acessado em: Novembro/2011)
http://savvyadmin.com/strip-all-unwanted-mp3-id3-tags/

[4] Axiom Funk Album (Acessado em: Novembro/2011)
http://en.wikipedia.org/wiki/Funkcronomicon

[5] Embedded Album Covers, Your PSP, Amarok, and You, by  Jason ‘vanRijn’ Kasper (Acessado em: Novembro/2011)
http://movingparts.net/2007/12/09/embedded-album-covers-your-psp-amarok-and-you/

[6] ID3 Official Site (Acessado em: Novembro/2011)
http://www.id3.org/

[7] dtag.sh: Taguear Músicas MP3 No Terminal (Acessado em: Dezembro/2013)
https://daemoniolabs.wordpress.com/2012/12/16/dtag-sh-taguear-musicas-mp3-no-terminal/

4 pensamentos sobre “Manipulando Tags ID3 Com O eyeD3

  1. Pingback: deye : Usando o yad + eyeD3 | Daemonio Labs

  2. Pingback: Adicionar Imagem Do Álbum Em Arquivos MP3 | Daemonio Labs

  3. Pingback: dtag.sh: Taguear Músicas MP3 No Terminal | Daemonio Labs

Deixe um comentário