Alterando as ID tags de seus arquivos de áudio em massa pelo terminal

Publicado por Luís Fernando C. Cavalheiro em 13/09/2012

[ Hits: 6.411 ]

Blog: https://github.com/lcavalheiro/

 


Alterando as ID tags de seus arquivos de áudio em massa pelo terminal



Prezados,

Teve um tempo que fiz esta mesma pergunta por aqui. Pesquisei, o pessoal do VOL ajudou, e agora vou postar, com bastante calma, como fazer para que outras pessoas que tenham esta mesma necessidade, possam resolver.

Para justificar, fiz isso porque o Rhythmbox lê as tags ID dos arquivos de áudio (uma espécie de metadados reconhecidos por quase todos os player de som) e ordena os arquivos na lista de reprodução usando estas informações.

Então, como baixo muita coisa na Internet, ficava tudo bagunçado, e tenho certo horror maníaco de ver meus arquivos bagunçados. Minha casa e meus quase 2k livros podem ser bagunçados, mas meu computador não!

Para resolver isso, eu usei uma ferramenta chamada ID3v2 Tool. O site deles é esse aqui:
E nele, você pode baixar o código-fonte, ver as dependências e tudo o mais. No site da ferramenta, o id3lib é apontado como dependência, mas em packages.ubuntu.com, lista-se como dependências:
  • libc6
  • libgcc1
  • libid3-3.8.3c2a
  • libstdc++6
  • zlib1g

Para os usuários do Ubuntu, é preciso estar com o repositório universe habilitado no sources.list, e esse pacote está disponível desde o Hardy Heron.

O pacote é suportado no Debian, mas não aparece em packages.debian.org.

Instale o pacote e suas dependências. Em distribuições Debians-like, o repositório relacionado aos arquivos que usam alguma coisa que fere a licença GNU, precisa estar habilitado no sources.list.

No Ubuntu, este é o repositório universe, enquanto no Debian, é o non-free. Uma vez habilitado e atualizado o repositório, um comando como:

sudo apt-get install id3v2

Provavelmente instalará o pacote.

Uma vez com o id3v2 instalado, as principais opções da linha de comando são:
  • -l [arquivo]: lista as tags ID da música;
  • -y [yyyy]: altera a tag ID do ano da música;
  • -t [nome]: altera a tag ID do nome da música;
  • -T [número]: altera a tag ID do número da faixa da música;
  • -a [artista]: altera a tag ID do nome do artista da música;
  • -A [álbum]: altera a tag ID do álbum da música.

Para renomear os arquivos em massa, precisa-se criar um script que faça isso. Vou usar como exemplo o meu caso, mas você precisará adaptá-lo às suas necessidades.

Estudo de caso: diretório músicas de lcavalheiro

O meu diretório Música, é organizado da seguinte maneira: cada artista é um subdiretório, e cada álbum é um subdiretório dentro do diretório do artista.

O nome dos diretórios dos álbuns segue o padrão "yyyy - álbum", onde 'yyyy', é o ano de lançamento do álbum. Cada arquivo é nomeado com o padrão "xx nomedamúsica.extensão", onde 'xx', é o número da faixa. Então, se eu usar o comando pwd dentro do diretório de um álbum, fica assim:

pwd
/home/lcavalheiro/Música/Dead Can Dance/2012 - Live Happenings


Esta padronização me permite usar a própria estrutura de diretórios para criar as principais tags ID, deixando apenas para o nome do arquivo a função de gerar as tags ID do nome da música e do número de faixa.

O script, ficaria assim:

#!/bin/bash
# Script de renomeação em massa dos arquivos
# Autor: Luís Fernando Carvalho Cavalheiro ( pessoal at profcavalheiro dot com)
# Versão 0.1
# Data da versão: 20120906
# Eu autorizo expressamente o uso, a redistribuição e a alteração deste script, desde que você me dê os créditos por ser o autor original
# Para funcionar corretamente, este script precisa ser executado no diretório no qual se encontram as músicas (no meu caso, dentro do diretório do álbum)


for i in */*.mp3; do
artista=$(echo `pwd` | cut -d'/' -f5) \
album=$(echo `pwd` | cut -d'/' -f6 | cut -d'-' -f2 | cut -c2-) \
ano=$(echo `pwd` | cut -d'/' -f6 | cut -c1-4) \
musica=$(echo "$i" | sed 's/.mp3/-teste/' | cut -d'-' -f1 | cut -c4-) \
faixa=$(echo "$i" | cut -c1-2) \
id3v2 -a "$artista" -A "$album" -t "$musica" -y "$ano" -T "$faixa" "$i" \
done # EOF

Explicando:
  • Para "$artista", ordeno que o script use o caminho completo do diretório atual (ou seja, do diretório do álbum), usando o comando cut para pegar o quarto diretório da árvore da raiz até o diretório atual;
  • O mesmo raciocínio vale para "$album", mas neste caso, só me interessa os dados depois do ano de lançamento do álbum. EXCEÇÃO: quando ordenei as tags ID do artista de K-pop PSY, mantive o ano no nome dos álbuns, já que eu NÃO LEIO COREANO;
  • O mesmo raciocínio de "$album" vale para "$ano", mas pegando apenas os quatro primeiros dígitos do nome do diretório;
  • Para "$musica", uso o sed para substituir a extensão por um "-teste". Poderia ser qualquer coisa, desde que o nome de nenhum dos arquivos tenha um " - ". Se tiver, use qualquer outro caractere. A partir daí, pego com o próximo cut todos os caracteres antes do símbolo e descarto os três primeiros (dois números e um espaço);
  • Para "$faixa", o raciocínio é similar, mas, mais simples do que para "$musica". Simplesmente pego os dois primeiros caracteres do nome do arquivo;
  • E então, uso o id3v2, para atribuir todas as tags ID que me interessam.

Fim do estudo de caso.

Enfim, após esta longa dica, espero ter ajudado os confrades que encontram-se na mesma situação que eu.

Como diria Crowley, divirtam-se!

Outras dicas deste autor

Oracle Java em Debians-like (sem recorrer a PPAs)

Instalação do Spotify no openSUSE Leap 15

Usando pendrive como SWAP temporária em seu GNU/Linux

pv - Acompanhando progresso de comandos no terminal via barra de progresso

apt-pinning - Forçando downgrades em Debian-likes

Leitura recomendada

cointop - monitore a cotação de criptomoedas via terminal

Instale pacotes pelo apt através de uma lista

Arquivo .bashrc

Utilizando o chmod parar mudar permissões em arquivos

Exibindo mensagens ao efetuar login

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts