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);
}
}