Есть хороший инструмент командной строки ID3 для OS X?

45

Кто-нибудь знает инструмент командной строки * ID3 с поддержкой ID3v2 , что вы можете начать работать на Mac OS X с разумными усилиями? Он должен поддерживать как чтение, так и запись тегов.

( * Я хочу иметь возможность вызывать его, например, из некоторых скриптов Python, поэтому инструмент с графическим интерфейсом не подойдет.)

В остальном утилита id3tool хороша, но не поддерживает ID3v2 (и поэтому не очень хорошо работает с iTunes). Мне пришлось скомпилировать его из исходного кода, но это было довольно просто на Mac с Xcode и инструментами разработчика (включая, в частности, компилятор C). В любом случае, я бы особенно хотел что-то с параметрами командной строки, подобными id3tool. Вот пример пометки одного файла:

id3tool -t "Song Title" -r Artist -a "Album Name" -c 2 track-02.mp3
Jonik
источник
я работал над написанием чего-то подобного ... есть некоторые библиотеки, доступные на python, и есть инструмент, называемый beets, который использует их, поэтому я изучал, как он написан.
Роберт С Чаччо
2
кроме того ... MusicBrainz Picard написан на Python и является открытым исходным кодом, так что, вероятно, многое можно почерпнуть из его кода и использования библиотеки.
Роберт С. Чаччо
я согласен, Пикард просто великолепен
Рохан Монга

Ответы:

48

Если у вас установлен Homebrew (настоятельно рекомендуется), вы можете просто сделать:

brew install id3lib

Это устанавливает несколько инструментов id3 командной строки, в том числе id3tag, id3convert, id3cpи id3info. Нет необходимости в скриптах на Python или Perl; просто используйте обычные команды оболочки.

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
источник
Поддерживает ли он ID3v2?
Джоник
id3lib также работает в других дистрибутивах, таких как macports. Кстати, есть ли смысл переходить с портов на доморощенный? У меня было так много боли, переключаясь с
Финка
Msgstr "Ошибка: нет доступных формул для mid3v2". Кто-нибудь заинтересован в создании формулы?
ManuelSchneid3r
3
@Jonik id3lib может писать и манипулировать как ID3v1, так и ID3v2
jchook
1
Он также поставляется с id3v2командой «сделать все». Это позволит вам записать любой произвольный тег в файл.
Эдвард Фальк
14

Здесь есть совместимая с OS X версия библиотеки id3lib, доступная здесь, на GitHub . Он утверждает, что поддерживает как ID3v1, так и ID3v2.

Джефф Свенсен
источник
1
Благодарность! Это полностью отвечает на мой вопрос. Был доступен только исходный пакет, но установка с него (на Mac с инструментами разработчика) прошла довольно гладко: стандартная плата за Unix configure, makeи make install. id3lib состоит из 4 отдельных двоичных файлов: id3info (для чтения тегов), id3tag (для записи тегов), id3convert и id3cp. Все работает нормально (и iTunes соблюдает теги v2, написанные с помощью id3tag).
Джоник
@Jonik, что ты использовал, чтобы обернуть библиотеку? Какой питон ты написал?
Роберт С Чаччо
@calavera: Да, у меня есть простые скрипты, которые пытаются определить номер трека или имя по имени файла (например, «Artist - 03 - Track.mp3»), и, если он найден, тоже запишите его в тег ID3.
Джоник
@Jonk: вы бы хотели поделиться? У меня нет большого опыта работы с python, так что было бы здорово поиграть с ним и продолжить ...
Robert S Ciaccio
@calavera: Вот, пожалуйста . Использование: add-track-names.py *mp3или add-track-numbers.py *mp3. Обычные вещи (большая часть кода) находятся в отдельном файле .py. Я на самом деле не Python-кодер, поэтому код, вероятно, далек от "pythonic". :) Но я (заново) многому научился, когда написал это, и, возможно, его легко расширить, если ваши потребности в тегировании будут чем-то похожими на мои.
Джоник
5

Модуль Python Mutagen поставляется с инструментом командной строки ID3 с именем mid3v2, заменяющим id3lib.
Из документации по использованию:

Вы можете установить значение для любого кадра ID3v2, используя '-', а затем идентификатор кадра.
Например:
mid3v2 - TIT3 "Обезьяна!" file.mp3 установит для фрейма «Subtitle / Description» значение «Monkey!».

kraymer
источник
Mutagen может быть установлен sudo pip install mutagenпосле установки pip с помощью sudo easy_install pip.
Lri
вы можете непосредственно работать sudo easy_install mutagenслишком
user1259710
4

Вы можете попробовать id3v2 . Он основан на id3lib, о котором упоминал Хайз, но, кажется, лучший инструмент командной строки, чем те, которые используют id3lib. Он легко выгружает теги ID3V2 из файлов MP3, созданных iTunes, но не из файлов M4A, созданных iTunes (как в случае с Apple Lossless).

Если вам нужны файлы M4A, другой вариант - ffmpeg . Его инструмент командной строки ffprobe печатает метаданные в файлах, и я считаю, что вы можете записывать метаданные через ffmpeg. Он работает с файлами MP3 и M4A, созданными iTunes. ffprobe может не отображать все метаданные; mp4v2 - еще один хороший вариант.

Все три программы легко устанавливаются через Homebrew. Прямо сейчас (январь 2012) ffmpeg требует gcc для компиляции, поэтому brew install --use-gcc ffmpeg.

нельсон
источник
спасибо за предложение mp4v2 для m4a! работает как шарм, тогда как id3v2 нет :(
Илиас Карим
mp4v2 - это единственный файл, который редактировал теги способом, совместимым с iTunes (macOS 10.13, iTunes 12.7).
указатель на пустоту
2

Эта старая тема в Mac OS X Hints выглядит так, как будто вы можете начать с нее. Это с 2003 года, поэтому я не уверен, что инструмент, о котором они говорят, все еще разрабатывается. Вам также, возможно, придется скомпилировать его самостоятельно.

Бен Уайетт
источник
2

Всегда есть AppleScript. Я не большой поклонник этого, но iTunes поддерживает скрипты, и вы можете манипулировать всеми тегами mp3 оттуда. Вы можете вызвать Applescript из командной строки, используя osascript.

Эрик
источник
2

На этом сайте: http://dougscripts.com/itunes/ есть много хороших сценариев командной строки и инструментов, которые накладываются поверх itunes для работы с вашей музыкальной библиотекой. Некоторые из них могут делать то, что вы хотите. Некоторые инструменты бесплатны, а некоторые лицензированы.

Крис Квинель
источник
2

Так как вы хорошо знакомы с cli и Python, я могу порекомендовать некоторые модули Perl для CPAN. MP3 :: Tag, (а также MP3 :: Tag :: ID3v1 и :: ID3v2 и :: Utils), MP3 :: Info, MP3 :: ID3Lib доступны для чтения и управления тегами ID3.

Если вы зайдете на search.cpan.org и поищете «MP3», вы найдете целый мир вариантов!

(* Где «мир» - это небольшой, ограниченный набор опций ...)

gWaldo
источник
1
CLI и Python да, но модули Perl на CPAN ... не так уж и много :-) (Если вы можете использовать их и в Python, я не знал об этом. Или вы имели в виду написание Perl вместо этого?) Лично я получил это уже решено , но, возможно, это полезно для других.
Джоник
2

Имея различные проблемы с типом прерывания прерывания с id3v2, я обнаружил eyeD3 , который является модулем python, также существующим в качестве инструмента командной строки. Похоже, что оно было обновлено совсем недавно, чем некоторые другие программы, упомянутые выше.

Брин
источник