[О блоге] [наверх] [пред] [2023-01-22 20:00:24+03:00] [0e39e6d1b75b764057dc33f1d35d924bcb4ed5ea]
Темы: [music][tip]

Моя база данных музыки

http://www.git.stargrave.org/?p=dotfiles.git;a=blob;f=bin/bin/music-indexer
Впервые со времён школы, я хоть как-то решил чуть подразобраться с
коллекцией музыки своей.

Когда-то я хранил альбомы в виде "Artist/Year-Album". Позже перешёл на
Artist-Year-Album, так как просто нет смысла в иерархии, плюс бывают же
сборники с несколькими группами. Если присутствует несколько artist-ов,
то прописываю их в виде "ARTIST_and_ARTIST[_and_...]". Штатно все
названия групп используют заглавные буквы и поэтому "_and_" тут будет
выделяться своим особенными регистром.

Не у всех альбомов имеется год. В основном это очень старые директории,
которые появились у меня неизвестно откуда. Что делать если artist
содержит дефисы? Просто искать слово похожее на год между дефисами.
Может ли быть такое что в artist влезет и что-то похожее на год через
дефисы? Не исключено, но вроде бы пока не встретилось такое.

Я храню все трэки раздельно. Никаких контейнеров или одиночных файлов с
CUE. Во-первых, это потребует специального проигрывателя, который бы их
понимал. Во-вторых, gapless playback должен уметь этот самый
проигрыватель. Если не умеет, то объединить файлы в один продолжительный
аудиофайл легче, чем разделять его. Просто не вижу смысла в
неразделённых аудиофайлах. Файлы называются "XX.NAME.EXT", где "XX" это
номер трэка. Хотя для noisecore альбомов двухзначного числа не хватит
для всех трэков -- там, конечно, это поле шире.

Во всех именах пробел заменён на подчёркивание, ибо это жутко упрощает
ввод названий. Вот правда, когда у меня zsh стал без проблем раскрывать
и дополнять имена даже при их частичном вводе, это уже не должно быть
проблемой, но ведь это больше десяти лет прошло с момента появления
первых альбомов на жёстком диске.

Самый старый из использованным мною скриптов -- это torn, который
недавно переписался с Perl на zsh: 9dc73622854227df4a31a4c0a57adfc72a52ecd6
Его я использовал для транслитерации всего что на кириллице. Сейчас же я
перестал это делать, так как под Unix-ом с UTF-8 именами проблем нет,
как и с exFAT (хотя в нём например ":" символ, встречающийся в альбомах,
нельзя использовать).

Основной помощник в переименовании файлов это zsh и его zmv.
Сегодня вот проделывал к примеру:

    zmv '(*).cock_and_ball_torture-(*)-ify.mp3' '$1-$2.mp3'
    for i (*) mv $i Cock_And_Ball_Torture-${${(s/./)i}[-1]}-${${(s/./)i}[2,-2]}

Для разбивание lossless файлов по меткам из CUE файлов, использую
cuebreakpoints ....cue | shnsplit ....wav. А для того, чтобы трэки
переименовать в нормальные названия, то используется самописный
cueparser скрипт, выплёвывающий команды для переименования файлов. Ну а
GNU parallel-ом распараллеливаю процесс сжатия или разжатия. cdparanoia
используется для "оцифровки" аудио CD. Если где-то попадаются
проприетарные lossless форматы, типа ALAC/Monkey's Audio, то прежде
mplayer -aodump, а сейчас ffmpeg используются для получения .wav.

Весь lossless у меня в WavPack формате. Lossy... ну в чём получил его
изначально, в том и будет. Но вся метаинформация по возможности
(ID3-тэги, APE-тэги) выпилена. По факту lossy альбомов у меня больше
половины, но это всё полученные ещё в 2000-х годах, в основном грайндкор
который я не слушаю (а тот что слушаю, у меня есть в lossless). Lossy
записи у меня крайне редко звучат дома. А вот на работе, где нет
качественных наушников, нет смысла и таскать с собой lossless -- для
работы у меня в Opus перекодированные файлы валяются.

Собственно всё это было у меня без изменений более десяти лет. И в конце
2000-х у меня были несколько директорий: FATHERS, FOLK, HARTE, LEICHT,
NOISE. Альбомы папы, всякий рок, из которого я только AC/DC и Led
Zeppelin ставлю. Немного фольклорной музыки. Noisecore, harsh noise.
Что-то "тяжёлое" -- в основном грайндкор, black, death и подобное. А
лёгкое это всякий симфо метал и всё что не тяжёлое.

И так получилось, что HARTE у меня стал неким аналогом помойки
грайндкора который не слушаю, даже Gorguts со всем black metal
перекочевал в LEICHT. В LEICHT директории у меня музыка которую я
"знаю": помню что за исполнитель, что за альбомы. А после ряда последних
концертов у меня не один десяток новых альбомов появился, которые я
далеко не все ещё прослушал. Как я знакомлюсь с ними? Выдаю список
файлов с сортировкой по mtime и смотрю кто из них недавно был получен.
А LEICHT превратился в директори с мешаниной из Мадонны и сурового блэка
Funeral Mist и Napalm Death. В общем просто помойка с "актуальной"
lossless музыкой.

Решил свалить все альбомы в одну большую директорию, а дальше
символическими ссылками наделать, так называемых коллекций. Надо
поместить ряд альбомов в коллекцию black-а?:

    for i (Hate-* Immortal-* Ihsahn-20* Illt-2022-Mercy_Of_The_World)
        ln -s ../../$i cols/black/

Альбом может находится и в нескольких коллекциях само собой без проблем.
Плюс в том, что вся эта категоризация не затрагивает ни метаинформацию,
ни названия альбомов. Ещё не прослушанную музыку я просто помещаю в
cols/recent символическими ссылками.

Работы тут ещё надолго, ведь то, что раньше было HARTE -- та ещё
мешанина. Да и всё не тривиально: ведь многие группы в процессе своей
жизни кардинально меняли своё музыкальное направление. Ладно бы Napalm
Death, у которого несколько brutal death альбомов, но остальные, в
общем-то, grindcore. Но вот Carcass относится к goregrind-у только
первым альбомом. Bathory для меня это, в первую очередь, black metal
альбомы первые, но ведь дальше то у него были viking metal, которым не
особо то место в cols/black. Но тут я уж так не заморачиваюсь сильно.
Bathory у меня попадает в black.

А чтобы себе помочь с тем, чтобы получить список не категоризированной
музыки, начал писать zsh скриптики, которые превратились в один скрипт
создающий .rec базу данных с отпарсенными названиями альбомов,
исполнителей и годом выхода. Массу косяков обнаружил в названиях, что не
удивительно. Но теперь даже альбомы 1349-группы без проблем парсятся,
как и полностью кириллические:

    Artist: 1349
    Year: 2004
    Album: Beyond The Apocalypse
    Lossless: yes
    Collection: black

    Artist: Взрыв Кабачка В Коляске С Поносом
    Year: 2008
    Album: Меня не берут на работу, я нигде не учусь и я некрофил
    Collection: noise

* моментально получить список не-lossless или lossless альбомов:
    recsel -e '!Lossless'
    recsel -e '#Lossless'
* получить black метал альбомы 2010-го года:
    Collection = 'black' && Year = 2010
* альбомы группы Spasm, возможно сборники:
    Artist ~ 'Spasm'

Хотя сейчас мне этот файл будет помогать с категоризацией, ведь это
более 4700 альбомов.

    [оставить комментарий]