Getting started
+This API provides some access to the local running Spotify-Client (Windows only).
+You can fetch details for the current track, play/pause, skip/previous track and
+get notified on various events.
NOTE: This API is unofficial, things may brake in the future and there is no +guarantee everything works out of the box.
++
First steps
+Imports
+So after you added the API to your project, you may want to add following imports to your files:
using SpotifyAPI.Local; //Base Namespace
+using SpotifyAPI.Local.Enums; //Enums
+using SpotifyAPI.Local.Models; //Models for the JSON-responses
+
+
+Basic-Usage
+Now you can actually start fetching infos from your spotify client, just create a new Instance of SpotifyLocalAPI:
private static SpotifyLocalAPI _spotify;
+
+public static void Main(String[] args)
+{
+ _spotify = new SpotifyLocalAPI();
+ if (!SpotifyLocalAPI.IsSpotifyRunning())
+ return; //Make sure the spotify client is running
+ if (!SpotifyLocalAPI.IsSpotifyWebHelperRunning())
+ return; //Make sure the WebHelper is running
+
+ if(!_spotify.Connect())
+ return; //We need to call Connect before fetching infos, this will handle Auth stuff
+
+ StatusResponse status = _spotify.GetStatus(); //status contains infos
+}
+
+
+Configuration
+Different spotify versions often require different configuration. Some versions run their web-helper on port 4371
, others on 4381
. Also, some use https
, and others use http
. You can use SpotifyLocalAPIConfig
to configure the API:
_spotify = new SpotifyLocalAPI(new SpotifyLocalAPIConfig
+{
+ Port = 4371,
+ HostUrl = "https://127.0.0.1"
+});
+
+
+Anti-Virus Blocking Response
+Some Anti-Virus Software blocks the response from spotify due wrong headers.
+Currently, it's confirmed for AVG's LinkScanner and Bitdefender.
+Adding http://SpotifyAPI.spotilocal.com:4380
to the URL-Exceptions seems to fix it for most users.
+More infos can be found here
Client Status
+Calling _spotify.GetStatus()
after connecting returns the following StatusResponse
:
public int Version { get; set; }
+
+public string ClientVersion { get; set; }
+
+public bool Playing { get; set; }
+
+public bool Shuffle { get; set; }
+
+public bool Repeat { get; set; }
+
+public bool PlayEnabled { get; set; }
+
+public bool PrevEnabled { get; set; }
+
+public bool NextEnabled { get; set; }
+
+public Track Track { get; set; }
+
+public double PlayingPosition { get; set; }
+
+public int ServerTime { get; set; }
+
+public double Volume { get; set; }
+
+public bool Online { get; set; }
+
+public bool Running { get; set; }
+
+
+Most of the properties are self-explanatory, some notes:
+-
+
Shuffle
andRepeat
currently always returnfalse
+
Current Track
+The current Track can be fetched via _spotify.GetStatus().Track
and contains following properties/methods:
-
+
TrackResource
-SpotifyResource
which contains TrackName
andUri
+AlbumResource
-SpotifyResource
which contains AlbumName
andUri
+ArtistResource
-SpotifyResource
which contains ArtistName
andUri
(Only the main artist will be listed)
+IsAd()
will check whether the current track is an AD
+- Various methods for getting the album art: +
string GetAlbumArtUrl(AlbumArtSize size)
+Task<Bitmap> GetAlbumArtAsync(AlbumArtSize size)
+Bitmap GetAlbumArt(AlbumArtSize size)
+Task<byte[]> GetAlbumArtAsByteArrayAsync(AlbumArtSize size)
+byte[] GetAlbumArtAsByteArray(AlbumArtSize size)
+
Events
+To receive events, make sure you listen for them _spotify.ListenForEvents = true;
+You can set a SynchronizingObject
, then the events will be called on the specific context
Following events can be overriden:
+-
+
OnPlayStateChange
- triggers when the player changes fromplay
topause
and vice versa
+OnTrackChange
- triggers when a new track will be played
+OnTrackTimeChange
- triggers when a track is playing and track-time changes
+OnVolumeChange
- triggeres when the internal volume of spotify changes
+
Methods
+Furthermore, following methods are available:
+-
+
void Mute()
- will mute the Spotify client via WindowsAPI
+void UnMute()
- will unmute the Spotify client via WindowsAPI
+bool IsSpotifyMuted()
- will return wether the Spotify client is muted
+void SetSpotifyVolume(float volume = 100)
- sets the windows volume of spotify (0 - 100)
+float GetSpotifyVolume()
- returns the windows volume of spotify (0 - 100)
+void Pause()
- will pause spotify's playback
+void Play()
- will resume spotify's playback
+void PlayURL(string uri, string context = "")
- will play a spotify URI (track/album/playlist) in the specifc context (can be a album/playlist URI)
+void Skip()
- will skip the track via an emulated media key
+void Previous()
- will play the previous track via an emulated media key
+bool IsSpotifyRunning()
- returns true if a spotify client instance is running, false if not
+bool IsSpotifyWebHelperRunning()
- returns true if a spotify web-helper instance is running, false if not
+void RunSpotify()
- will attempt to start a Spotify instance
+void RunSpotifyWebHelper()
- will attempt to start a Spotify web-helper instance
+