protected bool Equals(Link other) { return ToString().Equals(other.ToString()); }
private void SetUserData(IntPtr userPtr) { CanonicalName = libspotify.sp_user_canonical_name(userPtr).PtrToString(); DisplayName = libspotify.sp_user_display_name(userPtr).PtrToString(); Link = new Link(UserPtr, LinkType.User); }
public static Link Create(string linkString) { var link = new Link(linkString); if (link.LinkPtr != IntPtr.Zero) { return link; } return null; }
private void SetTrackMetaData() { Name = libspotify.sp_track_name(TrackPtr).PtrToString(); Length = (int)(libspotify.sp_track_duration(TrackPtr) / 1000M); AlbumPtr = libspotify.sp_track_album(TrackPtr); Artists = new List<string>(); var artistCount = libspotify.sp_track_num_artists(TrackPtr); for (var i = 0; i < artistCount; i++) { var artistPtr = libspotify.sp_track_artist(TrackPtr, i); if (artistPtr != IntPtr.Zero) { Artists.Add(libspotify.sp_artist_name(artistPtr).PtrToString()); } } Link = new Link(TrackPtr, LinkType.Track); }
private void SetPlaylistInfo(IntPtr playlistPtr) { PlaylistType = libspotify.sp_playlist_type.SP_PLAYLIST_TYPE_PLAYLIST; Name = libspotify.sp_playlist_name(playlistPtr).PtrToString(); TrackCount = libspotify.sp_playlist_num_tracks(playlistPtr); Description = libspotify.sp_playlist_get_description(PlaylistPtr).PtrToString(); SubscriberCount = (int) libspotify.sp_playlist_num_subscribers(PlaylistPtr); IsInRam = libspotify.sp_playlist_is_in_ram(session.SessionPtr, PlaylistPtr); OfflineStatus = libspotify.sp_playlist_get_offline_status(session.SessionPtr, PlaylistPtr); Link = new Link(PlaylistPtr, LinkType.Playlist); }
public bool AddTrack(Link trackLink) { LoadTracks(); var trackPtr = libspotify.sp_link_as_track(trackLink.LinkPtr); if (trackPtr == IntPtr.Zero) { return false; } var track = new Track(trackPtr, session); _logger.InfoFormat("Adding track: {0} to playlist: {1}", track.Name, Name); var tracksPtr = IntPtr.Zero; var array = new int[1]; array[0] = (int)track.TrackPtr; var size = Marshal.SizeOf(tracksPtr) * array.Length; tracksPtr = Marshal.AllocHGlobal(size); Marshal.Copy(array, 0, tracksPtr, array.Length); libspotify.sp_playlist_add_tracks(PlaylistPtr, tracksPtr, 1, TrackCount, session.SessionPtr); return true; }
public Playlist GetPlaylist(Link playlistLink) { return playlistContainer.Playlists.FirstOrDefault(playlistInfo => playlistInfo.Link.Equals(playlistLink)); }
public bool SetCurrentPlaylist(Link playlistLink) { var playlist = GetPlaylist(playlistLink); if (playlist == null) { libspotify.sp_playlistcontainer_add_playlist(playlistContainer.PlaylistContainerPtr, playlistLink.LinkPtr); Wait.For(() => { playlist = GetPlaylist(playlistLink); return playlist != null; }); } if (playlist == null) { return false; } if (currentPlaylist != null) { currentPlaylist.playlistChanged = null; } currentPlaylist = playlist; _logger.InfoFormat("Current playlist set to: {0}", currentPlaylist.Name); currentPlaylist.playlistChanged = PlaylistChanged; PlaylistChanged(currentPlaylist); return true; }