chipichui

chipichui

На Пикабу
Дата рождения: 24 июля
110 рейтинг 0 подписчиков 0 подписок 1 пост 0 в горячем
23

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

Серия yaspot.ru

Инструкция:

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

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

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

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

Профит!

Работает также через веб: yandex2spotify.chipichui.space

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

  • 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к треков для теста - отпишите в комменты

UPD:

UPDATE (30.01.2026):

Из-за роста пользователей, сервис переехал на нормальный сервер + спотик урезал лимиты в ноль
Поэтому сервис перешёл на модель подписок
При этом бесплатный тариф сохранён:

- неограниченное количество плейлистов

- до 500 треков в одном плейлисте

Показать полностью
Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества