Программа для сбора и систематизации музыки
Find a file
2026-06-12 15:31:32 +03:00
src Реинициализация репозитория 2026-06-12 15:28:36 +03:00
.gitignore Реинициализация репозитория 2026-06-12 15:28:36 +03:00
Cargo.lock Реинициализация репозитория 2026-06-12 15:28:36 +03:00
Cargo.toml Реинициализация репозитория 2026-06-12 15:28:36 +03:00
LICENSE Initial commit 2026-06-12 14:35:12 +03:00
metacollector.toml.example Реинициализация репозитория 2026-06-12 15:28:36 +03:00
README.md Правки Readme.md 2026-06-12 15:31:32 +03:00

Metacollector

Утилита для организации аудиофайлов в структуру папок по альбомам с автоматическим исправлением и дополнением метаданных. Разработана для систематизации аудиофайлов, скачанных с Youtube. Фактически может разобрать поальбомно любую папку с мусорными аудиофайлами. Программа рассчитывает, что аудиофайлы уже отсортированы по исполнителям и просто правит метаданные, сортируя файлы по альбомам.

Возможности

  • Разбор имён файлов — извлекает исполнителя и название трека из имени файла по шаблонам (Artist - Title, Artist | Title, Title).
  • Чтение метаданных — считывает альбом, номер трека и обложку из тегов аудиофайла (lofty).
  • Поиск альбомов — находит недостающий альбом через Discogs (пакетно для всего исполнителя или по каждому треку) и Last.fm.
  • Автонумерация — нумерует файлы (01 - Title.opus) на основе номера дорожки из тегов или ответа API.
  • Структура папок — раскладывает файлы по папкам Artist/Album/.
  • Исправление тегов — записывает/обновляет метаданные (исполнитель, название, альбом, номер трека) внутри аудиофайла.
  • Обложки — извлекает встроенную обложку в отдельный cover.jpg. Опционально загружает обложку из интернета, если она качественнее встроенной (prefer_larger_art = true).
  • Синхронизированные тексты — загружает синхронизированные тексты (LRC) с lrclib.net.
  • Фото исполнителя — загружает фото исполнителя с Discogs.
  • Конфигурация — настройки через metacollector.toml в рабочей директории.

Поддерживаемые форматы

opus, mp3, flac, wav, m4a, ogg, wma, aac

Использование

metacollector [входная_папка] [выходная_папка]

По умолчанию входная папка — tests, выходная — совпадает со входной.

Каждая подпапка входной директории считается отдельным исполнителем. Если подпапок нет, вся входная директория обрабатывается как один исполнитель.

Конфигурация

Файл metacollector.toml (опционально):

discogs_token = аш_токен"       # повышает лимит запросов к Discogs
lastfm_api_key = аш_ключ"       # включает поиск через Last.fm (выключен по умолчанию)
prefer_larger_art = true           # загружать обложку из интернета, если она больше встроенной (false по умолчанию)

Без токенов и ключей программа работает в режиме free API — Discogs без аутентификации (25 запросов/мин), Last.fm отключён.

Приоритет поиска альбома

  1. Тег альбома в файле — ноль запросов к API.
  2. Пакетный поиск Discogs — по всем трекам исполнителя сразу.
  3. Поиск по каждому треку — Discogs → Last.fm (если включён).

Ограничения

  • Discogs: 25 запросов/мин без токена, ~60 с токеном. При превышении лимита возвращает 429 Too Many Requests.
  • Last.fm: требуется бесплатный API-ключ. Без него поиск отключён.
  • Сквозные точки монтирования: fs::rename не работает между разными файловыми системами — используйте копирование.
  • Имена файлов: парсинг завязан на регулярные выражения; нестандартные форматы имён могут не распознаться.
  • Обложки из API: cover_image возвращается только поисковым эндпоинтом Discogs (per-file поиск). Пакетный поиск (batch) не предоставляет URL обложки.

Зависимости

  • tokio, reqwest — асинхронные HTTP-запросы
  • lofty — чтение/запись аудиотегов
  • serde, serde_json, toml — конфиг и парсинг JSON
  • regex — разбор имён файлов
  • env_logger — логирование (RUST_LOG=debug для деталей)