public static async Task <AlbumModel> FromLibrary(Album unmanagedAlbum, LoadifySession session) { var albumModel = new AlbumModel(unmanagedAlbum); if (unmanagedAlbum == null) { return(albumModel); } await SpotifyObject.WaitForInitialization(unmanagedAlbum.IsLoaded); albumModel.Name = unmanagedAlbum.Name(); albumModel.ReleaseYear = unmanagedAlbum.Year(); albumModel.AlbumType = unmanagedAlbum.Type(); try { // retrieve the cover image of the album... var coverImage = session.GetImage(unmanagedAlbum.Cover(ImageSize.Large)); await SpotifyObject.WaitForInitialization(coverImage.IsLoaded); albumModel.Cover = coverImage.Data(); } catch (AccessViolationException) { // nasty work-around - swallow if the cover image could not be retrieved // since the ImageId class does not expose a property or function for checking if the buffer/handle is null/0 } return(albumModel); }
public static async Task <PlaylistModel> FromLibrary(Playlist unmanagedPlaylist, LoadifySession session) { var playlistModel = new PlaylistModel(unmanagedPlaylist); if (unmanagedPlaylist == null) { return(playlistModel); } await SpotifyObject.WaitForInitialization(unmanagedPlaylist.IsLoaded); playlistModel.Name = unmanagedPlaylist.Name() ?? ""; playlistModel.Subscribers = unmanagedPlaylist.Subscribers().ToList(); playlistModel.Creator = unmanagedPlaylist.Owner().DisplayName() ?? ""; playlistModel.Description = unmanagedPlaylist.GetDescription() ?? ""; var playlistImageId = unmanagedPlaylist.GetImage(); if (playlistImageId != null) { var playlistImage = session.GetImage(playlistImageId); await SpotifyObject.WaitForInitialization(playlistImage.IsLoaded); playlistModel.Image = playlistImage.Data(); } for (var i = 0; i < unmanagedPlaylist.NumTracks(); i++) { var unmanagedTrack = unmanagedPlaylist.Track(i); if (unmanagedTrack == null) { continue; } var managedTrack = await TrackModel.FromLibrary(unmanagedTrack, session); managedTrack.Playlist = playlistModel; playlistModel.Tracks.Add(managedTrack); } return(playlistModel); }