Это приложение синхронизирует любимые треки между сервисами Yandex Music и Spotify. Оно позволяет автоматически добавлять новые треки из одного сервиса в другой, удалять дубликаты и отслеживать треки, которые не удалось найти в одном из сервисов.
- Двусторонняя синхронизация между Yandex Music и Spotify
- Автоматическое добавление новых треков
- Удаление дубликатов в обоих сервисах
- Отслеживание ненайденных треков
- Периодическая синхронизация каждые 60 секунд
- Возможность запуска в Docker
- Python 3.9+
pip
(менеджер пакетов Python)- Аккаунты Yandex Music и Spotify
- Токен Yandex Music
- Зарегистрированное приложение Spotify
- Docker и Docker Compose
Клонируйте репозиторий:
git clone https://github.com/anonymousmaharaj/spondex.git
cd spondex
- Переименуйте файл
.env.example
в.env
и заполните его своими (дальше будет описано как).
https://yandex-music.readthedocs.io/en/main/token.html
- Скопируйте полученный токен в переменную YANDEX_TOKEN в файл
.env
.
- Проще всего посмотреть сначала это видео: https://www.youtube.com/watch?v=kaBVN8uP358&t=0s
- Перейдите на Spotify Developer Dashboard.
- Создайте новое приложение.
- Получите
Client ID
иClient Secret
. - Добавьте
http://localhost:8888/callback
в список разрешенных URI для перенаправления. - Вставьте полученные данные в файл
.env
в переменные SPOTIPY_CLIENT_ID и SPOTIPY_CLIENT_SECRET.
Основная проблема заключается в том, что первый раз необходимо авторизоваться в Spotify через браузер. По этому первый шаг необходимо выполнить локально на устройстве с браузером.
У вас должен быть установлен Python 3.9+ для этого этапа.
-
Выполните аутентификацию Spotify:
Linux/macOS:
chmod +x scripts/start_auth.sh ./scripts/start_auth.sh
Windows:
scripts\start_auth.bat
Этот скрипт выполнит следующие действия:
- Создаст временное окружение, установит зависимости и запустит авторизацию в Spotify
- Создаст файл
.cache
, в котором будет сохранен ваш токен для Spotify
-
После этого можно запускать приложение в Docker.
Linux/macOS:
chmod +x scripts/start.sh ./scripts/start.sh
Windows:
scripts\start.bat
Если вы хотите запустить приложение на удаленном сервере, то необходимо скопировать файл .cache
на сервер в директорию с приложением и запустить скрипт start.sh
или start.bat
.
Параметры запуска передаются в виде аргументов скрипту, например:
./scripts/start.sh --sleep 120 --force-full-sync --remove-duplicates
Приложение поддерживает следующие параметры командной строки:
--sleep SECONDS
— интервал между синхронизациями в секундах (по умолчанию 60)--force-full-sync
— принудительная полная синхронизация всех треков--remove-duplicates
— удаление дубликатов после первой синхронизации
-
Первый запуск: используйте оба флага для полной синхронизации и очистки от дубликатов
./scripts/start.sh --force-full-sync --remove-duplicates
Это действие:
- Игнорирует предыдущие записи о синхронизации
- Проверяет все треки в обоих сервисах
- Добавляет недостающие треки в каждый сервис
- После завершения синхронизации удаляет дубликаты в обоих сервисах
После завершения первичной синхронизации можно запускать без флагов для инкрементальной синхронизации, остановив приложение командой
docker-compose down
и запустив его снова командой./scripts/start.sh
. -
Обычное использование: запускайте без флагов для инкрементальной синхронизации
./scripts/start.sh
Приложение будет:
- Синхронизировать только новые треки, добавленные после последней синхронизации
- Не удалять дубликаты автоматически
- Работать более быстро и эффективно
- Приложение синхронизирует только любимые треки и не работает с плейлистами.
- Из-за различий в каталогах музыки Yandex Music и Spotify, некоторые треки могут быть не найдены.
- При первом запуске в Docker требуется интерактивная авторизация через браузер.
Если вы хотите внести свой вклад в проект, пожалуйста, создайте issue или отправьте pull request.
Это приложение использует неофициальный API Yandex Music. Автор не несет ответственности за возможные последствия использования этого приложения, включая, но не ограничиваясь, блокировкой аккаунта Yandex Music или любые другие проблемы, связанные с использованием неофициального API. Используйте это приложение на свой страх и риск. Тем не менее, приложение разработано с учетом всех известных ограничений и должно работать корректно при нормальном использовании.
Этот проект распространяется под лицензией MIT. Подробности см. в файле LICENSE.