On Tue, 13 Jun 2017 17:49:32 +0300 artiom <artio...@yandex.ru> wrote:
> Для тех, кому нравится решать квесты. > > Как отсортировать музыку? Методом последовательных итераций. > > Нашёл на хабре, как некто сделал сначала перекодировку тэгов из > CP-1251, затем использовал easytag. Вообще говоря, easytag умеет работать с cp1251. Хотя у меня идея gui-программы со встроенным обходом директорий вызвает впечатление "рукалицо.жпг". > 3. Я не хочу заниматься сортировкой вручную. Разумным действием является "вытащить те файлы, которые удалось опознать автоматом", потом применить другой способ опознавания, и так далее, и тому подобное, пока не кончатся либо файлы, либо идеи как еще можно опознать файлы автоматом. Если первыми кончатся идеи, оставшиеся файлы, которых будет довольно немного, опознать вручную. > 4. Требуется: > - Опознать все файлы. > - Привести названия файлов к единому формату. > - Построить правильную иерархию каталогов. > - Сделать id3 тэги соответствующими файлам, к которым они применены. > - Привести содержимое id3 к единому формату. > - Привести кодировки id3 в UTF-8. Вот эти три пункта делаются одним движением в easytag. > - Сократить число форматов: только ogg, mp3 для музыки, mp4 для > видео. Дальше написано что там есть еще midi. midi переводить в ogg/mp3 не советую. Потому что превращение midi в аудиофайл - это процесс творческий, почти то же самое, что сыграть мелодию по нотам. Получается что у нас есть 1. midi - оно так midi и останется 2. loseless audio (например uncompressed wav) - его перегоняем в ogg 3. mp3 auido (которое может быть либо в mp3, либо в wav, содержащий внутри mp3. Его надо суметь отличить от uncompressed wav, и ежели такой найдется, не пытаться жать oggenc, а отрезать RIFF-заголовок и получать mp3. 4. Видео - его пережимаем в mp3, наплевав на возможные потери качества звука. > 4. Кодировки тэгов разные и частично поломаны: > > ХХХ (11) Кукрыниксы > Мастер-киллер Кукрыниксы > > Kukryniksy (19) ?????????? > ?? ??? ?????? ?????????? Вот тут интересный вопрос - это и правда там внутри файла лежат ASCII-символы 3F? Если да, то это пушистый полярный зверь. Информация из тэга утрачена безвозвратно и можно либо пытаться опознать на слух, либо обратиться к imdb. Но может быть все еще не так плохо, и это просто артефакты отображения. Т.е. берем какой-нибудь mp3info (или еще какую консольную тулзу потупее) и проходим им все файлы. Вывод пропускаем через автодетектор кодировок, напримет enca. Скорее всего на выходе получим файл в котором для большинства музыкальных файлов будет что-нибудь > > Герман Анна (3) бООБ > зПТЙ, ЗПТЙ НПС ЪЧЕЪДБ бООБ Здесь все понятно - 8-битная русская кодировка но не та. (т.е. написано в koi8/ прочитано в cp1251) > Murietta (22) > Ария Смерти > > Неопознанные файлы (160) > Äîðîæêà 8 Íåèçâåñòíûé èñïîëíèòåëü И здесь тоже ясно - это какая-то 8-битная русская кодировка мисинтерпретированная как iso8859-1. Скорее всего enca со всеми этими случаями справится. В результате получим большой текстовый файл который будет содержать для каждого файла в более-менее удодобочитаемом виде информацию из тэгов. (надо позаботиться чтобы имя файла при этом никуда не перекодировалось) Вот этот файл придется поредактировать вручную, серией глобальных замен приводя информацию из того вида, в каком она получилась, в тот, который хочется иметь. В этом месте, кстати, можно средствами редактора побороться с теми кодировками, с которыми не справилась enca. Потом превратить этот файл в шелловский скрипт, который переместит файл из исходного положения в ожидаемое (возможно с преобразованием формата), благо правильная команда перемещения/перекодирования добавляется глобальной заменой даже легче, чем разнообразный вид метаинформации приводится к стандартному (желаемому) пути. После запуска этого скрипта получаем иерархию каталогов, в которых файлы называются так, как нам хочется. Теперь запускаем easytag и велим ему информацию из имен файлов прописать в тэги.