using YandexMusic.API.Common; using YandexMusic.API.Models.Artist; using YandexMusic.API.Models.Common; using YandexMusic.API.Requests.Artist; namespace YandexMusic.API; /// /// API для взаимодействия с исполнителями /// public class YArtistAPI : YCommonAPI { public YArtistAPI(YandexMusicApi yandex) : base(yandex) { } /// /// Получение исполнителя /// /// Хранилище /// Идентификатор public Task> GetAsync(AuthStorage storage, string artistId) { return new YGetArtistBuilder(api, storage) .Build(artistId) .GetResponseAsync(); } /// /// Получение исполнителей /// /// Хранилище /// Идентификаторы public Task>> GetAsync(AuthStorage storage, IEnumerable artistIds) { return new YGetArtistsBuilder(api, storage) .Build(artistIds) .GetResponseAsync(); } /// /// Получение треков исполнителя с пагинацией /// /// Треки поставляются по штук на страницу, /// для получения всех треков необходимо использовать метод /// /// /// Хранилище /// Идентификатор исполнителя /// Страница ответов /// Количество треков на странице ответов public Task> GetTracksAsync(AuthStorage storage, string artistId, int page = 0, int pageSize = 20) { return new YGetArtistTrackBuilder(api, storage) .Build((artistId, page, pageSize)) .GetResponseAsync(); } /// /// Получение всех треков исполнителя /// /// Хранилище /// Идентификатор исполнителя public async Task> GetAllTracksAsync(AuthStorage storage, string artistId) { YResponse response = await GetAsync(storage, artistId); return await GetTracksAsync(storage, artistId, pageSize: response.Result.Artist.Counts.Tracks); } }