Skip to content

anonymousmaharaj/spondex

Repository files navigation

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

Описание

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

Возможности

  • Двусторонняя синхронизация между Yandex Music и Spotify
  • Автоматическое добавление новых треков
  • Удаление дубликатов в обоих сервисах
  • Отслеживание ненайденных треков
  • Периодическая синхронизация каждые 60 секунд

Требования

  • Python 3.9+
  • pip (менеджер пакетов Python), а лучше uv
  • Аккаунты Yandex Music и Spotify
  • Токен Yandex Music
  • Зарегистрированное приложение Spotify

Установка

  1. Клонируйте репозиторий:
git clone https://github.com/anonymousmaharaj/spondex.git
cd spondex
  1. Создайте виртуальное окружение:

    • Если у вас установлен 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
  2. Установите зависимости:

pip install uv && uv pip install -r requirements.txt
  1. Создайте файл .env в корневой директории проекта и добавьте следующие строки:
YANDEX_TOKEN=ваш_токен_yandex_music
SPOTIPY_CLIENT_ID=ваш_client_id_spotify
SPOTIPY_CLIENT_SECRET=ваш_client_secret_spotify
SPOTIPY_REDIRECT_URI=http://localhost:8888/callback

Настройка

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

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

Настройка приложения 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.example в .env
  7. Вставьте полученные данные в файл .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

В настоящее время запуск приложения в Docker находится в разработке. Мы планируем добавить эту возможность в ближайшем будущем, чтобы упростить развертывание и использование Spondex в различных средах. Следите за обновлениями проекта для получения информации о доступности Docker-версии.

Структура базы данных

Приложение использует SQLite базу данных music_sync.db со следующими таблицами:

  1. synced_tracks: Хранит информацию о синхронизированных треках.
  2. sync_status: Отслеживает время последней синхронизации для каждого сервиса.
  3. undiscovered_tracks: Хранит информацию о треках, которые не удалось найти в одном из сервисов.

Логирование

Приложение ведет лог своей работы, который выводится в консоль. Вы можете увидеть информацию о добавленных треках, удаленных дубликатах и ошибках.

Решение проблем

  1. Если возникают ошибки авторизации в Spotify, убедитесь, что вы правильно настроили приложение в Spotify Developer Dashboard и корректно указали данные в файле .env.

  2. Если треки не синхронизируются с Yandex Music, проверьте правильность токена Yandex Music в файле .env.

  3. Если приложение не находит некоторые треки, проверьте таблицу undiscovered_tracks в базе данных. Возможно, потребуется ручное добавление этих треков.

Ограничения

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

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

Если вы хотите внести свой вклад в проект, пожалуйста, создайте 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