← Все кейсы
PythonCLIAPI

Автоматическая сортировка музыкальной библиотеки

Задача

Привести в порядок большую свалку аудиофайлов - разложить их по папкам исполнителей (и опционально альбомов), даже если имена файлов и теги написаны по-разному (например, «Static-X» и «Static X» - один и тот же исполнитель).

Решение

Консольный скрипт на Python, который определяет исполнителя и альбом по имени файла, тегам (ID3/MP4) или структуре папок, умеет объединять разные варианты написания одного имени в одну папку и, при желании, уточнять «канонические» имена исполнителей через базу MusicBrainz.

  • Определение исполнителя: из имени файла, тегов, структуры папок - в порядке приоритета
  • Словарь алиасов - объединение разных вариантов написания имени в одну папку
  • Уточнение канонических имён через MusicBrainz с локальным кэшем и паузой между запросами
  • Режим --dry-run - план действий без реального переноса файлов
  • Копирование вместо перемещения - на случай, если оригиналы нужно сохранить
  • Поддержка форматов: mp3, flac, m4a, ogg, wma, aac

Результат

Готовый инструмент с режимом предпросмотра, поддержкой основных аудиоформатов и понятной документацией - можно запускать «как есть» на реальной библиотеке. Опубликован с открытой лицензией MIT.

Код на GitHub

Стек

Python 3.10+ mutagen MusicBrainz API

Честно: это личный утилитарный скрипт, а не production-сервис - не рассчитан на web UI или многопользовательский режим. Определение исполнителя/альбома основано на эвристиках и тегах; для сильно «грязных» библиотек может потребоваться донастройка словаря алиасов.