Перенос музыки с Яндекса в Spotify в ОДИН КЛИК 2026: проблемы архитектуры pet-проекта с 40 req/s, очередями и пулом клиентов

Инструкция:

1. Скопируйте ссылку на публичный плейлист

Перенос музыки с Яндекса в Spotify в ОДИН КЛИК 2026: проблемы архитектуры pet-проекта с 40 req/s, очередями и пулом клиентов

2. Отправьте ссылку боту t.me/yandex2spotify_bot

3. Получите ссылку на готовый плейлист в Spotify и добавьте его к себе

Профит!

Работает также через веб:

Скорость импорта:

  • 1 000 ~ 30 сек

Важно:

  • Не все треки есть в Spotify
  • Иногда названия могут совпадать не идеально (в среднем менее ~8%)
  • Порядок треков сохраняется

Сервис работает на бесплатной основе для любого количества плейлистов/треков

=============================================================

ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤа теперь начнем

ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤПролог

Увидев "крутой" новый дизайн ЯндексМузыки, а так же, что управление на сайте с клавиатуры:

L - перемотка трека вперед

Space - пауза/play

ВКЛЮЧАЯ управление с модификаторов клавиш по типу fn + ►► и т.д., не работают от слова совсем, не говоря уже о цензуре, неимении определенной части треков в наличии, плюс все прочие минусы — было принято решение ретироваться на Spotify

Очевидно, идем в яндекс и ищем варианты переноса и находим

  1. Пост на DTF где необходимо сначала пойти в один сервис и спарсить треки плейлиста в текстовый файл, затем пойти в другой сервис которому необходимо скормить этот текстовый файл
  2. Soundiiz - где не работает авторизация в яндекс аккаунт, сообщение об ошибке пересылает нас на пост поддержки, которая в свою очередь ссылается на GitGub Discussion где описано получение токена авторизации из яндекс музыки
  3. Прочие сервисы с аналогичными проблемами

У меня возник вопрос: неужели в 2026 году нет БЕСПЛАТНОГО сервиса который переносит плейлисты из Яндекс Музыки в Spotify в один клик без танцев с бубном?

Я в это реально не верил, но все поиски были тщетны...

Поэтому я взялся написать сервис, который предоставляет такую возможность - бесплатно импортировать любое количество треков/плейлистов В ОДИН КЛИК

Проблема 1: Яндекс не предоставляет официальный публичный API

Решение:

Проблема решается использованием НЕофициального API из публичного репозитория

Окей, мы спарсили плейлист с яндекса, теперь нам нужно импортировать треки на Spotify

Буквально пару строк кода, думал я...

Изначально, нужно сказать как происходит взаимодействие с Spotify API:

Вам нужно перейти на Developer Dashboard и создать свое приложение, вы получите client_id и client_secret посредством этого вы будете общаться со Spotify

Приложения имеют два mode

  1. Developer mode
  2. Extended quota mode

Developer mode имеет скудные лимиты на API, плюс авторизация доступна только тем пользователям, которые ПРЕЖДЕВРЕМЕННО были внесены в белый список приложения

Список ограничен на 25 пользователей

Extended quota mode имеет уже более привлекательные лимиты для прода, плюс неограниченное количество авторизованных пользователей

НО, для того что бы получить Extended quota mode нужно соответствовать некоторым требованиям

Требования к реализации:

  1. Устоявшееся юридическое лицо (юридически зарегистрированное предприятие или организация)
  2. В настоящее время ведется работа над действующим и запущенным сервисом.
  3. Поддержание минимального количества активных пользователей (не менее 250 тыс. активных пользователей в месяц).
  4. Доступность на ключевых рынках Spotify
  5. Коммерческая жизнеспособность
  6. Соблюдение условий

Очевидно, мой пет проект не претендует ни на одно требование

Исходя из документации API мы видим, что искать треки мы можем только по одному, это усугубляет наше положение

Таким образом, импортировать плейлист в 1 000 треков - это МИНИМУМ 1 000 запросов на поиск, не говоря уже о retry и добавлении треков в плейлист

Из этого вытекает следующий скоуп проблем

Проблема 2: Недоступность Extended quota mode

Проблема 2.1: Список пользователей ограничен до 25

Мало того, что список ограничен до 25, нам нужно ПРЕЖДЕВРЕМЕННО внести пользователя в белый список для возможной авторизации пользователя на сервисе

Решение:

Было принято решение НЕ добавлять возможность авторизации через Spotify для клиента

Вместо этого, был создан аккаунт, который будет хранить все импортированные плейлисты

Пользователь просто будет добавлять импортированный плейлист к себе

Плейлист останется у пользователя, даже если будет удален на основном аккаунте, так же, пользователь может воспроизводить любые действия с плейлистом: обновить название, удалить треки, добавить треки и так далее

Плейлист становится собственностью пользователя

Проблема 2.2: Ничтожные лимиты API

Самая главная проблема

Spotify НИГДЕ не указывает конкретные цифры по лимитам, поэтому это было выявлено методом тыка и получением бана в 90 000 секунд

Rate Limit: ~ <10 req/s

Получив примерное ограничение по лимитам, мы можем оптимистично прикинуть сколько у нас займет времени на импорт плейлиста в 2 000 треков

2000 / 10 = 200 сек = 3.3 минуты

И это только поиск

Добавление треков в плейлист происходит батчами по 100 треков, это нам на руку

Но кроме поиска у нас есть импорт, создание плейлиста и добавление треков в плейлист + задержки и погрешность сети

Итоговое время будет ближе к 4 минутам

Такое меня, конечно же, не устраивает

Решение:

Для решения этой проблемы был создан скоуп аккаунтов, на которых было создано по приложению, в белый список были добавлены сами пользователи

Таким образом, мы имеем пул клиентов, расширяя тем самым пропускную способность

Итоговый Rate Limit: ~ <40 req/s для 3-4 клиентов

Почему не 100 аккаунтов?

Я думал об этом, но пока я думал, у Spotify вынесли фулл дамп базы на 256млн записей, включая 86млн аудиофайлов - поэтому Spotify уже неделю не дает возможности создавать приложения

Если посчитать так же оптимистично, то на поиск 2 000 треков у нас уйдет

2000 / 40 = 50 сек

Отлично, теперь поиск будет супер реактивным

думал я...

Проблема 2.3: Привязка Rate Limit

В интернете я нашел инфу от интузиастов на подобии меня, что лимиты привязаны к приложению + пользователю

То есть: если у пользователя несколько приложений - то его лимит все равно остается на уровне <10 req/s

Логично предположить, что это решается созданимем нескольких аккаунтов с собственными приложениями, но даже таким образом лимит остался на уровне <10 req/s

Проблема была в том, что привязка лимитов происходила следующим образом:

10 req/s = пользователь + client_id + ip

Решение:

В текущее время, почти у всех есть собственный VPS с поднятым VLESS, таковым являюсь и я

Было принято решение арендовать range ipv6, благо он стоит копейки ~ 0,031292 руб/день

Далее

  1. Создать несколько inbounds типа socks на разные порты
  2. Смапить порты с ipv6
  3. Профит!

Теперь, осталось только при инициализации пула Spotify клиентов выдать им необходимые прокси

ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤЭпилог

Резюмируем:

Итого у нас есть:

  1. Взаимодействие с API яндекс музыки посредством публичного НЕофициального репозитория
  2. Пулл из нескольких клиентов Spotify
  3. Range ipv6 для каждого клиента из пула для увеличения пропускной способности
  4. +/- оптимизированный код

Теперь, можно поговорить о боевом тестировании

Исходные данные:

  • Было: 2633 трека за 280 сек
  • Стало: 2633 трека за 75 сек

Посчитаем:

  • Скорость раньше: 2633 / 280 ≈ 9.4 трека/сек
  • Скорость сейчас: 2633 / 75 ≈ 35.1 трека/сек

То есть:

  • Ускорение: 35.1 / 9.4 ≈ 3.7×
  • Сокращение времени: 280 → 75 сек = –73%

У Яндекса есть ограничение на количество треков в плейлисте - 10 000

Если прикинуть линейно, то импорт такого плейлиста будет занимать ~5 минут

Таким образом, у нас есть сервис, который БЕСПЛАТНО импортирует публичный плейлист с яндекс музыки В ОДИН КЛИК за секунды

Считаю, получилось довольно не плохо

Стек: Backend Stack Framework: ASP.NET Core 8.0 (C#) Architecture: RESTful API + Background Workers Dependency Injection: Autofac API Integration: Spotify Web API (SpotifyAPI-NET) Yandex Music API Telegram Bot API Authentication: OAuth 2.0 (Authorization Code Flow с auto-refresh токенов) Caching & Stats: Redis 7.4 Security: Cloudflare Turnstile (bot protection) Proxy: SOCKS5 прокси-пул из нескольких инстансов для обхода rate limits Spotify API Infrastructure & DevOps Containerization: Docker + Docker Compose CI/CD: GitHub Actions Reverse Proxy: Traefik (автоматические HTTPS сертификаты от Let's Encrypt) Hosting: Self-hosted VPS Monitoring: Structured logging, Redis-based metrics Архитектурные фичи Client Pooling: Динамический пул из нескольких Spotify клиентов с least-loaded балансировкой Rate Limiting: Exponential backoff + автоматический retry на 429/503 Background Processing: Очередь импорта с concurrent обработкой (до 12 параллельных search-запросов) Streaming Import: Поиск треков и добавление в плейлист батчами по 100 шт. (без ожидания завершения всех поисков) Dual Interface: Web UI + Telegram bot с единой очередью импорта Graceful Degradation: Автовосстановление соединений с Redis и Spotify API

p.s.#1: будет обновляться по мере необходимости, возможно в дальнейшем будет

  • улучшенный кастомный матчинг треков
  • кеш запросов
  • с вероятностью <1% поиск треков будет переписан под слитую БД Spotify, в таком случает импорт 10к треков будет составлять 10 секунд

p.s.#2 могут быть непредвиденные ошибки и баги - если найдете можете отписать в комменты

p.s.#3 если у кого то есть плейлист в 10к треков для теста - отпишите в комменты

Начать дискуссию