Files
YandexMusic/YandexMusic.API/API/YUgcAPI.cs
FrigaT 36e28ce3fe
All checks were successful
Release / pack-and-publish (release) Successful in 36s
Полностью переписанное api
2026-04-19 17:00:05 +03:00

36 lines
1.5 KiB
C#

using YandexMusic.API.Models.Playlist;
using YandexMusic.API.Models.Ugc;
using YandexMusic.API.Requests.Ugc;
namespace YandexMusic.API;
/// <summary>API для загрузки пользовательского контента (UGC).</summary>
public class YUgcAPI : YCommonAPI
{
public YUgcAPI(YandexMusicApi api) : base(api) { }
public Task<YUgcUpload?> GetUgcUploadLinkAsync(YPlaylist playlist, string fileName)
=> new YUgcGetUploadLinkBuilder(Api).ExecuteAsync((playlist, fileName));
public async Task<string?> UploadTrackToPlaylistAsync(YPlaylist playlist, string fileName, string filePath)
{
if (!File.Exists(filePath))
throw new FileNotFoundException("Файл не найден", filePath);
return await UploadTrackToPlaylistAsync(playlist, fileName, await File.ReadAllBytesAsync(filePath));
}
public async Task<string?> UploadTrackToPlaylistAsync(YPlaylist playlist, string fileName, Stream stream)
{
using var ms = new MemoryStream();
await stream.CopyToAsync(ms);
return await UploadTrackToPlaylistAsync(playlist, fileName, ms.ToArray());
}
public async Task<string?> UploadTrackToPlaylistAsync(YPlaylist playlist, string fileName, byte[] file)
{
var uploadLink = await GetUgcUploadLinkAsync(playlist, fileName);
if (uploadLink?.PostTarget == null) return null;
var result = await new YUgcUploadBuilder(Api).ExecuteAsync((uploadLink.PostTarget, file));
return result?.Result;
}
}