Conserto de arquivos MP3 com tag ‘Artist’ nula ou incorreta

[17/05/09 Edição: este artigo foi escrito antes de eu ter descoberto o MusicBrainz para corrigir tags de álbuns MP3 e o Quod Libet para playback. Se bem que serviu como exercício de programação em bash, caso eu ache algum bug nestes softwares e tenha que corrigir manualmente alguma coisa…

[06/02/10 Edição: para rodar este script, é necessário o pacote mp3info. O Quod Libet é uma bosta, uso o Rhythmbox que atualiza automaticamente sua biblioteca quando as tags dos arquivos são modificadas no MusicBrainz (pacote picard) , e dá pra fazer umas correções de tag simples dentro do próprio Rhythmbox, além de vir instalado como padrão no Ubuntu. De qualquer forma, continua a dica do comando mp3info para descobrir tags de arquivos mp3]
Amarok aberto, o usuário rola o painel com nomes de artistas abaixo esperando encontrar aqueles arquivos de seu artista predileto que baixou sei lá de onde. Porém não encontra. Vai no diretório dos arquivos baixados e pra sua surpresa a tag ‘Artist’ está em branco ou pior, incorreta. São muitos arquivos, várias pastas de diferentes álbuns e shows etc. Abrir as propriedades de cada arquivo e consertar cada um será uma tarefa altamente repetitiva. O que fazer? Rodar o script verifica_artista_mp3.sh "<nome_correto>"!

Desconfiando que uns arquivos de um diretório poderiam estar com tag incompleta, abri o terminal e verifiquei
Desconfiando que uns arquivos de um diretório poderiam estar com tag incompleta, abri o terminal e verifiquei
E aqui o código, de utilização pública (copyleft):

#!/bin/bash
TXT_BLD=$(tput bold)
TXT_RED=$(tput setaf 1)
TXT_GREEN=$(tput setaf 2)
TXT_YLW=$(tput setaf 3)
TXT_BLUE=$(tput setaf 4)
TXT_PURPLE=$(tput setaf 5)
TXT_CYAN=$(tput setaf 6)
TXT_WHITE=$(tput setaf 7)
TXT_RESET=$(tput sgr0)

if [ &quot;x$1&quot; = &quot;x-h&quot; ]; then
        echo &quot;Uso: ${0##*/} [-h] [nome_artista] [nome_arq_log|-show]&quot;
        echo &quot;    Procura a partir do diretório atual por arquivos mp3, analizando da tag 'Artist'&quot;
        echo &quot;    Caso seja divergente da string [nome_artista], mostra o número da linha em que apareceu&quot;
        echo &quot;    e a string divergente. O argumento opcional [nome_arq_log] especifica o arquivo de log&quot;
        echo &quot;    que será sobrescrito com arquivos mp3 sem tag definida e demais erros do sistema.&quot;
        echo &quot;    Caso o segundo argumento seja '-show' simplesmente mostra uma listagem com linha numeradas&quot;
        echo &quot;    dos mp3 juntamente com suas tags.&quot;
        exit 0
fi
ARTIST=&quot;${1}&quot;
if [ &quot;x${ARTIST}&quot; = &quot;x&quot; ]; then
        echo -n &quot;Preencha nome exato artista:&quot;
        read ARTIST
fi
if [ &quot;x${ARTIST}&quot; = &quot;x&quot; ]; then
        echo &quot;Nome de artista em branco&quot; &gt;&amp;2
        exit 1
fi
LOG=${2}
if [ &quot;x${LOG}&quot; = &quot;x&quot; ]; then
        LOG=~/verifica_artista_mp3.log
fi
if [ &quot;x$LOG&quot; = &quot;xshow&quot; ]; then
        find . -name &quot;*.mp3&quot; -print0|xargs -0 mp3info  -p &quot;Artist: %a\t kB: %k '%F'\n&quot; |nl|more
else
        echo &quot;${TXT_BLD}${TXT_GREEN}* * * * Verificando conteúdos das tags das MP3 ($PWD) * * * * ${TXT_RESET}&quot;
        find . -name &quot;*.mp3&quot; -print0|xargs -0 mp3info -p &quot; ${TXT_PURPLE}Artist: %a${TXT_RESET}\t kB: %k nnxn ${TXT_BLD}${TXT_RED}'%F'${TXT_RESET} nnxs\n&quot; 2&gt;$LOG|nl|grep -vi &quot;Artist: ${ARTIST}&quot; |sed -e 's,nnxn,\n,' -e 's,nnxs,\\,'
        if [ $(cat &quot;${LOG}&quot; |wc -l) = 0 ]; then
                echo -e &quot;mp3info analisou todos os arquivos mp3 dentro de\n'${PWD}'\ncom sucesso!&quot;
                rm &quot;${LOG}&quot;
        else
                echo -e &quot;Erros encontrados, consulte\n${LOG}\n($(cat &quot;${LOG}&quot; |wc -l) linhas)&quot;
        fi
        echo -e &quot;Para consertar algum, utilizar\n${TXT_BLD}${TXT_RED}mp3info -a '${ARTIST}'${TXT_RESET} \\&quot;
        echo &quot;adicionando as linhas acima referentes aos arquivos a serem corrigidos.&quot;
fi

Um comentário sobre “Conserto de arquivos MP3 com tag ‘Artist’ nula ou incorreta

  1. Achei um programa que corrige estes dados, baixando informações de um banco de dados online com mais de 4 milhões de músicas: http://www.fixtunes.com/download-complete.php?OS=nonitunes
    Fica como alternativa para o caso de não ter certeza sobre o artista de um determinado conjunto de mp3’s.
    Testeis com umas mp3’s do Green Day e achou os dados corretos de artista, álbum, gênero e ano. O único dado que o programinha não conseguiu determinar foi o título, aí, copiei e colei do nome original do arquivo, e ficou perfeito!
    Creio que dê pra rodar no Wine também, não precisa abrir uma máquina virtual Windows pra tal fim que nem eu fiz…

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *