Existe uma boa ferramenta ID3 de linha de comando para o OS X?

41

Alguém sabe de uma linha de comando * Ferramenta ID3, com suporte para ID3v2 , que você pode começar a trabalhar no Mac OS X com esforço razoável? Deve suportar as tags de leitura e escrita.

( * Quero poder chamá-lo, por exemplo de alguns scripts Python, então uma ferramenta GUI não serve.)

o id3tool O utilitário é bom, mas não suporta ID3v2 (e, portanto, não funciona muito bem com o iTunes). Eu tive que compilá-lo a partir da fonte, mas isso foi bastante simples em um Mac com Xcode & amp; ferramentas de desenvolvimento (incluindo, notadamente, um compilador C). De qualquer forma, eu gostaria especialmente de algo com opções de linha de comando semelhantes às do id3tool. Aqui está um exemplo de marcação de um arquivo:

id3tool -t "Song Title" -r Artist -a "Album Name" -c 2 track-02.mp3
Jonik
fonte
Eu tenho trabalhado em escrever algo assim ... existem algumas bibliotecas disponíveis em python e há uma ferramenta chamada beterraba que faz uso delas, então eu tenho investigado como está escrito.
Robert S Ciaccio
2
além disso ... O MusicBrainz Picard é escrito em Python e é de código aberto, então provavelmente há muito a ser extraído do código e do uso da biblioteca.
Robert S Ciaccio
Eu concordo, Picard é simplesmente brilhante
Rohan Monga

Respostas:

44

Se você tem Homebrew instalado (altamente recomendado), você pode apenas fazer:

brew install id3lib

Isso instala várias ferramentas de linha de comando id3, incluindo id3tag, id3convert, id3cp e id3info. Não há necessidade de scripts em Python ou Perl; apenas use comandos regulares do shell.

Usage: id3tag [OPTIONS]... [FILES]...
   -h         --help            Print help and exit
   -V         --version         Print version and exit
   -1         --v1tag           Render only the id3v1 tag (default=off)
   -2         --v2tag           Render only the id3v2 tag (default=off)
   -aSTRING   --artist=STRING   Set the artist information
   -ASTRING   --album=STRING    Set the album title information
   -sSTRING   --song=STRING     Set the title information
   -cSTRING   --comment=STRING  Set the comment information
   -CSTRING   --desc=STRING     Set the comment description
   -ySTRING   --year=STRING     Set the year
   -tSTRING   --track=STRING    Set the track number
   -TSTRING   --total=STRING    Set the total number of tracks
   -gSHORT    --genre=SHORT     Set the genre
   -w         --warning         Turn on warnings (for debugging) (default=off)
   -n         --notice          Turn on notices (for debugging) (default=off)
huyz
fonte
Suporta ID3v2?
Jonik
id3lib também funciona em outras distribuições, como macports. Falando nisso, há algum ponto em mudar de portas para homebrew? Eu tive muita dor mudando de fink ...
HiQ CJ
"Erro: Nenhuma fórmula disponível para o mid3v2". Alguém interessado em contribuir com uma fórmula?
ManuelSchneid3r
3
@Jonik id3lib pode escrever e manipular ID3v1 e ID3v2
jchook
1
Ele também vem com id3v2, que é o comando "fazer tudo". Ele permitirá que você escreva qualquer tag arbitrária em um arquivo.
Edward Falk
14

Existe uma versão compatível com OS X do biblioteca id3lib acessível aqui no GitHub . Ele alega suportar ID3v1 e ID3v2.

Jeff Swensen
fonte
1
Obrigado! Isso responde plenamente a minha pergunta. Havia apenas o pacote fonte disponível, mas a instalação a partir disso (em um Mac com ferramentas de desenvolvedor) foi bastante suave: a tarifa padrão Unix de configure, make e make install. id3lib consiste em 4 binários separados: id3info (para tags de leitura), id3tag (para tags de escrita), id3convert e id3cp. Tudo funciona bem (e o iTunes honra as tags v2 escritas com id3tag).
Jonik
@Jonik o que você usou para embrulhar a biblioteca? Algum python você escreveu?
Robert S Ciaccio
@calavera: Sim, tenho scripts simples que tentam determinar o número da faixa ou o nome de um nome de arquivo (como "Artist - 03 - Track.mp3") e, se encontrados, escrevê-lo na tag ID3 também.
Jonik
@Jonk: você estaria disposto a compartilhar? Eu não tenho muita experiência com python, então algo assim seria ótimo para brincar e estender ...
Robert S Ciaccio
@calavera: Aqui está . Uso: add-track-names.py *mp3 ou add-track-numbers.py *mp3. Coisas comuns (a maioria dos códigos) estão em um arquivo .py separado. Eu não sou realmente um codificador Python, então o código provavelmente está longe de ser "pythônico". :) Mas eu (re) aprendi muito quando o escrevi, e provavelmente é fácil estender se suas necessidades de marcação forem parecidas com as minhas.
Jonik
5

O módulo python Mutagênico é fornecido com a ferramenta ID3 da linha de comandos denominada mid3v2 substituição para id3lib.
A partir da documentação de uso:

Você pode definir o valor para qualquer quadro ID3v2 usando '-' e, em seguida, um ID de quadro.
Por exemplo:
mid3v2 --TIT3 "Macaco!" arquivo.mp3   definiria o quadro "Subtitle / Description" para "Monkey!".

kraymer
fonte
Mutagen pode ser instalado com sudo pip install mutagen depois de instalar pip com sudo easy_install pip.
Lri
você pode executar diretamente sudo easy_install mutagen também
user1259710
4

Você pode querer tentar id3v2 . É baseado no id3lib que Huyz mencionou, mas parece ser uma ferramenta de linha de comando melhor do que aqueles com id3lib. Ele despeja facilmente as tags ID3V2 dos MP3s produzidos no iTunes, mas não os arquivos M4A produzidos no iTunes (como acontece com o Apple Lossless).

Se você precisar de arquivos M4A, outra opção é ffmpeg . Sua ferramenta de linha de comando ffprobe imprime metadados nos arquivos e acredito que você pode escrever metadados via ffmpeg. Funciona com arquivos MP3 e M4A produzidos pelo iTunes. ffprobe pode não mostrar todos os metadados; mp4v2 é outra boa opção.

Todos os três programas são facilmente instalados via Homebrew. Agora (jan 2012) ffmpeg requer que o gcc compile, então brew install --use-gcc ffmpeg.

Nelson
fonte
obrigado por sugerir mp4v2 para m4a! funciona como um encanto, enquanto id3v2 não :(
Ilias Karim
O mp4v2 é o único que editou as tags de maneira compatível com o iTunes (macOS 10.13, iTunes 12.7).
void-pointer
2

Esse thread antigo no Mac OS X Parece que pode ser um bom lugar para você começar. É de 2003, então eu não tenho certeza se a ferramenta que eles estão falando ainda está sendo desenvolvida. Você também pode ter que compilá-lo você mesmo.

Ben Wyatt
fonte
2

Há sempre o AppleScript. Eu não sou um grande fã disso, mas o iTunes é scriptável e você pode manipular todas as tags mp3 de lá. Você pode invocar o Applescript a partir da linha de comando usando o osascript.

eric
fonte
2

Esse site: http://dougscripts.com/itunes/ tem muitos scripts e ferramentas de linha de comando que se sobrepõem ao itunes para fazer coisas com sua biblioteca de músicas. Alguns deles podem fazer o que você quiser. Algumas das ferramentas são gratuitas e algumas são licenciadas.

Chris Quenelle
fonte
2

já que você está confortável com o cli e o Python, eu posso recomendar alguns módulos Perl no CPAN. MP3 :: Tag, (assim como MP3 :: Tag :: ID3v1 e :: ID3v2 e :: Utils), MP3 :: Info, MP3 :: ID3Lib estão todos disponíveis para leitura e manipulação de tags ID3.

Se você for procurar por search.cpan.org e procurar por "MP3", você encontrará um mundo * de opções!

(* Onde "mundo" é um conjunto pequeno e limitado de opções ...)

gWaldo
fonte
1
CLI e Python sim, mas os módulos Perl no CPAN ... não muito :-) (Se você pode usar os do Python também, eu não sabia disso. Ou você quis dizer escrever Perl?) Pessoalmente eu tenho isso resolvido já, mas talvez isso seja útil para os outros.
Jonik
2

Tendo tido vários problemas de tipo 'abort trap' com id3v2 eu descobri eyeD3 , que é um módulo python também existente como uma ferramenta de linha de comando. Parece ser atualizado mais recentemente do que alguns dos outros programas mencionados acima.

bryn
fonte