public Track(string link, bool fetchAlbumArt) { if (string.IsNullOrWhiteSpace(link)) { throw new ArgumentOutOfRangeException("link"); } IntPtr linkPtr = Functions.StringToLinkPtr(link); if (linkPtr != IntPtr.Zero) { SongID = link; fetchArt = fetchAlbumArt; try { TrackPtr = libspotify.sp_link_as_track(linkPtr); libspotify.sp_track_add_ref(TrackPtr); InitAsync(); } finally { if (linkPtr != IntPtr.Zero) { libspotify.sp_link_release(linkPtr); } } } }
public static byte[] GetAlbumArt(string link, int timeout = 2) { if (Session.SessionPtr == IntPtr.Zero) { throw new ApplicationException("No session"); } LogTo.Trace("Getting art: {0}", link); if (link == "") { return(null); } IntPtr linkPtr = Functions.StringToLinkPtr(link); if (linkPtr == IntPtr.Zero) { return(null); } try { IntPtr coverPtr = libspotify.sp_image_create_from_link(Session.SessionPtr, linkPtr); using (Image img = Image.Load(coverPtr)) { if (!waitFor(() => img.IsLoaded, timeout)) { return(null); } var err = img.GetLoadError(); if (err != libspotify.sp_error.OK) { throw new ApplicationException(string.Format("Image failed to load: {0}", err)); } //sp_imageformat imageformat = libspotify.sp_image_format(img.ImagePtr); //imageformat == sp_imageformat.SP_IMAGE_FORMAT_JPEG // ATM all are JPEG int bytes = 0; IntPtr bufferPtr = libspotify.sp_image_data(img.ImagePtr, out bytes); byte[] buffer = new byte[bytes]; Marshal.Copy(bufferPtr, buffer, 0, buffer.Length); return(buffer); } } finally { if (linkPtr != IntPtr.Zero) { libspotify.sp_link_release(linkPtr); } } }
public static Playlist FromLink(string playlistLink) { IntPtr linkPtr = Functions.StringToLinkPtr(playlistLink); try { return(new Playlist(libspotify.sp_playlist_create(Session.SessionPtr, linkPtr))); } finally { libspotify.sp_link_release(linkPtr); } }
public static Artist ArtistFromLink(string artistLink) { IntPtr linkPtr = Functions.StringToLinkPtr(artistLink); return(new Artist(libspotify.sp_link_as_artist(linkPtr))); }
public static Album AlbumFromLink(string albumLink) { IntPtr linkPtr = Functions.StringToLinkPtr(albumLink); return(new Album(libspotify.sp_link_as_album(linkPtr))); }