🌐 English · Русский
Быстрый старт
Установка
dotnet add package YandexMusic
Для DI добавьте также YandexMusic.DependencyInjection. Таргеты: net8.0, net9.0, net10.0.
Создание клиента
using YandexMusic;
await using var client = new YandexMusicClient();
Конструктор принимает YandexMusicClientOptions для настройки таймаута, прокси, User-Agent,
идентификатора устройства и языка:
using var client = new YandexMusicClient(new YandexMusicClientOptions
{
Timeout = TimeSpan.FromSeconds(30),
DeviceId = "my-app",
});
Авторизация
client.Authentication.SignInWithToken("<oauth-token>");
Console.WriteLine(client.Authentication.IsAuthenticated);
Про сохранение сессии — см. Авторизация.
Примеры
// Трек и прямая ссылка на медиа
var track = await client.Tracks.GetAsync("4");
string? link = await client.Tracks.GetDirectLinkAsync("4");
// Тексты и похожие треки
var supplement = await client.Tracks.GetSupplementAsync("4");
var similar = await client.Tracks.GetSimilarAsync("4");
// Поиск и подсказки
var found = await client.Search.SearchAsync("Queen");
var hints = await client.Search.SuggestAsync("que");
// Альбомы и исполнители (все каталожные id — строки)
var album = await client.Albums.GetWithTracksAsync("3");
var artist = await client.Artists.GetBriefInfoAsync("79215");
var artistTracks = await client.Artists.GetTracksAsync("79215", page: 0, pageSize: 20);
// Плейлисты
var playlist = await client.Playlists.GetAsync("yamusic-daily", "1000");
// Аккаунт и библиотека (чтение и запись)
var status = await client.Account.GetStatusAsync();
var uid = status!.Account.Uid.ToString();
var liked = await client.Library.GetLikedTracksAsync(uid);
await client.Library.AddLikedTracksAsync(uid, ["4"]);
// Открытия: радио, лендинг, чарты
var dashboard = await client.Radio.GetStationsDashboardAsync();
var chart = await client.Landing.GetChartAsync("russia");
var newReleases = await client.Landing.GetNewReleasesAsync();
Отмена операций
Каждый асинхронный метод принимает CancellationToken:
using var cts = new CancellationTokenSource(TimeSpan.FromSeconds(10));
var track = await client.Tracks.GetAsync("4", cts.Token);
Обработка ошибок
using YandexMusic;
try
{
var album = await client.Albums.GetAsync("0");
}
catch (YandexMusicApiException ex)
{
Console.WriteLine($"{(int)ex.StatusCode}: {ex.ErrorName}");
}
catch (YandexMusicAuthenticationException ex)
{
Console.WriteLine($"Ошибка авторизации: {ex.Message}");
}
Иерархия исключений — в Архитектуре.