Это приложение синхронизирует любимые треки между сервисами Yandex Music и Spotify. Оно позволяет автоматически добавлять новые треки из одного сервиса в другой, удалять дубликаты и отслеживать треки, которые не удалось найти в одном из сервисов.
- Двусторонняя синхронизация между Yandex Music и Spotify
- Автоматическое добавление новых треков
- Удаление дубликатов в обоих сервисах
- Отслеживание ненайденных треков
- Периодическая синхронизация каждые 60 секунд
- Python 3.9+
pip
(менеджер пакетов Python), а лучшеuv
- Аккаунты Yandex Music и Spotify
- Токен Yandex Music
- Зарегистрированное приложение Spotify
- Клонируйте репозиторий:
git clone https://github.com/anonymousmaharaj/spondex.git
cd spondex
-
Создайте виртуальное окружение:
- Если у вас установлен
venv
:
python -m venv venv source venv/bin/activate # Для Linux/macOS venv\Scripts\activate # Для Windows
- Если у вас установлен
conda
:
conda create -n spondex python=3.9 conda activate spondex
- Если у вас установлен
-
Установите зависимости:
pip install uv && uv pip install -r requirements.txt
- Создайте файл
.env
в корневой директории проекта и добавьте следующие строки:
YANDEX_TOKEN=ваш_токен_yandex_music
SPOTIPY_CLIENT_ID=ваш_client_id_spotify
SPOTIPY_CLIENT_SECRET=ваш_client_secret_spotify
SPOTIPY_REDIRECT_URI=http://localhost:8888/callback
https://yandex-music.readthedocs.io/en/main/token.html
- Проще всего посмотреть сначала это видео: https://www.youtube.com/watch?v=kaBVN8uP358&t=0s
- Перейдите на Spotify Developer Dashboard.
- Создайте новое приложение.
- Получите
Client ID
иClient Secret
. - Добавьте
http://localhost:8888/callback
в список разрешенных URI для перенаправления. - Переименуйте
.env.example
в.env
- Вставьте полученные данные в файл
.env
.
Запустите приложение командой:
python main.py --sleep 120 --force-full-sync --db-path music_sync.db
Приложение будет автоматически синхронизировать треки каждые 60 секунд.
При первом запуске вам потребуется авторизоваться в Spotify. После этого в корне проекта появится файл .cache
, в котором будет сохранен ваш токен.
Так же рекомендуется при первом запуске установить флаг force_full_sync
, чтобы приложение могло синхронизировать весь ваш музыкальный каталог. И после этого оно удалит дубликаты, так как Spotify может добавить в любимые треки те, которые уже есть там.
После первой синхронизации перезапустите приложение без флага force_full_sync
, чтобы приложение не синхронизировало весь каталог снова.
Приложение будет работать в фоновом режиме, синхронизируя треки каждые 60 секунд. Для остановки нажмите Ctrl+C.
В настоящее время запуск приложения в Docker находится в разработке. Мы планируем добавить эту возможность в ближайшем будущем, чтобы упростить развертывание и использование Spondex
в различных средах. Следите за обновлениями проекта для получения информации о доступности Docker-версии.
Приложение использует SQLite базу данных music_sync.db
со следующими таблицами:
synced_tracks
: Хранит информацию о синхронизированных треках.sync_status
: Отслеживает время последней синхронизации для каждого сервиса.undiscovered_tracks
: Хранит информацию о треках, которые не удалось найти в одном из сервисов.
Приложение ведет лог своей работы, который выводится в консоль. Вы можете увидеть информацию о добавленных треках, удаленных дубликатах и ошибках.
-
Если возникают ошибки авторизации в Spotify, убедитесь, что вы правильно настроили приложение в Spotify Developer Dashboard и корректно указали данные в файле
.env
. -
Если треки не синхронизируются с Yandex Music, проверьте правильность токена Yandex Music в файле
.env
. -
Если приложение не находит некоторые треки, проверьте таблицу
undiscovered_tracks
в базе данных. Возможно, потребуется ручное добавление этих треков.
- Приложение синхронизирует только любимые треки и не работает с плейлистами.
- Из-за различий в каталогах музыки Yandex Music и Spotify, некоторые треки могут быть не найдены.
Если вы хотите внести свой вклад в проект, пожалуйста, создайте issue или отправьте pull request.
Это приложение использует неофициальный API Yandex Music. Автор не несет ответственности за возможные последствия использования этого приложения, включая, но не ограничиваясь, блокировкой аккаунта Yandex Music или любые другие проблемы, связанные с использованием неофициального API. Используйте это приложение на свой страх и риск. Тем не менее, приложение разработано с учетом всех известных ограничений и должно работать корректно при нормальном использовании.
Этот проект распространяется под лицензией MIT. Подробности см. в файле LICENSE.