15 июля 2009 г.

Информация об mp3-файлах

Иногда, когда залезаешь в свою коллекцию музыки, возникает необходимость составить список песен с продолжительностью. Например, для того, чтобы распечатать и приложить к диску.

Для того, чтобы получить названия песен можно использовать ls, но не всегда название файла соответствует содержимому. И ещё реже в названии указана продолжительность.

В этом случае на помощь приходит пакет mp3info.

В Ubuntu устанавливается как обычно:

sudo aptitude install mp3info

У него довольно много возможностей по редактированию и отображению тегов. Подробности можно узнать в man. Для того, чтобы получить список песен в альбоме можно воспользоваться следующей командой:

mp3info -p 'ФОРМАТ' *.mp3

Она выведет данные об mp3-файлах в текущем каталоге в соответствии со строкой ФОРМАТ.

В форматной строке можно использовать как обычные символы (они выведутся как есть), так и специальные шаблоны. Вот список некоторых из них:
%f — имя файла без пути,
%F — имя файла с путём,
%k — размер файла в килобайтах,
%a — исполнитель,
%g — жанр,
%l — альбом,
%n — номер трека,
%t — название трека,
%y — год,
%q — частота сэмплирования (в кГц),
%r — битрейт,
%m — продолжительность (только минуты),
%s — продолжительность (только секунды),
%% — знак процента,
\n — перевод строки,
\t — горизонтальная табуляция,
\\ — обратный слэш.

Например, команда
mp3info -p '%n. %a - %t (%m:%s)\n' *.mp3

выведет на экран что-то вроде:
01. Allison Crowe - It Came Upon the Midnight Clea (0:42)
02. Allison Crowe - Silent Night (4:2)
03. Allison Crowe - In the Bleak Midwinter (4:3)
04. Allison Crowe - What Child Is This (4:4)
05. Allison Crowe - The First Noel (5:34)
06. Allison Crowe - O Holy Night (4:16)

При работе с файлами, содержащими теги на русском языке могут возникнуть проблемы. Дело в том, что в них данные очень часто записываются в виндососвской кодировке cp1251. Решить проблему можно перекодировав вывод команды при помощи утилиты iconv:

Просто по старой виндузячьей традиции теги хранятся в кодировке cp1251. Я все перекодирую при помощи easytag, но если файлик с такими тегами попался, то можно использовать iconv. Например, так:
mp3info -p '%a - %t \n'  *.mp3 |iconv -f cp1251

Следует помнить, что mp3info работает только с тегами ID3v1.1.

Комментариев нет:

Отправить комментарий