DJMAKER — кроссплатформенная desktop-программа на Python/Flet для ведения музыкальной библиотеки.
- сканирование папок с музыкой;
- нативный Drag&Drop аудиофайлов и папок в desktop-сборках с автоматической фильтрацией неподдерживаемых форматов;
- SQLite-медиатека;
- чтение технических параметров и тегов через Mutagen;
- точные дубликаты по SHA-256;
- редактор тегов по двойному клику по треку с сохранением изменений непосредственно в аудиофайл;
- просмотр, замена и удаление встроенной JPEG/PNG-обложки для MP3/FLAC/M4A;
- перенос/переименование файлов по шаблону;
- фоновые worker-задачи для тяжёлых операций;
- экран «Задачи» с прогрессом, остановкой, отменой и возобновлением долгих операций;
- архитектура онлайн-провайдеров;
- MusicBrainz как первый провайдер метаданных;
- системная, светлая и тёмная тема интерфейса с сохранением выбора;
- глобальный редактор цветовых ролей темы с отдельными Light/Dark override-значениями и live-preview;
- цветовые схемы DJMAKER Blue, Violet, Emerald, Amber, Graphite, «Чистый графен» и «Строгий»;
- автоматическая установка FFmpeg и собственного Essentia runtime;
- пакетный многопоточный полный анализ через FFmpeg → Essentia: BPM, Key, Camelot, позиции долей, первая сильная доля и стабильность темпа; рассчитанные BPM/Key записываются в теги файлов;
- визуальный редактор BPM-сетки с масштабом, прослушиванием от курсора, исправлением BPM/первой/сильной доли и линейными Warp-якорями;
- встроенные обложки MP3/FLAC/M4A с локальным content-addressed кэшем;
- компактный Waveform-анализ через FFmpeg с отображением формы волны в строке трека;
- локальный preview-player: воспроизведение по клику на обложку и seek по клику на waveform;
- плавное атомарное переключение preview-player между треками без промежуточного дрожания waveform;
- оптимизированный SVG-waveform: широкие вертикальные полосы и частичное обновление прогресса без полной перерисовки медиатеки;
- плавная центровка выбранного трека в медиатеке с сохранением lazy-rendering списка;
- сохраняемый масштаб строк медиатеки 70–150% с шагом 10%, включая обложку, текст, теги и waveform;
- трёхстрочное отображение трека: исполнитель/название с Key и BPM, технические badge-теги с альбомом и кликабельный путь;
- компактное расположение Key/BPM сразу после названия без растягивания пустого промежутка на широких окнах;
- двойной клик по пути открывает Explorer/Finder с выделением исходного файла;
- двойной клик по остальной области строки трека открывает редактор тегов;
- тематический поисковый блок медиатеки с debounce-поиском по исполнителю, названию, альбому, album artist, жанру, формату, Key/Camelot и пути;
- точки расширения для нормализации и аудио-fingerprint.
- Python 3.14+
- Windows 10/11 или macOS
python -m venv .venvWindows:
.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
python -m pip install -e .
djmakermacOS:
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -e .
djmakerТакже можно запустить:
python -m djmakerСистемный Drag&Drop из Explorer/Finder реализован через Flutter-extension flet-dropzone.
Обычный python -m djmaker продолжает работать как раньше, но нативный внешний drop в таком режиме не активируется. Для проверки Drag&Drop сначала установите build-extra:
python -m pip install -e ".[desktop-build]"Затем запускайте desktop debug-сборку из корня проекта:
Windows:
flet debug windows .macOS:
flet debug macos .В desktop-сборке можно перетаскивать одиночные файлы, группы файлов и папки. Папки обходятся рекурсивно. Форматы, не входящие в список поддерживаемых аудио-расширений DJMAKER, автоматически пропускаются и не передаются в Mutagen/FFmpeg/Essentia.
python -m unittest discover -s tests -vDJMAKER_DATA_DIR— переопределяет каталог данных приложения.DJMAKER_MUSICBRAINZ_CONTACT— контакт для User-Agent MusicBrainz, например URL проекта или email.
Шаблон по умолчанию:
{artist}/{album}/{track:02d} - {title}.{ext}
Поддерживаемые поля: artist, album, album_artist, title, year, track, disc, ext.
Исходный файл не удаляется отдельно: при организации используется перенос. При конфликте имени создаётся безопасный суффикс (1), (2) и т.д.
- модуль нормализации с основной целью -11.5 LUFS;
- аудио-fingerprint для смысловых/музыкальных дубликатов;
- отдельные плагины Discogs, Beatport, Traxsource и DJ-пулов;
- пакетная обработка тегов и файлов.
В Настройки → Локальные данные доступно безопасное действие «Обнулить БД». Оно очищает индекс медиатеки, музыкальные папки, результаты анализа и ошибки сканирования только в SQLite. Исходные музыкальные файлы и их теги не изменяются. Во время активных фоновых задач обнуление заблокировано.
Поле поиска оформлено без собственной внутренней рамки и использует внешний контейнер блока. При наличии текста справа внутри поля появляется крестик очистки; он мгновенно сбрасывает запрос и возвращает полный список медиатеки.
После полного анализа в строке трека становится доступна кнопка с иконкой сетки. Редактор показывает детальный waveform, найденные Essentia удары, доли, такты и музыкальные квадраты. Можно изменить BPM, первую и сильную долю, поставить курсор кликом, прослушать аудио с выбранной позиции и добавить Warp-якорь. Между двумя Warp-якорями сетка линейно растягивается; некорректный или обратный участок сохранить нельзя. Изменения хранятся в SQLite и не переписывают аудиофайл.