using YandexMusic.API.Common;
using YandexMusic.API.Models.Common;
using YandexMusic.API.Models.Radio;
using YandexMusic.API.Models.Track;
using YandexMusic.API.Requests.Radio;
namespace YandexMusic.API;
///
/// API для взаимодействия с радио
///
public partial class YRadioAPI : YCommonAPI
{
public YRadioAPI(YandexMusicApi yandex) : base(yandex)
{
}
///
/// Получение списка рекомендованных радиостанций
///
/// Хранилище
///
public Task> GetStationsDashboardAsync(AuthStorage storage)
{
return new YGetStationsDashboardBuilder(api, storage)
.Build(null)
.GetResponseAsync();
}
///
/// Получение списка радиостанций
///
/// Хранилище
///
public Task>> GetStationsAsync(AuthStorage storage)
{
return new YGetStationsBuilder(api, storage)
.Build(null)
.GetResponseAsync();
}
///
/// Получение информации о радиостанции
///
/// Хранилище
/// Тип
/// Тэг
///
public Task>> GetStationAsync(AuthStorage storage, string type, string tag)
{
return new YGetStationBuilder(api, storage)
.Build((type, tag))
.GetResponseAsync();
}
///
/// Получение информации о радиостанции
///
/// Хранилище
/// Идентификатор станции
///
public Task>> GetStationAsync(AuthStorage storage, YStationId id)
{
return GetStationAsync(storage, id.Type, id.Tag);
}
///
/// Получение последовательности треков радиостанции
///
/// Хранилище
/// Радиостанция
/// Идентификатор предыдущего трека
///
public Task> GetStationTracksAsync(AuthStorage storage, YStation station, string prevTrackId = "")
{
return new YGetStationTracksBuilder(api, storage)
.Build((station.Station, prevTrackId))
.GetResponseAsync();
}
///
/// Установка настроек подбора треков
///
/// Хранилище
/// Радиостанция
/// Настройки
///
public Task> SetStationSettings2Async(AuthStorage storage, YStation station, YStationSettings2 settings)
{
return new YSetSettings2Builder(api, storage)
.Build((station.Station, settings))
.GetResponseAsync();
}
///
/// Отправка обратной связи на действия при прослушивании радио
///
/// Хранилище
/// Радиостанция
/// Тип обратной связи
/// Трек
/// Уникальный идентификатор партии треков. Возвращается при получении треков
/// Сколько было проиграно секунд трека перед действием
///
public Task SendStationFeedBackAsync(AuthStorage storage, YStation station, YStationFeedbackType type, YTrack track = null, string batchId = "", double totalPlayedSeconds = 0)
{
return new YSetStationFeedbackBuilder(api, storage)
.Build((type, station, track, batchId, totalPlayedSeconds))
.GetResponseAsync();
}
}