Ejemplo n.º 1
0
        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);
                    }
                }
            }
        }
Ejemplo n.º 2
0
        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);
                }
            }
        }
Ejemplo n.º 3
0
        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);
            }
        }
Ejemplo n.º 4
0
        public static Artist ArtistFromLink(string artistLink)
        {
            IntPtr linkPtr = Functions.StringToLinkPtr(artistLink);

            return(new Artist(libspotify.sp_link_as_artist(linkPtr)));
        }
Ejemplo n.º 5
0
        public static Album AlbumFromLink(string albumLink)
        {
            IntPtr linkPtr = Functions.StringToLinkPtr(albumLink);

            return(new Album(libspotify.sp_link_as_album(linkPtr)));
        }