masai 16.07.2009 03:08
Tips & tricks — Информация о медиафайлах
В недавнем посте об отображении тегов mp3-файлов рассказывалось об утилите mp3info. К сожалению, она обладает существенными недостатками: не понимает ID3v2 и работает, как следует из названия, только с mp3-файлам.Однако, сама по себе утилитка довольно удобна. Поэтому я решил написать небольшой скрипт, предоставляющий похожий интерфейс, но понимающий большее количество медиаформатов.
Естественно, писал я его не на пустом месте. Для работы скрипта потребуется библиотека Kaa.Metadata:
1 |
|
Параметров у скрипта всего два (для простоты): форматная строка и файл (или несколько файлов через пробел):
1 |
|
При указании файла можно использовать стандартные шаблоны. Так что вполне допустимо имя вида «*.mp3». Можно использовать и более сложные шаблоны: «~/Музыка/*/*.mp3».
Скрипт не умеет рекурсивно обходить каталоги, но это ему и не нужно. Обход можно реализовать, например, средствами bash.
Подробнее о форматной строке. В ней можно использовать следующие шаблоны:
%t — название,
%a — исполнитель,
%r — частота дискретизации,
%l — продолжительность,
%m — продолжительность (только минуты),
%s — продолжительность (только секунды)
%c — кодек,
%b — битрейт,
%n — номер трека,
%A — альбом,
%g — жанр,
%% — символ %.
В ней также можно использовать обычные питоновские экранированные последовательности: \n, \t и т. д.
Вставлять \n в конце форматной строки не нужно, это делается автоматически. Кроме того, вывод скрипта автоматически переконвертируется в кодировку текущей локали.
Если теги файла записаны в однобайтовой кодировке и формат тегов не предусматривает указания кодировки, то скорее всего вместо ожидаемой cp1251 будет latin-1. Впрочем, ответственность за это лежит на библиотеке. Может, это можно настроить, я глубоко не вникал. Во всяком случае, это еще один повод перевести все теги в utf-8.
Утилиту можно использовать как саму по себе, так и в конвейере:
1 |
|
А вот, собственно, исходный текст скрипта:
Не забываем разрешить его выполнение:
1 |
|
Кросспост
masai 16.07.2009 03:21 #
+ 1 -
Кстати, рекомендую ещё посмотреть на dnuos.
не работает скриптик ;(
вообще никакой реакции, ни тебе ошибок, ничего...
вообще никакой реакции, ни тебе ошибок, ничего...
Совсем-совсем ничего не выводится? Возможно, он просто не нашел ни одного медиафайла.
Да, сейчас глянул, там действительно ошибка. Вставил не тот файлик. :) Сейчас исправлю.
Готово!
Вот, сейчас еще раз проверил:
Вот, сейчас еще раз проверил:
$mediainfo '%a (%A) - %n - %t' ~/Музыка/Герой/*.mp3
Скомороший бунт (Герой) - 01 - Наигрыш
Скомороший бунт (Герой) - 02 - Герой
Скомороший бунт (Герой) - 03 - Небылицы (инструментальная)
Скомороший бунт (Герой) - 04 - Русская народная
Скомороший бунт (Герой) - 05 - Меленка (инструментальная)
Скомороший бунт (Герой) - 06 - Полюшко-поле
Скомороший бунт (Герой) - 07 - Наигрыш 2
Скомороший бунт (Герой) - 08 - Ехали герои
Скомороший бунт (Герой) - 09 - Грустная (инструментальная)
Скомороший бунт (Герой) - 10 - Колыбельная
Скомороший бунт (Герой) - 11 - Герой (инструментальная)
Видимо, оттого, что всё ночью выкладывал, не тот вариант вставил (или забыл правильный сохранить). В старой версии не только ошибка (недописанный кусок кода), но и отладочный print проскользнул.
Спасибо за багрепорт! Надеюсь, всё заработает теперь.
Спасибо за багрепорт! Надеюсь, всё заработает теперь.