Добавьте файлы проекта.
This commit is contained in:
71
YandexMusic.API/API/YArtistAPI.cs
Normal file
71
YandexMusic.API/API/YArtistAPI.cs
Normal file
@@ -0,0 +1,71 @@
|
||||
using YandexMusic.API.Common;
|
||||
using YandexMusic.API.Models.Artist;
|
||||
using YandexMusic.API.Models.Common;
|
||||
using YandexMusic.API.Requests.Artist;
|
||||
|
||||
namespace YandexMusic.API;
|
||||
|
||||
/// <summary>
|
||||
/// API для взаимодействия с исполнителями
|
||||
/// </summary>
|
||||
public class YArtistAPI : YCommonAPI
|
||||
{
|
||||
public YArtistAPI(YandexMusicApi yandex) : base(yandex)
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Получение исполнителя
|
||||
/// </summary>
|
||||
/// <param name="storage">Хранилище</param>
|
||||
/// <param name="artistId">Идентификатор</param>
|
||||
public Task<YResponse<YArtistBriefInfo>> GetAsync(AuthStorage storage, string artistId)
|
||||
{
|
||||
return new YGetArtistBuilder(api, storage)
|
||||
.Build(artistId)
|
||||
.GetResponseAsync();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Получение исполнителей
|
||||
/// </summary>
|
||||
/// <param name="storage">Хранилище</param>
|
||||
/// <param name="artistIds">Идентификаторы</param>
|
||||
public Task<YResponse<List<YArtist>>> GetAsync(AuthStorage storage, IEnumerable<string> artistIds)
|
||||
{
|
||||
return new YGetArtistsBuilder(api, storage)
|
||||
.Build(artistIds)
|
||||
.GetResponseAsync();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Получение треков исполнителя с пагинацией
|
||||
/// <remarks>
|
||||
/// Треки поставляются по <paramref name="pageSize"/> штук на страницу,
|
||||
/// для получения всех треков необходимо использовать метод <see cref="GetAllTracksAsync"/>
|
||||
/// </remarks>
|
||||
/// </summary>
|
||||
/// <param name="storage">Хранилище</param>
|
||||
/// <param name="artistId">Идентификатор исполнителя</param>
|
||||
/// <param name="page">Страница ответов</param>
|
||||
/// <param name="pageSize">Количество треков на странице ответов</param>
|
||||
public Task<YResponse<YTracksPage>> GetTracksAsync(AuthStorage storage, string artistId, int page = 0, int pageSize = 20)
|
||||
{
|
||||
return new YGetArtistTrackBuilder(api, storage)
|
||||
.Build((artistId, page, pageSize))
|
||||
.GetResponseAsync();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Получение всех треков исполнителя
|
||||
/// </summary>
|
||||
/// <param name="storage">Хранилище</param>
|
||||
/// <param name="artistId">Идентификатор исполнителя</param>
|
||||
public async Task<YResponse<YTracksPage>> GetAllTracksAsync(AuthStorage storage, string artistId)
|
||||
{
|
||||
YResponse<YArtistBriefInfo> response = await GetAsync(storage, artistId);
|
||||
return await GetTracksAsync(storage, artistId, pageSize: response.Result.Artist.Counts.Tracks);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user