Skip to content

anonymousmaharaj/spondex

Repository files navigation

Spondex - музыкальный синхронизатор Yandex Music и Spotify

Описание

Это приложение синхронизирует любимые треки между сервисами 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

Предварительная настройка

  1. Переименуйте файл .env.example в .env и заполните его своими (дальше будет описано как).

Получение токена Yandex Music

https://yandex-music.readthedocs.io/en/main/token.html

  1. Скопируйте полученный токен в переменную YANDEX_TOKEN в файл .env.

Настройка приложения Spotify

  1. Проще всего посмотреть сначала это видео: https://www.youtube.com/watch?v=kaBVN8uP358&t=0s
  2. Перейдите на Spotify Developer Dashboard.
  3. Создайте новое приложение.
  4. Получите Client ID и Client Secret.
  5. Добавьте http://localhost:8888/callback в список разрешенных URI для перенаправления.
  6. Вставьте полученные данные в файл .env в переменные SPOTIPY_CLIENT_ID и SPOTIPY_CLIENT_SECRET.

Рекомендуемый способ запуска приложения (Docker Compose)

ВНИМАНИЕ

Основная проблема заключается в том, что первый раз необходимо авторизоваться в Spotify через браузер. По этому первый шаг необходимо выполнить локально на устройстве с браузером.

У вас должен быть установлен Python 3.9+ для этого этапа.

  1. Выполните аутентификацию Spotify:

    Linux/macOS:

    chmod +x scripts/start_auth.sh
    ./scripts/start_auth.sh

    Windows:

    scripts\start_auth.bat
    

    Этот скрипт выполнит следующие действия:

    • Создаст временное окружение, установит зависимости и запустит авторизацию в Spotify
    • Создаст файл .cache, в котором будет сохранен ваш токен для Spotify
  2. После этого можно запускать приложение в 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 — удаление дубликатов после первой синхронизации

Рекомендуемый сценарий использования

  1. Первый запуск: используйте оба флага для полной синхронизации и очистки от дубликатов

    ./scripts/start.sh --force-full-sync --remove-duplicates

    Это действие:

    • Игнорирует предыдущие записи о синхронизации
    • Проверяет все треки в обоих сервисах
    • Добавляет недостающие треки в каждый сервис
    • После завершения синхронизации удаляет дубликаты в обоих сервисах

    После завершения первичной синхронизации можно запускать без флагов для инкрементальной синхронизации, остановив приложение командой docker-compose down и запустив его снова командой ./scripts/start.sh.

  2. Обычное использование: запускайте без флагов для инкрементальной синхронизации

    ./scripts/start.sh

    Приложение будет:

    • Синхронизировать только новые треки, добавленные после последней синхронизации
    • Не удалять дубликаты автоматически
    • Работать более быстро и эффективно

Ограничения

  • Приложение синхронизирует только любимые треки и не работает с плейлистами.
  • Из-за различий в каталогах музыки Yandex Music и Spotify, некоторые треки могут быть не найдены.
  • При первом запуске в Docker требуется интерактивная авторизация через браузер.

Вклад в проект

Если вы хотите внести свой вклад в проект, пожалуйста, создайте issue или отправьте pull request.

Отказ от ответственности

Это приложение использует неофициальный API Yandex Music. Автор не несет ответственности за возможные последствия использования этого приложения, включая, но не ограничиваясь, блокировкой аккаунта Yandex Music или любые другие проблемы, связанные с использованием неофициального API. Используйте это приложение на свой страх и риск. Тем не менее, приложение разработано с учетом всех известных ограничений и должно работать корректно при нормальном использовании.

Лицензия

Этот проект распространяется под лицензией MIT. Подробности см. в файле LICENSE.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published