Sound
13 February 2012

Упорядочивание аудиотеки. Практические советы

Введение


Вообще, я во многих вопросах перфекционист. Если есть — нужно, чтобы было безупречно (иногда это сказывается отрицательно, но сейчас не об этом). Свою аудиоколлекцию я тоже привык держать в чистоте. Но со временем, при пополнении стало накапливаться много мелких неприятностей. Вот некоторые из них:
  • Разные шаблоны для имен файлов: 4 — Звезда | 04 — Звезда | 04. Звезда
  • Разные имена исполнителей в тегах: Чиж & Co | Чиж и Ко. | Mylene Farmer | Mylène Farmer
  • Не указаны исполнители альбома (что приводит к полному бардаку в альбомах-компиляциях)
  • Не совсем корректная информация об альбомах, состоящих из нескольких дисков
  • Путаница в годах изданий и переизданий (ремастеринг, и т.д.)
Ну и прочие мелочи.
Часто у пользователей коллекции составляют несколько тысяч, а иногда — несколько десятков тысяч записей. Так что, перелопачивать все вручную — долго и неэффективно.

Данное руководство предназначено для того, чтобы с минимальными затратами привести аудиоколлекцию к максимально упорядоченному виду. В отличие от общедоступной информации, которую можно найти в Интернет, здесь также присутствует мой личный опыт (как положительный, так и отрицательный). В итоге получаем полностью пересортированную коллекцию. Все нижесказанное можно применять для любых коллекций, однако оптимальный вариант — если коллекция по большей части состоит из полных официальных альбомов, с минимальным содержанием разрозненных треков.

Этап 1. Предварительная чистка


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

Для начала нам нужно пройтись по всем файлам и папкам и бегло их почистить. Выбросить все лишнее, что вы не слушаете и вряд ли будете. Например, у меня было много переизданий (т.е. фактически дублей), бутлегов, всяких Live-раритетов, которых я даже ни разу не слушал, а просто держал для коллекции… В общем — удаляйте на ваше усмотрение, по возможности оставляйте только полные и официальные альбомы. Это не критичный, но довольно важный этап. Впоследствии благодаря этому вы сможете здорово сэкономить время.

Этап 2. Распознавание альбомов и композиций


Этот этап — самый важный. Здесь выполняется распознавание и сортировка композиций. Для этого нам нужна будет программа MusicBrainz Picard.
Чтобы не делать одну и ту же работу два раза, на этом и всех последующих этапах обязательно внимательно просматривайте настройки всех программ.
Окно настроек MusicBrainz PicardРекомендую начать все переделывать с чистого листа. Для этого в настройках MusicBrainz включаем перенос файлов и указываем папку назначения. Также я бы рекомендовал очистить всю старую информацию в тегах.
Небольшое отступление по поводу тегов ID3. Версия 2.4 является более продвинутой, но не все программы умеют корректно с ней работать. В частности, Windows Explorer и Windows Media Player (до 12-й версии включительно) не понимают кодировку. Так что, если хотите совместимости — включайте 2.3. Если хотите более прогрессивного формата с плюшками типа UTF-8 и расширенным набором тегов — ставьте 2.4. Я во всех программах выставлял версию 2.4 (забегая наперед — foobar2000 и Google Music понимают без проблем; Winamp тоже должен).

Программа распознает два типа альбомов: обычные и сборники (компиляции). Сборники — это когда в альбоме больше одного исполнителя. У меня из сборников обнаружились различные трибьюты и сборник «The Best of Classics». Сборники скидываются в одну папку (обычно она называется Various Artists), которую можно впоследствии рассортировать.
Обратите внимание на пункт настроек «Перенос файлов», в нем настраивается переименование и сортировка по папкам. Там используется небольшой скриптовой язык (такой же, как в foobar2000), с его помощью вы сможете настроить шаблоны, как вам захочется. Установки по умолчанию довольно универсальные, но для себя я их немного подправил:

$if2(%albumartist%,%artist%)/$if2($left(%originaldate%,4),$left(%date%,4)) - %album%/$if($gt(%totaldiscs%,1),%discnumber%-,)$num(%tracknumber%,2) - %title%
$if2(%albumartist%,%artist%)/$if2($left(%originaldate%,4),$left(%date%,4)) - %album%/$if($gt(%totaldiscs%,1),%discnumber%-,)$num(%tracknumber%,2) - %artist% - %title%

Первая строка — для альбомов, вторая — для компиляций. Обратите внимание, что здесь переменная %date% обозначает дату издания (или переиздания), а не дату выхода альбома.
Указанные шаблоны генерируют имена, подобные этим:

Music\Сплин\2002 - Акустика\2-05 - Моё сердце.mp3
Music\Various Artists\2001 - Fellini Tour\14 - Сплин - Моё сердце.mp3

После того, как мы убедились, что все настройки выставлены правильно, можно скармливать всю свою коллекцию и идти пить кофе. Ну или спать, в зависимости от размера коллекции. Работает программа довольно медленно, в минуту обрабатывается порядка 20 файлов. Чем больше информации можно извлечь из тегов и названия — тем быстрее будет происходить обработка.
Для статьи я проводил тестирование в «экстрим»-режиме: взял несколько десятков треков, поудалял из них все теги, и переименовал случайным образом. Результат виден на скриншоте.

Окно настроек MusicBrainz Picard

Справа отображаются опознанные треки, сгруппированные в альбомы. Но иногда нужно помогать программе распознавать треки. Файл может не опознаться, или в «кандидаты» на трек альбома может попасть несколько файлов. В этом случае придется выбирать вручную. Уровень совпадения обозначается цветом — от зеленого до красного. При проверке сравниваются некоторые теги и «fingerprint» трека.
Альбом помечается как золотой (в смысле, желтый :)), если в нем присутствуют все треки, и нет никаких множественных интерпретаций. Наша цель — добиться максимального количества золотых альбомов. Также обратите внимание, что содержимое альбома может меняться в зависимости от выпускающей студии, иногда ручное изменение редакции поможет добиться более точного соответствия. Обработанные альбомы периодически сохраняйте в папку назначения.

Этап 3a. Ручная доработка имен


Если бы мир был идеален, то кроме второго этапа нам больше ничего бы не понадобилось. Но увы, MusicBrainz может сделать довольно большую часть работы, но не всю. В его базе могут отсутствовать некоторые ваши альбомы. В этом случае у вас в исходной папке останется часть неотсортированной музыки.
Этапы ручной доработки довольно стандартные, так что воспринимайте написанное не более, чем как рекомендацию. Но я все-таки опишу их поподробнее, для целостности всего комплекса действий. Цель данного этапа — привести структуру файлов и каталогов к виду, который 1) был бы правильный, и 2) удовлетворял бы вашим требованиям.

Запускаем любимый файл-менеджер, идем в папку с оставшейся неотсортированной музыкой, и начинаем. Сначала мы должны привести структуру и названия к единому виду. Если у вас опозналась часть альбомов группы Чёрный кофе — проверьте, везде ли у вас одинаковое название группы. Если у вас в отсортированной музыке шаблон имени NN — Trackname.mp3 — переименуйте все оставшиеся файлы соответствующим образом. Для облегчения группового переименования можете воспользоваться Mp3tag. Как им пользоваться, я объяснять не буду. Мы должны добиться идеального соответствия структуры обеих папок, чтобы после их слияния нельзя было сказать, что откуда было.
После этого можно сливать две папки в одну. В принципе, на этом можно и закончить. Но многие захотят еще чуть-чуть дошлифовать файловую структуру. Например, по умолчанию сборники скидываются в папку Various Artists, но зачастую они в большей мере имеют отношение к какому-то одному исполнителю. Так что все содержимое из Various Artists можно смело раскидывать по другим каталогам. Также бывает, что альбомы слишком детализированы по исполнителям: Чиж, Чиж & Co, Чиж и Разные люди, Чиж и Паша, Чернецкий и Чиж, … Зачастую там находится всего по одному альбому. Меня это не совсем устраивало, поэтому я слил все подобные группы папок в одну.

Этап 3b. Ручная доработка тегов


После того, как вся нужная музыка оказалась в нужном месте и стала правильно называться, можем заняться шлифовкой тегов. Теперь Mp3tag нам нужен обязательно. Собственно, все операции подобны тем, которые были на предыдущем этапе, только относительно к тегам. Сначала нужно привести теги к единому виду, а потом — доработать, как вам нравится.
К сожалению — единственный способ это сделать — пройтись вручную по всем альбомам и композициям. К счастью — бо́льшая часть композиций уже готова, и мы работаем только с неотсортированной частью.
По поводу доработки мелочей. Здесь все зависит от ваших требований. Эту часть можно даже вообще пропустить. Лично я сделал следующие манипуляции:
  • Посливал составные альбомы в один, прописав в тегах номер диска
  • Конкретизировал всех исполнителей альбомов (там, где было Various Artists)
  • Подкорректировал имена файлов, где служебные символы были заменены подчеркиванием
В общем, стоит пробежаться по всей коллекции, и проверить две вещи: 1) нет ли разногласий в пределах одной группы треков (название исполнителя, нумерация, и т.д.), и 2) устраивает ли вас, как это выглядит.
Пару слов теге Album Artist. Возьмем, к примеру, альбом «Пикник — Трибьют». В альбоме 18 треков, их исполняют 18 различных групп. Но можно смело прописать «Пикник» в теге исполнителя альбомов, и он в цельном виде появится среди альбомов Пикника. Такая концепция используется очень часто, и тег Album Artist при сортировке имеет больший приоритет, чем тег Artist.
Еще хочу сказать, что в Mp3tag есть базовые возможности скриптования, что позволяет производить манипуляции с тегами и именами в довольно широких пределах. Дополнительно смотрите окно «Действия» и справку к нему. Мне это понадобилось, чтобы исправить некоторую незарбериху с датами, сделанную по глупости.

Этап 4. Определение жанра


После обработки тег Genre будет незаполненным. И хотя в MusicBrainz была опция автоматического заполнения жанров, но у меня она, почему-то, не сработала. Так что, придется искать другие средства. Впрочем, этот пункт можно пропустить, если вас не интересует информация о жанрах.
Как оказалось, с автоматическим определением жанра все туговато. А с жанрами для русских песен — еще хуже. Но я постарался выбрать лучшее из худшего, и остановился на комбайне MediaMonkey. Кстати, есть portable-вариант установки. Для поиска жанров к нему есть скрипт, называющийся Genre Finder. Насколько я понимаю, этот скрипт использует Last.fm API, поэтому нужно очень внимательно отнестись к настройкам: их немного, но от них очень сильно зависит конечный результат. Вполне вероятно, что вы захотите сделать несколько пробных проходов с различными вариантами настроек.
Первое, что хочу посоветовать — да, можете делать множественное определение жанров, но всегда ограничивайте сверху их количество. Поверьте, лучше уж пропустить какой-то жанр, чем потом вычищать хардкор типа «THE BEST EVER SONG IN MY LIFE!!!!11» или «Kill me I cant hear it!». Также обратите внимание на возможность установки whitelists/blacklists. Я этим пренебрег, и потом потерял время при ручной чистке. Готовые белые списки можно найти на форуме по ссылке выше.
MediaMonkeyРекомендую сначала определить 2-3 жанра в режиме поиска альбомов. Можете после этого добавить еще пару жанров, но уже в режиме поиска по отдельным трекам. Здесь же, в MediaMonkey можно параллельно смотреть и шлифовать получившийся список жанров.
Стоит сделать небольшое уточнение касательно foobar2000: так получилось, что он не распознает множественные значения в одном теге, разделенные точкой с запятой (как их пишет MediaMonkey). С другими проигрывателями вроде таких проблем нет. Но проблема решается с помощью того же foobar'а. Выделите весь список своих песен, нажмите Alt+Enter (команда Properties), кликните по тегу Genre, и затем выберите Tools — Selection — Split values.... Данная команда разобьет значения из одного тега на «правильные» множественные теги.

Этап 5. Обложки альбомов


Ну и последний этап — cover arts. Здесь все намного лучше, чем с предыдущим пунктом. Есть много программ, умеющих искать обложки. Некоторые из них позволяют заливать миниатюры обложек напрямую в теги файла (правда, я довольно прохладно отношусь к этой «фиче»). Но, по моему скромному мнению, самые широкие возможности у Album Art Downloader.
Album Art DownloaderВ настройках я бы порекомендовал поднять минимальный размер обложки (хотя бы до 50 px), и включить опцию «Automatically close after saving».
Нам нужно будет сделать два прохода (установлено экспериментальным путем; никакие другие источники, включая iTunes, не дают лучшего результата). Сначала отключаем все источники (область справа), кроме Last.fm, и сканируем всю нашу музыку. После процесса поиска и анализа у нас появится окно Queue Manager, где будет список всех найденных альбомов. На этом этапе можно спокойно запустить автоматический режим (ссылка в нижней части окна Queue Manager) и ждать завершения.
Queue ManagerЕсли у вас после первого прохода остались нераспознанные альбомы, меняем источник с Last.fm на Google Images, и запускаем обработку оставшихся альбомов. Здесь я бы порекомендовал быть осторожнее и проверять каждый альбом вручную. Лично мне хватило этих двух проходов; остальные источники были для меня совсем неадекватными, но вы можете попробовать — у каждого из них своя специфика.
Ну, вроде бы и все. Но есть еще маленький нюанс. Дело в том, что часть альбомов имеет обложку в формате PNG. Как оказалось, Google Music понимает только JPEG, да и вообще, этот формат как бы более распространен. Так что при желании можно все сконвертировать в JPEG.
Только мне что-то не удалось быстро найти бесплатную утилиту, которая просто бы рекурсивно нашла все PNG-файлы, и переименовала их в JPEG. Если знаете таковую — пользуйте. Можете сделать пакетную обработку в Photoshop'е. Можете призвать на помощь продвинутый файл-менеджер. Я же просто оставлю здесь PowerShell-скрипт, который как раз это и делает — выбирает рекурсивно все PNG, и конвертирует их. Оригинальные файлы при этом остаются, можете потом удалить их вручную.

function ConvertTo-Jpg
{
    [cmdletbinding()]
    param([Parameter(Mandatory=$true, ValueFromPipeline = $true)] $Path)

    process{
        if ($Path -is [string])
        { $Path = get-childitem $Path }

        $Path | foreach {
            $image = [System.Drawing.Image]::FromFile($($_.FullName))
            $FilePath =  "{0}\{1}.jpg" -f $($_.DirectoryName), $($_.BaseName)
            $image.Save($FilePath, [System.Drawing.Imaging.ImageFormat]::Jpeg)
        }
    }
 }

 cd "D:\Music\"
 Get-ChildItem -Filter *.png -Recurse | ConvertTo-Jpg

Итог


Вот, собственно, и все. Такой себе коротенький мануал получился :)
В общем, да, процесс нетривиален, и при большой коллекции может быть длительным; кнопки «Сделать все как надо» здесь нет. Но, во-первых, в любом случае, правила, вкусы и предпочтения у каждого разные, соответственно, и настройки тоже у каждого будут разные. Во-вторых, на протяжении всего процесса нам помогали мощные программы, которые в значительной степени автоматизировали работу. Ну, и в-третьих, не обязательно с точностью повторять прохождение всех этапов; думаю, каждый может найти для себя оптимальный путь.

Зато, в итоге мы получаем:
  • Единую упорядоченную структуру на уровне файловой системы
  • ID3-теги, полностью заполненные (вплоть до композитора) по единым правилам
  • Возможность сортировки по жанрам и другим меткам
  • Обложки ко всем альбомам
  • Эстетическое удовольствие от осознания факта, что у вас практически идеальный порядок :)
Sorted collection

Теперь в таком виде коллекцию с радостью скушает любой медиакомбайн или Google Music.

Все указанные выше приложения бесплатны, все совпадения случайны, и конечно же, используйте данную информацию только в благих целях :)

+72
172.9k 730
Comments 78