Сайт: spotysync.ru
- Поиск публичных плейлистов Яндекс.Музыки по логину
- Перенос плейлиста «Мне нравится» (все лайкнутые треки)
- Прогресс-бар в реальном времени (SSE)
- Очередь задач — пользователи обрабатываются по одному
- Глобальный счётчик перенесённых треков
- История переносов в браузере (localStorage)
- Восстановление результата после перезагрузки страницы
| Компонент | Технология |
|---|---|
| Backend | Python 3.12, FastAPI, Uvicorn |
| Spotify API | Spotipy |
| Yandex Music | Internal API + yandex-music (token) |
| Frontend | HTML / CSS / Vanilla JS |
| Стриминг | SSE (Server-Sent Events) |
| Деплой | Docker, docker-compose |
git clone https://github.com/S4YN3X/spotysync.git
cd spotysyncSPOTIFY_CLIENT_ID=client_id
SPOTIFY_CLIENT_SECRET=client_secret
SPOTIFY_REDIRECT_URI=http://localhost:8000/callback
YANDEX_TOKEN=токен_яндекса
YANDEX_TOKENнужен для загрузки плейлиста «Мне нравится» и получения полных данных о треках.
mkdir -p data
echo '{"total_tracks_synced": 0, "total_playlists": 0}' > data/stats.jsondocker-compose up --build -dОткройте в браузере: http://localhost:8000
- Откройте сайт — spotysync.ru (или
localhost:8000локально) - Введите логин от Яндекс.Музыки (например,
ivan.ivanov) - Выберите плейлист — появится список всех открытых плейлистов + «Мне нравится»
- Дождитесь переноса — прогресс отображается в реальном времени
- Откройте в Spotify — нажмите кнопку и сохраните плейлист в свою библиотеку
⚠️ Приватные плейлисты не будут найдены. Сделайте их открытыми в настройках Яндекс.Музыки.
app/
├── main.py # FastAPI backend
├── Dockerfile
├── docker-compose.yml
├── .env # Переменные окружения
├── data/
│ └── stats.json # Глобальная статистика
└── static/
├── index.html # Главная страница
├── app.js # Frontend логика
└── style.css # Стили
Количество одновременных переносов настраивается в main.py:
MAX_CONCURRENT_JOBS = 1Файл статистики хранится в data/stats.json и монтируется через Docker volume:
volumes:
- ./data:/app/data- Rate limiting по IP
- Кэширование результатов поиска Spotify
- SQLite для серверной истории переносов
- Админ-панель со статистикой
MIT License — см. LICENSE
Сделано с ❤️ by S4YN3X
