Existe uma maneira de ler as tags mp3 de um arquivo no shell? Algo como:
mp3tags MyFile.mp3 author
deve gerar a tag de autor de um arquivo mp3.
Existe uma maneira de ler as tags mp3 de um arquivo no shell? Algo como:
mp3tags MyFile.mp3 author
deve gerar a tag de autor de um arquivo mp3.
Respostas:
Você também pode usar o ffprobe
que faz parte ffmpeg
.
sudo apt-get install ffmpeg
ffprobe file.mp3
Se você não quiser outras informações, como o comprimento da trilha e assim por diante, poderá combinar a saída com o grep:
ffprobe file.mp3 2>&1 | grep -A90 'Metadata:'
Ou para obter apenas o autor:
ffprobe -loglevel error -show_entries format_tags=artist -of default=noprint_wrappers=1:nokey=1 file.mp3
Você pode selecionar outras tags, separando-as com uma vírgula, como format_tags=title,album
.
Eu queria procurar uma palavra-chave em todos os arquivos mp3 em uma pasta. A pasta tinha 486 arquivos, então ficou interessante saber qual das soluções mencionadas aqui é a mais rápida. Aqui está o loop que eu usei:
# sudo apt-get install ffmpeg lltag eyed3 mp3info id3v2 libimage-exiftool-perl libid3-tools id3tool
keyword='fill_me_in'
getTitleFF() { ffprobe "$1" 2>&1 | sed -E -n 's/^ *title *: (.*)/\1/p'; }
getTitleLL() { lltag --show-tags title "$1" | sed -nE 's/^ TITLE=(.*)/\1/p'; }
getTitleEyed() { eyeD3 2>&1 "$1" | sed -n 's|\x1b\[[0-9;]*mtitle[^:]*: ||p'; }
getTitleInfo() { mp3info -p %t "$1"; }
getTitleId3() { id3v2 -l "$1" | sed -nE 's/^(TIT2 \([^)]*\)|Title *): (.*)/\2/p'; }
getTitleExif() { exiftool -title -b "$1"; }
getTitleId3i() { id3info "$1" | sed -nE 's/^=== TIT2 \([^)]*\): //p'; }
getTitleTool() { id3tool "$1" | sed -n 's|^Song Title:\t||p'; }
for prog in FF LL Eyed Info Id3 Exif Id3i Tool; do
echo "=== getTitle${prog} ==="
time \
for file in *.mp3; do
if "getTitle${prog}" "$file" | grep -q "$keyword"; then
echo "$file"
fi
done
done
Notas:
lltag
e mp3info
não encontrar um título, porque os arquivos que eu estava usando tinham tags ID3v2, veja o comentário de @ s-prasanth: Como ler tags mp3 no shell?eyeD3
é problemático para usar programaticamente, porque usa códigos de cores (negrito).eyeD3
e também id3v2
(mas apenas para tags ID3 v1) retornam o título e o artista na mesma linha, o que complica ainda mais as coisas; portanto, getTitleEyed
e às vezes getTitleId3
retorna o título e o artista, portanto, não copie e cole essas funções.getTitleId3 funcionará apenas para tags ID3 v2, porque id3v2
possui diferentes formatos para tags ID3v1- e ID3v2, ou seja,
Title : Artist:
vs. ID3v2:
TIT2 (Title/songname/content description):
Como o único programa desses 5 eyeD3
imprime um aviso vermelho para dois dos arquivos:
Invalid mode/bitrate combination for layer II
No ID3 v1.x/v2.x tag found!
Parece que esses dois ficheiros têm etiquetas ID3v1, porque esses dois arquivos são os únicos onde lltag
e mp3info
pode obter um título. Gostaria de saber se isso é um bug, eyeD3
pois nenhum outro programa mencionado aqui tem um problema com esses arquivos ...
Resultados (tempo real):
Program | Version | Time / s
----------+------------+-----------
exiftool | 10.25 | 49.5 ± 0.5
lltag | 0.14.5 | 41 ± 1.0
ffprobe | 3.1.3-1+b3 | 33 ± 0.5
eyeD3 | 0.6.18 | 24 ± 0.5
id3info | 3.8.3 | 4.2 ± 0.1
id3v2 | 0.1.12 | 2.9 ± 0.1
id3tool | 1.2a | 1.7 ± 0.1
mp3info | 0.8.5a | 1.4 ± 0.1
Em termos de tempo, o vencedor aqui é id3tool
(o mp3info é mais rápido, mas não funciona com o ID3 v2).
id3v2
também é bastante rápido, mas a getTitleId3
função precisaria de ajuste para também funcionar com tags ID3v1, o que pode, na pior das hipóteses, desacelerá-lo pelo fator 2.
id3info
na sua comparação?
ffmpeg
tem outra vantagem: trabalha com aac
/ m4a
files. Outras ferramentas parecem não parecer (ou você sabe o contrário?). Também sugerirei pesquisar sua FORMAT
seção, para evitar casos em que um fluxo também tenha um title
etc ffprobe -loglevel error -show_entries format -i "$1" 2>&1 | sed -E -n 's|^TAG:title=(.*)$|\1|p'
. : .
exiftool
ou ffprobe
. A ferramenta mais especializada para esse trabalho seria metaflac --list
do flac
pacote. Para o ogg exiftool
também funciona, mas também existe vorbiscomment -l
no vorbis-tools
pacote. Estranhamente vorbiscomment
e metaflac
não pode ser trocado, mesmo que o FLAC e o OGG tenham ambos metadados vorbis coment?
Ok, eu encontrei um programa sozinho. É chamado mp3info e instalado por
sudo apt-get install mp3info
Para obter tags mp3 únicas de um arquivo, é necessário chamar
mp3info -p %a file.mp3
que fornece ao artista do arquivo. O% a significa que alguém deseja obter o artista e existem outras chaves para as outras tags.
mp3info
. Você pode querer olhar id3v2
- Ele pode editar / adicionar v2 e exibir v1 e v2. Se você não gostar da maneira como as tags são exibidas, é possível escrever um script que execute id3v2
e processe a saída adequadamente.
-R
flag com grep
para obter a saída especificada.
Only ID3 versions 1.0 and 1.1 are supported
.
Você pode usar eyed3 . Primeiro, a partir de um terminal, instale:
sudo apt-get install eyed3
Então corra:
eyeD3 song.mp3
Combine isso com grep
para obter tags específicas em uma linha.
eyeD3 song.mp3 | grep artist
(para remover todas as tags mp3, veja AQUI )
eyeD3
nãoeyed3
eyeD3 --plugin display -p "%t% by %a%" *
.
Eu prefiro usar o id3v2, apenas digite id3v2 -l somefile.mp3
. Você também pode ver a página do manual do id3v2 para uso mais específico.
mid3v2
devido à falta de suporte Unicode. Também a última atualização do id3v2 foi em 2013 .
Você pode tentar o exiftool (ler e gravar informações meta nos arquivos).
"O ExifTool é uma biblioteca Perl independente de plataforma, além de um aplicativo de linha de comando para leitura, gravação e edição de meta-informações em uma ampla variedade de arquivos. O ExifTool suporta muitos formatos diferentes de metadados, incluindo EXIF, GPS, IPTC, XMP, JFIF, GeoTIFF, ICC. Profile, Photoshop IRB, FlashPix, AFCP e ID3, assim como as notas de criador de muitas câmeras digitais da Canon, Casio, FLIR, FujiFilm, GE, HP, JVC / Victor, Kodak, Leaf, Minolta / Konica-Minolta, Motorola, Nikon, Nintendo, Olympus / Epson, Panasonic / Leica, Pentax / Asahi, Fase 1, Reconyx, Ricoh, Samsung, Sanyo, Sigma / Foveon e Sony. " - ExifTool por Phil Harvey
Aqui está um exemplo do comando:
exiftool test.mp3
ExifTool Version Number : 10.00
File Name : test.mp3
Directory : .
File Size : 8.2 MB
File Modification Date/Time : 2016:03:02 21:44:58+01:00
File Access Date/Time : 2016:04:06 21:34:01+02:00
File Inode Change Date/Time : 2016:03:02 21:45:36+01:00
File Permissions : rw-rw-r--
File Type : MP3
File Type Extension : mp3
MIME Type : audio/mpeg
MPEG Audio Version : 1
Audio Layer : 3
Sample Rate : 44100
Channel Mode : Stereo
MS Stereo : Off
Intensity Stereo : Off
Copyright Flag : False
Original Media : False
Emphasis : None
VBR Frames : 9544
VBR Bytes : 8467680
ID3 Size : 115419
Band : Tech N9ne Collabos
Album : Strangeulation (Deluxe Edition)
Composer : Tech N9ne Collabos
Genre : Rap & Hip-Hop
Copyright : 2014 Strange Music, Inc
Title : American Horror Story (feat. Ces Cru)
Artist : Tech N9ne Collabos
Track : 10
Year : 2014
Comment :
Lyrics :
Private : (Binary data 8192 bytes, use -b option to extract)
Picture MIME Type : image/jpeg
Picture Type : Front Cover
Picture Description :
Picture : (Binary data 104371 bytes, use -b option to extract)
Audio Bitrate : 272 kbps
Date/Time Original : 2014
Duration : 0:04:09 (approx)
Confira lltag
se você está procurando uma solução que suporte mais do que apenas mp3 / ID3.
Instale-o com:
sudo apt-get install lltag
para ver todas as tags com ele: ( -S
é para exibição)
lltag -S somefile.mp3
para visualizar determinadas tags:
lltag --show-tags artist,album,title,number somefile.mp3
Você pode começar com este screencast e o de Introdução guia
Instale:
pip install beets # latest version
apt install beets # repo version
Além disso:
exiftool -v3 *.mp3
mid3v2
from ( python-mutagen
pacote) (em vez deid3v2
, a última atualização foi em 2013 !)id3
- Editor para tags ID3 (não é o mesmo que este id3 )id3tool
- Editor de linha de comando para tags id3id3ren
- identificador e renomeador id3