Необходимо разработать функциональность для приложения на NestJS, которая будет включать следующие этапы:
- Загрузка MP3 файлов:
- Реализовать раздел для загрузки архивов в формате ZIP, содержащих MP3 файлы, либо загрузку нескольких отдельных MP3 файлов.
- Ограничить загрузку только форматом ZIP и MP3.
- Обработка MP3 файлов:
- Разработать логику для разбивки каждого MP3 файла на семплы.
- Интеграция с API для распознавания музыки:
- Проанализировать существующие API для распознавания музыки, такие как платные версии Shazam, и интегрировать подходящее решение.
- Настроить получение данных по каждому MP3 файлу, включая информацию об исполнителях, альбомах, названиях треков и идентификаторах, если таковые предоставляются.
- Сохранение данных в базу данных:
- Для каждого MP3 файла сохранить в базу данных следующую информацию:
- Исполнитель(и)
- Альбом
- Название трека
- Идентификатор, если он доступен
- Исключить дублирующие записи.
- Логирование процесса:
- Добавить систему логирования прогресса обработки задач, например, отображение прогресса в формате "1/10 сделано".
- Логировать ошибки, возникающие при взаимодействии с внешними сервисами.
Требования к стеку:
- Node.js: NestJS
- База данных: MySQL
- ORM: Sequelize или TypeORM
Ожидаемый результат:
Предоставить работающий модуль, который:
- Корректно принимает и обрабатывает загрузку файлов.
- Успешно интегрируется с выбранным API для распознавания музыки.
- Корректно сохраняет и логирует данные в базе данных.
- Логирует процесс выполнения задачи и возможные ошибки.