perl и shell скрипты для организации личной музыкальной библиотеки в Gnu/Linux
Данный репозиторий представляет собой набор разннообразных скриптов, предназначенных для решения задачи организации структурированной музыкальной библиотеки при условии невозможности модификации музыкальных файлов. На данный момент реализована поддержка музыкальных файлов лишь в формате flac. И других задач, которые автор посчитал требующими автоматизации
К примеру были скачаны композиции с сайта what.cd и дабы поддерживать рейтинг принято решение оставаться на раздаче вечно. Соответственно из этого вытекает требование того что файлы не будут модифицированы.
cronplay.pl скрипт, который по файлу формата схожего с crontab, в правой части которых вместо комманд находится sql-запрос. Предполагается что данный скрипт вызывается при окончании плейлиста mpd. Если текущее время подподает под маску времени в синтаксисе crontab, то треки, полученные в результате выполнения sql-запроса к музыкальной базе данных будут добавлены к плейлисту и воспроизведение будет продолжено. Данный скрипт писался для дипломной работы "Проектирование системы web-радио". Пример использования:
# в будние дни с 14 часов по 16
# случайный альбом из альбомов, треки которых
# ниразу не воспроизводились в течение последнего месяца
* 14-16,23 * * 1-5 \
SELECT uri FROM track \
WHERE album_id = \
( SELECT me.album_id FROM track as me \
WHERE NOT EXISTS \
( SELECT * FROM play_log JOIN track ON play_log.track_id = track.track_id \
WHERE track.album_id = me.album_id AND time > datetime('now','-1 month') ) \
GROUP BY me.album_id \
ORDER BY random() \
LIMIT 1 ) \
ORDER BY disc, track_num
На текущий момент читает данную конфигурацию из конца файла
cue2meta.pl скрипт, который использовался до появления fusemusic.pl, совместно с dbupdate.pl. Его цель - распарсить cue-файл и у соответствующих аудио файлов заменить метаданные на те, что содеражтся в cue. Использовался после переноса музыкальных файлов на аудио-плеер. Работает лишь с файлами формата flac.
cue2sql.pl использовался для первоначальной инициализации музыкальной базы даннх.
cueRename.pl используется для переименования аудио-файлов альбома, log-файлов и непосредственно cue, исходя из информации cue-файла. Использование: cueRename.pl путь.cue
cue_mbcheck.pl ищет альбом в базе данных musicbrainz.org и если альбом найден, сверяет информацию с информацией в cue и выводит расхождение.
dbupdate.pl предназначен для модификации базы данных mpd с целью внесни в нее информации из cue-файла в замен информации из метаданных композиций. Очень несистемное решение, зато очень простое. Текущая версия может работать только с базой mpd версии 0.16. В одном из коммитов можно найти версию для mpd 0.15. С актуальной версией mpd данный скрипт работать возможно не будет.
fuse_music.pl флагманский скрипт данного набора. Создает виртуальную файловую систему на основе базы данных и музыкальной библиотеки. Структура директорий представляет собой: /исполнитель-год-альбом/номертрека-название.flac. При чтении из файла на лету подменяет блок метаданных оригинального файла на вновь сформированный блок мета-информации на основе информации из базы данных. Таким образом получается 2 копии файлов - немодифицированный реальный и модифицированный виртуальный. Любой аудиоплеер будет читать файлы из виртуальной файловой системы с уже скорректированной мета-информацией. Скрипт довольно оптимизирован без нареканий и высокой нагрузки работает на крайне сколмных системах. К примеру на cubietruck (arm Allwinner a20).
fuse_music.pl [--musiclib путь к муз. библиотеке] [--mountpoint путь к точке монтирования] [--dbpath путь к базе]
get_stats.pl парсит статистику прослушиваний с last.fm.
mpd_alarm.sh скрипт для использования mpd в качестве будильника. с функцией увеличения громкости. После вызова данного скрипта к плейлисту mpd добавляется 3 случайных альбома. Если был режим single, отключает его, устанавливает громкость в 10% и через каждые 5 секунд прибавляет 1%. Пока не mpd не поставлен на паузу или не прошли 400 секунд. По завершении восстанавливает исходное состояние mpd (громкость, single).
mpdled.sh при включении у mpd режима single зажигает светодиод на устройстве cubietruck.
rg2cue.pl используется для сохранения рассчитаного значения replaygain в cue-файл.
rgcue2.sh рассчитывает значения replaygain путем копирования файлов во временную директорию, производит рассчет replaygain утилитой metaflac и передает результат утилите rg2cue.pl, которая сохраняет результат в cue.
sl2pl.pl разбирает отчет прошивки плееров rockbox и добавляет эту информацию в таблицу журнала прослушиваний музыкальной базы данных.
urgency.pl актуализирует информацию в музыкальной базе данных о треках музыкальной библиотеки на основе информации из cue. В том числе производит добавление новых композиций.
lib/CueParse2.pl Разбирает cue-файлы и возвращает структурированную информацию в виде хеша. Может сохранять cue. В том числе созданных в режиме noncompliant.
lib/MusicDB.pm Объектно-ориентированный интерфейс к музыкальной базе данных.