YA Auto-DJ — MVP автодиджея с кроссфейдом и BPM-анализом на базе Яндекс.Музыки.
- Backend: Python + FastAPI (проксирует mp3, работает с OAuth-токеном Яндекс.Музыки, выбирает лучшее качество)
- Frontend: React + TypeScript (плеер с кроссфейдом, выбор качества)
- Особенности: прямые mp3-ссылки быстро устаревают, поэтому используется прокси с авторизацией
- Ограничения: Яндекс может отдавать только превью через прокси, CORS-блокировки, нестабильность mp3-URL
- backend/ — FastAPI backend, вся логика работы с Яндекс.Музыкой, прокси, OAuth
- main.py — основной сервер
- yandex_client.py — работа с API Яндекс.Музыки
- config.py, models.py — конфиги и модели
- frontend/ — React + TypeScript SPA
- src/ — исходники фронта (App.tsx, player.ts, api.ts)
- README.md — документация
Автоматический DJ плеер с кроссфейдом и BPM-анализом на базе Яндекс.Музыки.
- Автоматический кроссфейд между треками
- BPM-анализ для синхронизации
- Интеграция с Яндекс.Музыкой через API
- Современный React + TypeScript интерфейс
- FastAPI backend с прокси для аудио
- Выбор лучшего качества (320kbps)
YA_API/
├── backend/ # FastAPI сервер
│ ├── main.py # Основной API
│ ├── yandex_client.py # Клиент Яндекс.Музыки
│ └── models.py # Pydantic модели
├── frontend/ # React + TypeScript
│ └── src/
│ ├── App.tsx # Главный компонент
│ └── player.ts # DJ плеер с кроссфейдом
└── README.md
cd backend
pip install -r requirements.txt
uvicorn main:app --reload --host 0.0.0.0 --port 8000cd frontend
npm install
npm run devСоздайте backend/.env:
YA_TOKEN=your_yandex_music_oauth_token- Backend API с FastAPI
- Интеграция с Яндекс.Музыкой через yandex-music
- Получение треков из альбомов, плейлистов, "Мне нравятся"
- Выбор лучшего качества (320kbps вместо 192kbps)
- Прокси для аудио с CORS заголовками
- React фронтенд с TypeScript
- DJ плеер с автоматическим переключением
- Кроссфейд между треками
- Отладочная информация в консоли
- CORS блокировка - реализован прокси
/audio-proxy?url=... - Превью вместо полного mp3 - добавлены правильные заголовки браузера
- Выбор качества - автоматический выбор 320kbps
- Ошибки авторизации - исправлено имя переменной
YA_TOKEN
-
Размер аудио файлов - прокси возвращает 639 байт вместо полного mp3
- Статус: В работе
- Причина: Яндекс возвращает превью несмотря на заголовки
- Решение: Экспериментируем с дополнительными заголовками
-
Ошибка "Unable to decode audio data"
- Статус: Связана с проблемой #1
- Причина: Слишком маленький файл (639 байт)
- Решение: Исправить получение полного mp3
- Исправить получение полного mp3 через прокси
- Добавить BPM-анализ для синхронизации
- Улучшить кроссфейд с плавными переходами
- Добавить визуализацию аудио
- Оптимизировать производительность
При запросе /tracks/7935690 в консоли backend:
🔍 Получено треков: 14
🎵 Трек 1: Sex Drive
До: https://api.music.yandex.net/get-mp3/...
После: /audio-proxy?url=https://api.music.yandex.net/get-mp3/...
📤 Отправляем результат с 14 треками
В консоли браузера:
🔄 Загружаю аудио: /audio-proxy?url=https://api.music.yandex.net/get-mp3/...
📡 Ответ сервера: 200 OK
📦 Размер аудио данных: 639 байт
❌ Ошибка загрузки аудио: EncodingError: Unable to decode audio data
# Проверка здоровья API
curl http://localhost:8000/health
# Получение треков
curl http://localhost:8000/tracks/7935690
# Тест прокси
curl "http://localhost:8000/audio-proxy?url=YOUR_MP3_URL"- Откройте http://localhost:5173
- Нажмите "Start DJ"
- Проверьте консоль браузера на ошибки
- ✅ Добавлен прокси для обхода CORS
- ✅ Реализован выбор лучшего качества (320kbps)
- ✅ Добавлена отладочная информация
- ✅ Исправлена авторизация Яндекс.Музыки
⚠️ Проблема с размером аудио файлов (639 байт)
- ✅ Базовая интеграция с Яндекс.Музыкой
- ✅ React фронтенд с TypeScript
- ✅ DJ плеер с автоматическим переключением
- ❌ CORS ошибки при воспроизведении
- Fork репозитория
- Создайте feature branch (
git checkout -b feature/amazing-feature) - Commit изменения (
git commit -m 'Add amazing feature') - Push в branch (
git push origin feature/amazing-feature) - Откройте Pull Request
MIT License - см. файл LICENSE для деталей.
- Исправить проблему с получением полного mp3 через прокси (сейчас возвращается превью)
- Добавить BPM-анализ треков для автоматического кроссфейда
- Реализовать кэширование mp3-файлов для стабильности
- Добавить WebSocket для real-time обновлений плеера
- Оптимизировать прокси для обхода ограничений Яндекса
- Автоматический подбор треков по BPM
- Плейлисты и история воспроизведения
- Поиск по трекам и артистам
- Настройки качества звука
- Эквалайзер и эффекты
- Docker-контейнеризация
- CI/CD pipeline
- Мониторинг и логирование
- Rate limiting для API
- Тесты (unit, integration)
- Адаптивный дизайн для мобильных
- Темная тема
- Анимации переходов
- Клавиатурные shortcuts
- Drag & drop для плейлистов