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 и велим ему информацию из имен файлов
прописать в тэги.



Ответить