Задача
Привести в порядок большую свалку аудиофайлов - разложить их по папкам исполнителей (и опционально альбомов), даже если имена файлов и теги написаны по-разному (например, «Static-X» и «Static X» - один и тот же исполнитель).
Решение
Консольный скрипт на Python, который определяет исполнителя и альбом по имени файла, тегам (ID3/MP4) или структуре папок, умеет объединять разные варианты написания одного имени в одну папку и, при желании, уточнять «канонические» имена исполнителей через базу MusicBrainz.
- Определение исполнителя: из имени файла, тегов, структуры папок - в порядке приоритета
- Словарь алиасов - объединение разных вариантов написания имени в одну папку
- Уточнение канонических имён через MusicBrainz с локальным кэшем и паузой между запросами
- Режим
--dry-run- план действий без реального переноса файлов - Копирование вместо перемещения - на случай, если оригиналы нужно сохранить
- Поддержка форматов: mp3, flac, m4a, ogg, wma, aac
Результат
Готовый инструмент с режимом предпросмотра, поддержкой основных аудиоформатов и понятной документацией - можно запускать «как есть» на реальной библиотеке. Опубликован с открытой лицензией MIT.
Демо на синтетических именах файлов (без реального аудио и без привязки к настоящим исполнителям) - показывает логику объединения алиасов и структуру Artist/.
Стек
Честно: это личный утилитарный скрипт, а не production-сервис - не рассчитан на web UI или многопользовательский режим. Определение исполнителя/альбома основано на эвристиках и тегах; для сильно «грязных» библиотек может потребоваться донастройка словаря алиасов.