Definir a etiqueta de título ID3 como igual ao nome do arquivo MP3


14

Alguém tem um script bash que percorre uma biblioteca de mídia e define a tag de título id3 de cada arquivo MP3 como igual ao nome do arquivo?

Também estou aberto a outros métodos automatizados. Pode ser um aplicativo GUI ou qualquer coisa que faça o trabalho automaticamente.

Um método EasyTag é observado aqui: Como renomear tag de título em massa em arquivos mp3 ID3 - Infelizmente não entendo as etapas.


Você pode responder sua própria pergunta. Liste as etapas que você encontrou ubuntuforums.orge cite sua fonte. :) Isso ajudará futuros visitantes do Superusuário, caso o ubuntuforums.orglink fique indisponível.
9133 iglvzx

3
Aqui estão algumas dicas: 1) Não confunda sua pergunta com "editar 1", "editar 2", etc. Resolva problemas usando comentários. 2) Se você encontrar uma solução, poste-a como resposta, como se estivesse tentando responder à pergunta de outra pessoa. Não coloque a resposta na pergunta . Não é aí que as pessoas o procuram :) Além disso, use citações em bloco para qualquer coisa que você citar de outro lugar (consulte a ajuda de formatação).
slhck

Fiz um script para corretamente arquivos MP3 tag no formato "Artista - Track.mp3" e, em seguida, renomeie o arquivo para "Track.mp3": gist.github.com/ZachSaucier/f51e608ac75e8ed6e96cd54a9ec103b0 usandoeyed3
Zach Saucier

Respostas:


17

O EasyTAG é realmente uma ótima ferramenta para esse problema. Encontrei minha resposta aqui . Em termos de como usá-lo, a melhor referência é a documentação do EasyTAG .

Abra o EasyTag, navegue até uma pasta com arquivos de música, selecione todos os arquivos da pasta ou todos os arquivos que deseja marcar, clique no botão "Digitalizar arquivos" (você terá que passar o mouse sobre eles para descobrir qual é).

Em seguida, verifique se o menu suspenso do scanner está definido como "Tag de preenchimento" e, no campo Tag de preenchimento, faça as edições apropriadas até o exemplo abaixo do campo parecer com o que você está procurando. Se precisar de mais ajuda sobre o que colocar no campo Fill Tag, clique no botão "?" para a legenda (lista com a qual traduzir os diferentes códigos possíveis) e pressione o botão de máscara para listar alguns pontos de partida.

Quando estiver satisfeito com os resultados, clique no botão "Scan Files" (na caixa de diálogo Scan Files, não na que você clicou originalmente para chegar onde está ... os ícones têm a mesma aparência) e suas alterações serão aplicadas . Se você não está recebendo o nome do artista ou do álbum, basta selecionar tudo o que deseja alterar, insira os dados e clique no pequeno botão ao lado desse campo e todos os arquivos selecionados serão preenchidos ou alterados para esse artista ou álbum. Isso funciona na maioria dos campos.

Quando terminar, clique no botão Salvar e pronto.

PS: O scanner CDDB geralmente funciona muito bem, se você tiver álbuns completos que está tentando marcar ou pelo menos arquivos de música disponíveis comercialmente.

PPS: Aparentemente, ainda estou meio acordado. De acordo com o que você escreveu em sua postagem original, tente isso no campo Fill Tag:

%n. %a - %t

Aqui está a seção que é relevante para esta pergunta:


1.2.2 Automaticamente com o scanner "Fill Tag":

Algumas condições para usar este modo:

  • arquivos classificados por álbuns
  • nomes de arquivos ou diretório pai contêm informações sobre tags (artista, álbum, título,…)
  • tags vazias ou incorretas

O scanner "Fill Tag" usa um padrão para associar palavras no nome do arquivo e diretórios às entradas de tag. Dessa forma, os campos de tags podem ser preenchidos automaticamente pressionando o botão “verde” na janela do scanner ou na barra de ferramentas. Se a etiqueta estiver parcialmente concluída, use a opção “Substituir campos ao digitalizar etiqueta” na guia “Scanner” da janela “Preferências”, para substituir todos os campos pelos novos valores.

Cada código corresponde a um campo, seguindo estas regras:

Strings associated with code    Will fill the field
%a
  Artist
%b
  Album
%c
  Comment
%p
  Composer
%r
  Copyright
%e
  Encoded by
%g
  Genre
%i
  None! (used to ignore a string)
%l
  Number of tracks
%o
  Original artist
%n
  Track
%t
  Title
%u
  URL
%y
  Year

Nota: para evitar erros, é recomendável usar um código apenas uma vez no padrão. Obviamente, como ao marcar manualmente, apenas os arquivos selecionados são processados ​​pelo scanner. Você pode usar os padrões definidos na lista ou escrever seus próprios padrões para corresponder ao formato dos seus nomes de arquivos e diretórios. Para evitar erros ao selecionar o padrão certo ou ao escrevê-lo, uma visualização mostra imediatamente os resultados antes de aplicar o padrão. Se precisar de ajuda com os diferentes códigos, pressione o botão "Ajuda" (a bóia salva-vidas) para exibir a legenda de cada código. Além disso, se você deseja salvar seus próprios padrões, edite ou ordene, pressionando o botão "Mask" (Máscara), um pequeno editor será mostrado na janela do scanner.

Abaixo um exemplo de uso de padrões:

a) o seguinte nome de arquivo:

“/mnt/MP3/EVANESCENCE  Fallen (2003)  Rock/01. Going Under.mp3

b) with the pattern :

“%a - %b (%y) - %g/%n. %t

c) you will fill the tag with theses strings :

    Artist (%a) => EVANESCENCE
    Album (%b) => Fallen
    Year (%y) => 2003
    Genre (%g) => Rock
    Track (%n) => 01
    Title (%t) => Going Under


3

Eu achei uma variedade de ferramentas de linha de comando úteis:

id3v2

id3v2 é um editor de tags id3v2 da linha de comandos. Você pode adicionar / modificar / excluir tags id3v2 e converter tags id3v1 em tags id3v2. É usa id3lib. Estou procurando um co-mantenedor. Envie um e-mail para myers_carpenter se você estiver interessado.

eyeD3

O eyeD3 é um módulo e um programa Python para o processamento de tags ID3. Também são fornecidas informações sobre arquivos mp3 (ou seja, taxa de bits, frequência de amostra, tempo de reprodução etc.). Os formatos suportados são ID3 v1.0 / v1.1 e v2.3 / v2.4.

estes são ideais ao criar scripts para digitalizar diretórios.


2

Isso nem sempre é perfeito, mas eu o usei para obter os nomes dos arquivos mp3 usando apenas ferramentas unix comuns (incluindo as versões do busybox). Talvez alguém com mais de apenas seis mp3s Tom Petty possa fazer alguns testes adicionais.

for x in *.mp3; do
  TITLE=$(strings "$x" |grep TAG |grep -v TAGL |sed "s/^.*TAG//g ; /^L$/d ; /^@$/d ; /^$/d ; /^Ac$/d")
  #mv "$x" "$TITLE.mp3"
  echo $x" "$TITLE.mp3" #just echo for now, until further tested
done

Edit: Eu interpretei mal a pergunta, mas sabendo disso acima, podemos usar sed para substituir $ TITLE pelo nome do arquivo "$ x" usando sed para substituir a string no lugar

sed -i "s/$TITLE/$x/" "$x"

Tenho quase 100% de certeza de que isso não atende a todas as especificações do ID3, mas pode ser suficiente para uso pessoal básico, desde que você faça um backup primeiro


Obrigado. Encontrei uma maneira de alcançar meu objetivo usando o EasyTAG, mas sua resposta realmente responde melhor à minha pergunta original. strings é uma boa utilidade para se conhecer. (Eu nunca a usei antes.) Você poderia postar uma solução completa com base na sua edição para ter certeza de que entendi a alteração sugerida?
MountainX

2

Para o Ubuntu 18.04 LTS (eu assumo que todos os sabores do Debian executem isso muito bem):

  • Instale o eyeD3 com sudo apt install eyeD3

  • Crie um arquivo para o script bash (usei "touch"; você pode usar o editor de texto que quiser)

  • Copie isso e cole no arquivo:

    Copia o nome do arquivo e o grava na tag Title

    for x in *; do
        eyeD3 --title="${x%.*}" "$x"
        echo $a
    done

    Se você não quiser ver o progresso, omita a linha echo $a acima da palavra "pronto".

  • Torne o arquivo executável:

    chmod +x filename
  • Copie o script para o diretório em que deseja que ele seja executado - aquele que contém seus arquivos de mídia; por exemplo:

    cp filename /music/directory
  • Navegue para o diretório para o qual você acabou de copiar o script:

    cd /music/directory
  • Execute o script:

    ./filename

    FEITO

Funcionou para mim no Ubuntu 18.04 LTS - minha esposa escreveu isso para mim em cerca de 3 minutos; portanto, não posso responder a nenhuma pergunta se não funcionar para você; Eu não sou conhecedor de programadores, estou configurando esta web, dns, ssh, sftp, ftp, AD / Domínio, arquivo, firewall, roteador / servidor, tipo cara :-) EU ODEIO fazer scripts, programação e qualquer coisa assim. ADORO tirar proveito de scripts, programação e qualquer coisa assim :-)


1

Estou surpreso que ninguém tenha sugerido a solução mais fácil usando ffmpegou avconv:

for i in *.mp3; do avconv -y -i "$i" -c copy -metadata title="$i" new_"$i"; done;

0

Eu instalaria o eyeD3 em um python virtualenv pip install eyeD3para que você obtenha a versão mais recente. Após essa execução:

for i in *.mp3; do /your/venv/bin/eyeD3 --title "$i" "$i"; done
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.