using YandexMusic.API.Models.Album; using YandexMusic.API.Models.Artist; using YandexMusic.API.Models.Common; using YandexMusic.API.Models.Landing.Entity.Entities.Context; using YandexMusic.API.Models.Library; using YandexMusic.API.Models.Playlist; using YandexMusic.API.Models.Track; using YandexMusic.API.Requests.Library; namespace YandexMusic.API; /// API для работы с библиотекой (лайки, дизлайки, недавно прослушанное). public class YLibraryAPI : YCommonAPI { public YLibraryAPI(YandexMusicApi api) : base(api) { } #region Лайки public Task GetLikedTracksAsync() => new YGetLibrarySectionBuilder(Api).ExecuteAsync((YLibrarySection.Tracks, YLibrarySectionType.Likes)); public Task?> GetLikedAlbumsAsync() => new YGetLibrarySectionBuilder>(Api).ExecuteAsync((YLibrarySection.Albums, YLibrarySectionType.Likes)); public Task?> GetLikedArtistsAsync() => new YGetLibrarySectionBuilder>(Api).ExecuteAsync((YLibrarySection.Artists, YLibrarySectionType.Likes)); public Task?> GetLikedPlaylistsAsync() => new YGetLibrarySectionBuilder>(Api).ExecuteAsync((YLibrarySection.Playlists, YLibrarySectionType.Likes)); #endregion #region Дизлайки public Task GetDislikedTracksAsync() => new YGetLibrarySectionBuilder(Api).ExecuteAsync((YLibrarySection.Tracks, YLibrarySectionType.Dislikes)); public Task?> GetDislikedArtistsAsync() => new YGetLibrarySectionBuilder>(Api).ExecuteAsync((YLibrarySection.Artists, YLibrarySectionType.Dislikes)); #endregion #region Добавление/удаление public Task AddTrackLikeAsync(YTrack track) => new YLibraryAddBuilder(Api).ExecuteAsync((track.Id, YLibrarySection.Tracks, YLibrarySectionType.Likes)) .ContinueWith(t => t.Result?.Revision); public Task RemoveTrackLikeAsync(YTrack track) => new YLibraryRemoveBuilder(Api).ExecuteAsync((track.Id, YLibrarySection.Tracks, YLibrarySectionType.Likes)) .ContinueWith(t => t.Result?.Revision); public Task AddTrackDislikeAsync(YTrack track) => new YLibraryAddBuilder(Api).ExecuteAsync((track.Id, YLibrarySection.Tracks, YLibrarySectionType.Dislikes)) .ContinueWith(t => t.Result?.Revision); public Task RemoveTrackDislikeAsync(YTrack track) => new YLibraryRemoveBuilder(Api).ExecuteAsync((track.Id, YLibrarySection.Tracks, YLibrarySectionType.Dislikes)) .ContinueWith(t => t.Result?.Revision); public Task AddAlbumLikeAsync(YAlbum album) => new YLibraryAddBuilder(Api).ExecuteAsync((album.Id, YLibrarySection.Albums, YLibrarySectionType.Likes)); public Task RemoveAlbumLikeAsync(YAlbum album) => new YLibraryRemoveBuilder(Api).ExecuteAsync((album.Id, YLibrarySection.Albums, YLibrarySectionType.Likes)); public Task AddArtistLikeAsync(YArtist artist) => new YLibraryAddBuilder(Api).ExecuteAsync((artist.Id, YLibrarySection.Artists, YLibrarySectionType.Likes)); public Task RemoveArtistLikeAsync(YArtist artist) => new YLibraryRemoveBuilder(Api).ExecuteAsync((artist.Id, YLibrarySection.Artists, YLibrarySectionType.Likes)); public Task AddPlaylistLikeAsync(YPlaylist playlist) => new YLibraryAddBuilder(Api).ExecuteAsync((playlist.GetKey().ToString(), YLibrarySection.Playlists, YLibrarySectionType.Likes)); public Task RemovePlaylistLikeAsync(YPlaylist playlist) => new YLibraryRemoveBuilder(Api).ExecuteAsync((playlist.GetKey().ToString(), YLibrarySection.Playlists, YLibrarySectionType.Likes)); #endregion #region Недавно прослушанное public Task GetRecentlyListenedAsync( IEnumerable contextTypes, int trackCount = 50, int contextCount = 10) => new YGetLibraryRecentlyListenedBuilder(Api).ExecuteAsync((contextTypes, trackCount, contextCount)); #endregion }