Skip to content

acherkashin/yandex-music-open-api

Repository files navigation

yandex-music-open-api
yandex-music-open-api

Swagger документация для Yandex Music.

Local development

npm install
npm start

Прокси сервер

По умолчанию, все запросы отправляются по следующему адресу https://yandex-music-cors-proxy.onrender.com/https://api.music.yandex.net:443/

Если вы не доверяете прокси серверу, то для обхода данной проблемы можно использовать следующий способ запуска Google Chrome. Сначала закройте все инстансы Google Chrome, затем перейдите в папку с Google Chrome и запустите его с флагом --disable-web-security. При запуске Google Chrome вы увидите сообщение Вы используете неподдерживаемый флаг командной строки: -disable-web-security. Стабильность и безопасность будут нарушены., данное сообщение можете игнорировать.

Mac OS

open -na Google\ Chrome --args --user-data-dir=/tmp/temporary-chrome-profile-dir --disable-web-security --disable-site-isolation-trials

Windows

cd C:\Program Files (x86)\Google\Chrome\Application
.\Chrome.exe --user-data-dir="C:/Chrome dev session" --disable-web-security

После запуска, можете выбрать сервер напрямую адрес Яндекс.Музыки в верхней части схемы - https://api.music.yandex.net:443/

Yandex Music Server

Open API генератор

Кастомный request.ts файл

Необходимо использовать кастомный request.ts файл из-за известного бага в openapi-typescript-codegen модуле.

Использование JavaScript Yandex Music Client

Как использовать клиент Яндекс.Музыки для JavaScript описано здесь.

Генерация клиентов с помощью openapi-generator

  1. Установить openapi-generator
  2. Скачать *./src/yandex-music.yaml
  3. Выбрать нужный генератор, выбрать можно из списка
  4. Сгенерировать клиент openapi-generator generate -i yandex-music.yaml -g csharp-netcore -o ./dotnet-proxies --additional-properties=targetFramework=net6.0, csharp-netcore - генератор для C#
using Org.OpenAPITools.Client;
using Org.OpenAPITools.Api;

var userApi = new UserApi("https://oauth.yandex.ru");

var token = userApi.GetToken(
    "password",
    "23cabbbdc6cd418abb4b39c32c41195d",
    "53bc75238f0c4d08a118e51fe9203300",
    "<your email>",
    "<password>"
);

Console.WriteLine($"Token: {token.AccessToken}");

GlobalConfiguration.Instance.DefaultHeaders["Authorization"] = $"OAuth {token.AccessToken}";

var landingApi = new LandingApi("https://api.music.yandex.net:443");
var releases = landingApi.GetNewReleases();
Console.WriteLine($"Releases Count: {releases.Result.NewReleases.Count}");

Roadmap

  • Опубликовывать Yandex Music Api на хостинг
  • Добавить описание использования OpenAPI Genrator
  • Публиковать Npm, Nuget, ... модули
  • Добавить линтер

Помощь

Все вопросы касающиеся yandex music api, могут быть заданы в Telegram чате. Поддержать автора можно подписавшись на его Telegram канал.

Благодарность

Спасибо MarshalX, его работа положена в основу yandex-music-extension и yandex-music-open-api.