Built docs | AppVeyor Build 359

This commit is contained in:
AppVeyor Doc Generation 2018-12-22 20:16:42 +00:00
parent 62b382f24e
commit 55c7274bc8
20 changed files with 269 additions and 842 deletions

View File

@ -1,350 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="author" content="JohnnyCrazy">
<link rel="shortcut icon" href="../img/favicon.ico">
<title>SpotifyLocalAPI - SpotifyAPI-NET</title>
<link href="../css/bootstrap-custom.min.css" rel="stylesheet">
<link href="../css/font-awesome-4.0.3.css" rel="stylesheet">
<link href="../css/prettify-1.0.css" rel="stylesheet">
<link href="../css/base.css" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/8.6/styles/agate.min.css">
<!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script>
<![endif]-->
</head>
<body>
<div class="navbar navbar-default navbar-fixed-top" role="navigation">
<div class="container">
<!-- Collapsed navigation -->
<div class="navbar-header">
<!-- Expander button -->
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<!-- Main title -->
<a class="navbar-brand" href="..">SpotifyAPI-NET</a>
</div>
<!-- Expanded navigation -->
<div class="navbar-collapse collapse">
<!-- Main navigation -->
<ul class="nav navbar-nav">
<li >
<a href="..">Home</a>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">SpotifyWebAPI <b class="caret"></b></a>
<ul class="dropdown-menu">
<li >
<a href="../SpotifyWebAPI/gettingstarted/">Getting started</a>
</li>
<li >
<a href="../SpotifyWebAPI/examples/">Examples</a>
</li>
<li >
<a href="../SpotifyWebAPI/auth/">Authentication</a>
</li>
<li >
<a href="../SpotifyWebAPI/proxy/">Proxy</a>
</li>
<li >
<a href="../SpotifyWebAPI/albums/">- Albums</a>
</li>
<li >
<a href="../SpotifyWebAPI/artists/">- Artists</a>
</li>
<li >
<a href="../SpotifyWebAPI/browse/">- Browse</a>
</li>
<li >
<a href="../SpotifyWebAPI/follow/">- Follow</a>
</li>
<li >
<a href="../SpotifyWebAPI/library/">- Library</a>
</li>
<li >
<a href="../SpotifyWebAPI/personalization/">- Personalization</a>
</li>
<li >
<a href="../SpotifyWebAPI/player/">- Player</a>
</li>
<li >
<a href="../SpotifyWebAPI/playlists/">- Playlists</a>
</li>
<li >
<a href="../SpotifyWebAPI/profiles/">- Profiles</a>
</li>
<li >
<a href="../SpotifyWebAPI/search/">- Search</a>
</li>
<li >
<a href="../SpotifyWebAPI/tracks/">- Tracks</a>
</li>
<li >
<a href="../SpotifyWebAPI/util/">- Util</a>
</li>
</ul>
</li>
<li class="active">
<a href="./">SpotifyLocalAPI</a>
</li>
</ul>
<!-- Search, Navigation and Repo links -->
<ul class="nav navbar-nav navbar-right">
<li >
<a rel="next" href="../SpotifyWebAPI/util/">
<i class="fa fa-arrow-left"></i> Previous
</a>
</li>
<li class="disabled">
<a rel="prev" >
Next <i class="fa fa-arrow-right"></i>
</a>
</li>
<li>
<a href="https://github.com/JohnnyCrazy/SpotifyAPI-NET">
<i class="fa fa-github"></i>
GitHub
</a>
</li>
</ul>
</div>
</div>
</div>
<div class="container">
<div class="col-md-3"><div class="bs-sidebar hidden-print affix well" role="complementary" style="height=90%;">
<ul class="nav bs-sidenav">
<li class="main active"><a href="#getting-started">Getting started</a></li>
<li><a href="#first-steps">First steps</a></li>
<li><a href="#configuration">Configuration</a></li>
<li><a href="#proxy-settings">Proxy Settings</a></li>
<li><a href="#anti-virus-blocking-response">Anti-Virus Blocking Response</a></li>
<li><a href="#client-status">Client Status</a></li>
<li><a href="#current-track">Current Track</a></li>
<li><a href="#events">Events</a></li>
<li><a href="#methods">Methods</a></li>
</ul>
</div></div>
<div class="col-md-9" role="main">
<h1 id="getting-started">Getting started</h1>
<p>This API provides some access to the local running Spotify-Client (Windows only).<br />
You can fetch details for the current track, play/pause, skip/previous track and
get notified on various events.</p>
<p><strong>NOTE:</strong> This API is unofficial, things may break in the future and there is no
guarantee everything works out of the box.</p>
<hr />
<h2 id="first-steps">First steps</h2>
<p><strong>Imports</strong><br />
So after you added the API to your project, you may want to add following imports to your files:</p>
<pre><code class="cs">using SpotifyAPI.Local; //Base Namespace
using SpotifyAPI.Local.Enums; //Enums
using SpotifyAPI.Local.Models; //Models for the JSON-responses
</code></pre>
<p><strong>Basic-Usage</strong><br />
Now you can actually start fetching infos from your spotify client, just create a new Instance of SpotifyLocalAPI:</p>
<pre><code class="cs">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
}
</code></pre>
<h2 id="configuration">Configuration</h2>
<p>Different spotify versions often require different configuration. Some versions run their web-helper on port <code>4371</code>, others on <code>4381</code> or <code>4380</code>. Also, some use <code>https</code>, and others use <code>http</code>. You can use <code>SpotifyLocalAPIConfig</code> to configure the API:</p>
<pre><code class="cs">_spotify = new SpotifyLocalAPI(new SpotifyLocalAPIConfig
{
Port = 4371,
HostUrl = &quot;https://127.0.0.1&quot;
});
</code></pre>
<p>it's also possible to change the current <code>UserAgent</code> string, which is needed if the library wasn't updated for some time. In this case, you should first make an unauthenticated call with <code>spotify.GetStatus()</code>, receive the current spotify version, and update the config afterwards:</p>
<pre><code class="cs">var config = new SpotifyLocalAPIConfig { Port = 4371, HostUrl = &quot;https://127.0.0.1&quot; });
_spotify = new SpotifyLocalAPI(config);
var status = _spotify.GetStatus();
config.UserAgent = status.ClientVersion;
// Now you should call auth stuff, like &quot;_spotify.Connect()&quot;
</code></pre>
<h2 id="proxy-settings">Proxy Settings</h2>
<p>You can forward your proxy settings to the local api by using a field in the <code>SpotifyLocalAPIConfig</code>.</p>
<pre><code class="cs">_spotify = new SpotifyLocalAPI(new SpotifyLocalAPIConfig
{
ProxyConfig = new ProxyConfig() {
Host = &quot;127.0.0.1&quot;,
Port = 8080
// Additional values like Username and Password are available
}
});
</code></pre>
<h2 id="anti-virus-blocking-response">Anti-Virus Blocking Response</h2>
<p>Some Anti-Virus Software blocks the response from spotify due wrong headers.
Currently, it's confirmed for AVG's LinkScanner and Bitdefender.
Adding <code>http://SpotifyAPI.spotilocal.com:4380</code> to the URL-Exceptions seems to fix it for most users.
More infos can be found <a href="https://github.com/JohnnyCrazy/SpotifyAPI-NET/issues/51">here</a></p>
<h2 id="client-status">Client Status</h2>
<p>Calling <code>_spotify.GetStatus()</code> after connecting returns the following <code>StatusResponse</code>:</p>
<pre><code>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; }
</code></pre>
<p>Most of the properties are self-explanatory, some notes:</p>
<ul>
<li><code>Shuffle</code> and <code>Repeat</code> currently always return <code>false</code></li>
</ul>
<h2 id="current-track">Current Track</h2>
<p>The current Track can be fetched via <code>_spotify.GetStatus().Track</code> and contains following properties/methods:</p>
<ul>
<li><code>TrackResource</code> - <code>SpotifyResource</code> which contains Track <code>Name</code> and <code>Uri</code></li>
<li><code>AlbumResource</code> - <code>SpotifyResource</code> which contains Album <code>Name</code> and <code>Uri</code></li>
<li><code>ArtistResource</code> - <code>SpotifyResource</code> which contains Artist <code>Name</code> and <code>Uri</code> (Only the main artist will be listed)</li>
<li><code>IsAd()</code> will check whether the current track is an AD</li>
<li>Various methods for getting the album art:</li>
<li><code>string GetAlbumArtUrl(AlbumArtSize size)</code></li>
<li><code>Task&lt;Bitmap&gt; GetAlbumArtAsync(AlbumArtSize size)</code></li>
<li><code>Bitmap GetAlbumArt(AlbumArtSize size)</code></li>
<li><code>Task&lt;byte[]&gt; GetAlbumArtAsByteArrayAsync(AlbumArtSize size)</code></li>
<li><code>byte[] GetAlbumArtAsByteArray(AlbumArtSize size)</code></li>
</ul>
<h2 id="events">Events</h2>
<p>To receive events, make sure you listen for them <code>_spotify.ListenForEvents = true;</code><br />
You can set a <code>SynchronizingObject</code>, then the events will be called on the specific context</p>
<p>Following events can be overriden:</p>
<ul>
<li><code>OnPlayStateChange</code> - triggers when the player changes from <code>play</code> to <code>pause</code> and vice versa</li>
<li><code>OnTrackChange</code> - triggers when a new track will be played</li>
<li><code>OnTrackTimeChange</code> - triggers when a track is playing and track-time changes</li>
<li><code>OnVolumeChange</code> - triggeres when the internal volume of spotify changes</li>
</ul>
<h2 id="methods">Methods</h2>
<p>Furthermore, following methods are available:</p>
<ul>
<li><code>void Mute()</code> - will mute the Spotify client via WindowsAPI</li>
<li><code>void UnMute()</code> - will unmute the Spotify client via WindowsAPI</li>
<li><code>bool IsSpotifyMuted()</code> - will return wether the Spotify client is muted</li>
<li><code>void SetSpotifyVolume(float volume = 100)</code> - sets the windows volume of spotify (0 - 100)</li>
<li><code>float GetSpotifyVolume()</code> - returns the windows volume of spotify (0 - 100)</li>
<li><code>void Pause()</code> - will pause spotify's playback</li>
<li><code>void Play()</code> - will resume spotify's playback</li>
<li><code>void PlayURL(string uri, string context = "")</code> - will play a spotify URI (track/album/playlist) in the specifc context (can be a album/playlist URI)</li>
<li><code>void Skip()</code> - will skip the track via an emulated media key</li>
<li><code>void Previous()</code> - will play the previous track via an emulated media key</li>
<li><code>bool IsSpotifyRunning()</code> - returns true if a spotify client instance is running, false if not</li>
<li><code>bool IsSpotifyWebHelperRunning()</code> - returns true if a spotify web-helper instance is running, false if not</li>
<li><code>void RunSpotify()</code> - will attempt to start a Spotify instance</li>
<li><code>void RunSpotifyWebHelper()</code> - will attempt to start a Spotify web-helper instance</li>
</ul></div>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/8.4/highlight.min.js"></script>
<script src="https://code.jquery.com/jquery-1.10.2.min.js"></script>
<script src="../js/bootstrap-3.0.3.min.js"></script>
<script src="../js/base.js"></script>
<script src="../highlight.js"></script>
</body>
</html>

View File

@ -56,7 +56,7 @@
<li class="dropdown active">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">SpotifyWebAPI <b class="caret"></b></a>
<a href="#" class="dropdown-toggle" data-toggle="dropdown">SpotifyAPI.Web <b class="caret"></b></a>
<ul class="dropdown-menu">
<li >
@ -67,10 +67,6 @@
<a href="../examples/">Examples</a>
</li>
<li >
<a href="../auth/">Authentication</a>
</li>
<li >
<a href="../proxy/">Proxy</a>
</li>
@ -129,7 +125,7 @@
<li >
<a href="../../SpotifyLocalAPI/">SpotifyLocalAPI</a>
<a href="../auth/">SpotifyAPI.Web.Auth</a>
</li>
@ -184,7 +180,7 @@
<blockquote>
<p>Get Spotify catalog information about an album's tracks. Optional parameters can be used to limit the number of tracks returned.</p>
</blockquote>
<p><strong>Paramters</strong> </p>
<p><strong>Parameters</strong> </p>
<table>
<thead>
<tr>
@ -228,7 +224,7 @@ Console.WriteLine(tracks.Total.ToString()) //Display total album track count
<blockquote>
<p>Get Spotify catalog information for a single album.</p>
</blockquote>
<p><strong>Paramters</strong> </p>
<p><strong>Parameters</strong> </p>
<table>
<thead>
<tr>
@ -261,7 +257,7 @@ Console.WriteLine(album.Name + &quot;| Popularity: &quot; + album.Popularity); /
<blockquote>
<p>Get Spotify catalog information for multiple albums identified by their Spotify IDs.</p>
</blockquote>
<p><strong>Paramters</strong> </p>
<p><strong>Parameters</strong> </p>
<table>
<thead>
<tr>

View File

@ -56,7 +56,7 @@
<li class="dropdown active">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">SpotifyWebAPI <b class="caret"></b></a>
<a href="#" class="dropdown-toggle" data-toggle="dropdown">SpotifyAPI.Web <b class="caret"></b></a>
<ul class="dropdown-menu">
<li >
@ -67,10 +67,6 @@
<a href="../examples/">Examples</a>
</li>
<li >
<a href="../auth/">Authentication</a>
</li>
<li >
<a href="../proxy/">Proxy</a>
</li>
@ -129,7 +125,7 @@
<li >
<a href="../../SpotifyLocalAPI/">SpotifyLocalAPI</a>
<a href="../auth/">SpotifyAPI.Web.Auth</a>
</li>
@ -190,7 +186,7 @@
<blockquote>
<p>Get Spotify catalog information for a single artist identified by their unique Spotify ID.</p>
</blockquote>
<p><strong>Paramters</strong> </p>
<p><strong>Parameters</strong> </p>
<table>
<thead>
<tr>
@ -218,7 +214,7 @@ Console.WriteLine()
<blockquote>
<p>Get Spotify catalog information about artists similar to a given artist. Similarity is based on analysis of the Spotify community's listening history.</p>
</blockquote>
<p><strong>Paramters</strong> </p>
<p><strong>Parameters</strong> </p>
<table>
<thead>
<tr>
@ -246,7 +242,7 @@ Console.WriteLine(artists.Artists[0].Name);
<blockquote>
<p>Get Spotify catalog information about an artist's top tracks by country.</p>
</blockquote>
<p><strong>Paramters</strong> </p>
<p><strong>Parameters</strong> </p>
<table>
<thead>
<tr>
@ -279,7 +275,7 @@ Console.WriteLine(tracks.Tracks.Count); //How many tracks did we get?
<blockquote>
<p>Get Spotify catalog information about an artist's albums. Optional parameters can be specified in the query string to filter and sort the response.</p>
</blockquote>
<p><strong>Paramters</strong> </p>
<p><strong>Parameters</strong> </p>
<table>
<thead>
<tr>
@ -327,7 +323,7 @@ albums.Items.ForEach(album =&gt; Console.WriteLine(album.Name));
<blockquote>
<p>Get Spotify catalog information for several artists based on their Spotify IDs.</p>
</blockquote>
<p><strong>Paramters</strong> </p>
<p><strong>Parameters</strong> </p>
<table>
<thead>
<tr>

View File

@ -9,7 +9,7 @@
<link rel="shortcut icon" href="../../img/favicon.ico">
<title>Authentication - SpotifyAPI-NET</title>
<title>SpotifyAPI.Web.Auth - SpotifyAPI-NET</title>
<link href="../../css/bootstrap-custom.min.css" rel="stylesheet">
<link href="../../css/font-awesome-4.0.3.css" rel="stylesheet">
@ -55,8 +55,8 @@
<li class="dropdown active">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">SpotifyWebAPI <b class="caret"></b></a>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">SpotifyAPI.Web <b class="caret"></b></a>
<ul class="dropdown-menu">
<li >
@ -67,10 +67,6 @@
<a href="../examples/">Examples</a>
</li>
<li class="active">
<a href="./">Authentication</a>
</li>
<li >
<a href="../proxy/">Proxy</a>
</li>
@ -128,8 +124,8 @@
<li >
<a href="../../SpotifyLocalAPI/">SpotifyLocalAPI</a>
<li class="active">
<a href="./">SpotifyAPI.Web.Auth</a>
</li>
@ -139,12 +135,12 @@
<ul class="nav navbar-nav navbar-right">
<li >
<a rel="next" href="../examples/">
<a rel="next" href="../util/">
<i class="fa fa-arrow-left"></i> Previous
</a>
</li>
<li >
<a rel="prev" href="../proxy/">
<li class="disabled">
<a rel="prev" >
Next <i class="fa fa-arrow-right"></i>
</a>
</li>
@ -169,6 +165,8 @@
<li class="main active"><a href="#auth-methods">Auth-Methods</a></li>
<li><a href="#notes">Notes</a></li>
<li><a href="#implicitgrantauth">ImplicitGrantAuth</a></li>
<li><a href="#autorizationcodeauth">AutorizationCodeAuth</a></li>
@ -176,191 +174,89 @@
<li><a href="#clientcredentialsauth">ClientCredentialsAuth</a></li>
<li class="main "><a href="#scopes">Scopes</a></li>
</ul>
</div></div>
<div class="col-md-9" role="main">
<h1 id="auth-methods">Auth-Methods</h1>
<p>Before you can use the Web API full functional, you need the user to authenticate your Application.<br />
<p>Before you can use the Web API full functional, you need the user to authenticate your Application.
If you want to know more, you can read to the whole auth-process <a href="https://developer.spotify.com/web-api/authorization-guide/">here</a>.</p>
<p>Before you start, you need to create a Application at Spotify: <a href="https://developer.spotify.com/my-applications/#!/applications">Your Applications</a></p>
<p>Before you start, install <code>SpotifyAPI.Web.Auth</code> and create an application at Spotify: <a href="https://developer.spotify.com/my-applications/#!/applications">Your Applications</a></p>
<hr />
<p>After you created your Application, you will have following important values:</p>
<blockquote>
<p><strong>Client_Id</strong> This is your client_id, you don't have to hide it<br />
<strong>Client_Secret</strong> Never use this in one of your client-side apps!! Keep it secret!<br />
<strong>Redirect URIs</strong> Add "http://localhost", if you want full support for this API </p>
<p><strong>Client_Id</strong>: This is your client_id, you don't have to hide it
<strong>Client_Secret</strong>: Never use this in one of your client-side apps!! Keep it secret!
<strong>Redirect URIs</strong>: Add "http://localhost", if you want full support for this API</p>
</blockquote>
<p>Now you can start with the User-authentication, Spotify provides 3 ways:</p>
<ul>
<li>
<p><a href="../../SpotifyWebAPI/auth#implicitgrantauth">ImplicitGrantAuth</a> (<strong>Recommended</strong>, no server-side code needed) </p>
<p><a href="../../SpotifyWebAPI/auth#implicitgrantauth">ImplicitGrantAuth</a></p>
</li>
<li>
<p><a href="../../SpotifyWebAPI/auth#autorizationcodeauth">AutorizationCodeAuth</a> (Not Recommended, Server-side code needed, else it's unsecure)</p>
<p><a href="../../SpotifyWebAPI/auth#autorizationcodeauth">AutorizationCodeAuth</a></p>
</li>
<li>
<p><a href="../../SpotifyWebAPI/auth#clientcredentialsauth">ClientCredentialsAuth</a> (Not Recommended, Server-side code needed, else it's unsecure) </p>
<p><a href="../../SpotifyWebAPI/auth#clientcredentialsauth">ClientCredentialsAuth</a></p>
</li>
</ul>
<p><strong>Note:</strong> I would recommend a little PHP Script, which will exchange the Keys using AutorizationCodeAuth.
When using ImplicitGrantAuth, another user could abuse the "localhost" RedirectUri by creating a "fake"-app which uses your ClientId.</p>
<h2 id="notes">Notes</h2>
<p>Generally, if you're developing a 100% client-side application, no auth mechanism is totally secure. <code>AutorizationCodeAuth</code> and <code>ClientCredentialsAuth</code> require your clients to know the <code>client_secret</code>, which should be kept secret. For <code>ImplicitGrantAuth</code> to work, <code>http://localhost</code> needs to be added to the redirect uris of your spotify application. Since <code>localhost</code> is not a controlled domain by you, everybody is able to generate API-Keys. However, it is still the best option of all 3.</p>
<p>Overview:
<img alt="Overview" src="http://i.imgur.com/uf3ahTl.png" /></p>
<p>After implementing one of the provided auth-methods, you can start doing requests with the token you get from one of the auth-methods</p>
<p>After implementing one of the provided auth-methods, you can start doing requests with the token you get from one of the auth-methods.</p>
<h2 id="implicitgrantauth">ImplicitGrantAuth</h2>
<p>This way is <strong>recommended</strong> and the only auth-process, which does not need a server-side exchange of keys. With this approach, you directly get a Token object after the user authed your application.
You won't be able to refresh the token. If you want to use the internal Http server, please add "http://localhost" to your application redirects.</p>
<p>More info: <a href="https://developer.spotify.com/web-api/authorization-guide/#implicit_grant_flow">here</a></p>
<p>For this kind of authentication, there is also a <code>WebAPIFactory</code>, it's easier to use and uses an async method:</p>
<pre><code>static async void Main(string[] args)
<p>With this approach, you directly get a Token object after the user authed your application.
You won't be able to refresh the token. If you want to use the internal Http server, make sure the redirect URI is in your spotify application redirects.</p>
<p>More info: <a href="https://developer.spotify.com/documentation/general/guides/authorization-guide/#implicit-grant-flow">here</a></p>
<pre><code class="c#">static async void Main(string[] args)
{
WebAPIFactory webApiFactory = new WebAPIFactory(
&quot;http://localhost&quot;,
8000,
&quot;XXXXXXXXXXXXXXXX&quot;,
Scope.UserReadPrivate,
TimeSpan.FromSeconds(20)
);
try
ImplicitGrantAuth auth =
new ImplicitGrantAuth(_clientId, &quot;http://localhost:4002&quot;, &quot;http://localhost:4002&quot;, Scope.UserReadPrivate);
auth.AuthReceived += async (sender, payload) =&gt;
{
//This will open the user's browser and returns once
//the user is authorized.
_spotify = await webApiFactory.GetWebApi();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
if (_spotify == null)
return;
}
</code></pre>
<p>The old way:</p>
<pre><code>static ImplicitGrantAuth auth;
static void Main(string[] args)
{
//Create the auth object
auth = new ImplicitGrantAuth()
{
//Your client Id
ClientId = &quot;XXXXXXXXXXXXXXXX&quot;,
//Set this to localhost if you want to use the built-in HTTP Server
RedirectUri = &quot;http://localhost&quot;,
//How many permissions we need?
Scope = Scope.UserReadPrivate,
auth.Stop(); // `sender` is also the auth instance
SpotifyWebAPI api = new SpotifyWebAPI() {TokenType = payload.TokenType, AccessToken = payload.AccessToken};
// Do requests with API client
};
//Start the internal http server
auth.StartHttpServer();
//When we got our response
auth.OnResponseReceivedEvent += auth_OnResponseReceivedEvent;
//Start
auth.DoAuth();
}
static void auth_OnResponseReceivedEvent(Token token, string state, string error)
{
var spotify = new SpotifyWebApiClass()
{
TokenType = token.TokenType,
AccessToken = token.AccessToken
};
//We can now make calls with the token object
//stop the http server
auth.StopHttpServer();
auth.Start(); // Starts an internal HTTP Server
auth.OpenBrowser();
}
</code></pre>
<h2 id="autorizationcodeauth">AutorizationCodeAuth</h2>
<p>This way is <strong>not recommended</strong> and requires server-side code to run securely.<br />
With this approach, you first get a code which you need to trade against the access-token.<br />
In this exchange you need to provide your Client-Secret and because of that it's not recommended.<br />
(But you can e.g exchange to codes via a PHP Script)<br />
<p>This way is <strong>not recommended</strong> and requires server-side code to run securely.
With this approach, you first get a code which you need to trade against the access-token.
In this exchange you need to provide your Client-Secret and because of that it's not recommended.
A good thing about this method: You can always refresh your token, without having the user to auth it again</p>
<p>More info: <a href="https://developer.spotify.com/web-api/authorization-guide/#authorization_code_flow">here</a></p>
<pre><code>static AutorizationCodeAuth auth;
static void Main(string[] args)
<p>More info: <a href="https://developer.spotify.com/documentation/general/guides/authorization-guide/#authorization-code-flow">here</a></p>
<pre><code class="c#">static async void Main(string[] args)
{
//Create the auth object
auth = new AutorizationCodeAuth()
AuthorizationCodeAuth auth =
new AuthorizationCodeAuth(_clientId, _secretId, &quot;http://localhost:4002&quot;, &quot;http://localhost:4002&quot;,
Scope.PlaylistReadPrivate | Scope.PlaylistReadCollaborative);
auth.AuthReceived += async (sender, payload) =&gt;
{
//Your client Id
ClientId = &quot;XXXXXXXXXXXXXXX&quot;,
//Set this to localhost if you want to use the built-in HTTP Server
RedirectUri = &quot;http://localhost&quot;,
//How many permissions we need?
Scope = Scope.UserReadPrivate,
auth.Stop();
Token token = await auth.ExchangeCode(payload.Code);
SpotifyWebAPI api = new SpotifyWebAPI() {TokenType = token.TokenType, AccessToken = token.AccessToken};
// Do requests with API client
};
//This will be called, if the user cancled/accept the auth-request
auth.OnResponseReceivedEvent += auth_OnResponseReceivedEvent;
//a local HTTP Server will be started (Needed for the response)
auth.StartHttpServer();
//This will open the spotify auth-page. The user can decline/accept the request
auth.DoAuth();
Thread.Sleep(60000);
auth.StopHttpServer();
Console.WriteLine(&quot;Too long, didnt respond, exiting now...&quot;);
}
private static void auth_OnResponseReceivedEvent(AutorizationCodeAuthResponse response)
{
//NEVER DO THIS! You would need to provide the ClientSecret.
//You would need to do it e.g via a PHP-Script.
Token token = auth.ExchangeAuthCode(response.Code, &quot;XXXXXXXXXXX&quot;);
var spotify = new SpotifyWebApiClass()
{
TokenType = token.TokenType,
AccessToken = token.AccessToken
};
//With the token object, you can now make API calls
//Stop the HTTP Server, done.
auth.StopHttpServer();
auth.Start(); // Starts an internal HTTP Server
auth.OpenBrowser();
}
</code></pre>
<h2 id="clientcredentialsauth">ClientCredentialsAuth</h2>
<p>This way is <strong>not recommended</strong> and requires server-side code to run securely.<br />
With this approach, you make a POST Request with a base64 encoded string (consists of ClientId + ClientSecret). You will directly get the token (Without a local HTTP Server), but it will expire and can't be refreshed.<br />
If you want to use it securely, you would need to do it all server-side.<br />
<p>With this approach, you make a POST Request with a base64 encoded string (consists of ClientId + ClientSecret). You will directly get the token (Without a local HTTP Server), but it will expire and can't be refreshed.
If you want to use it securely, you would need to do it all server-side.
<strong>NOTE:</strong> You will only be able to query non-user-related information e.g search for a Track.</p>
<p>More info: <a href="https://developer.spotify.com/web-api/authorization-guide/#client_credentials_flow">here</a></p>
<pre><code>static ClientCredentialsAuth auth;
static void Main(string[] args)
{
//Create the auth object
auth = new ClientCredentialsAuth()
{
//Your client Id
ClientId = &quot;XXXXXXXXXXXXXXX&quot;,
//Your client secret UNSECURE!!
ClientSecret = &quot;XXXXXXXXXXXX&quot;,
//How many permissions we need?
Scope = Scope.UserReadPrivate,
};
//With this token object, we now can make calls
Token token = auth.DoAuth();
var spotify = new SpotifyWebApiClass()
{
TokenType = token.TokenType,
AccessToken = token.AccessToken,
UseAuth = false
};
}
</code></pre>
<h1 id="scopes">Scopes</h1></div>
<p>More info: <a href="https://developer.spotify.com/documentation/general/guides/authorization-guide/#client-credentials-flow">here</a></p>
<pre><code class="c#">CredentialsAuth auth = new CredentialsAuth(_clientId, _secretId);
Token token = await auth.GetToken();
SpotifyWebAPI api = new SpotifyWebAPI() {TokenType = token.TokenType, AccessToken = token.AccessToken};
</code></pre></div>
</div>

View File

@ -56,7 +56,7 @@
<li class="dropdown active">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">SpotifyWebAPI <b class="caret"></b></a>
<a href="#" class="dropdown-toggle" data-toggle="dropdown">SpotifyAPI.Web <b class="caret"></b></a>
<ul class="dropdown-menu">
<li >
@ -67,10 +67,6 @@
<a href="../examples/">Examples</a>
</li>
<li >
<a href="../auth/">Authentication</a>
</li>
<li >
<a href="../proxy/">Proxy</a>
</li>
@ -129,7 +125,7 @@
<li >
<a href="../../SpotifyLocalAPI/">SpotifyLocalAPI</a>
<a href="../auth/">SpotifyAPI.Web.Auth</a>
</li>
@ -191,7 +187,7 @@
<blockquote>
<p>Get a list of Spotify featured playlists (shown, for example, on a Spotify players “Browse” tab).</p>
</blockquote>
<p><strong>Paramters</strong> </p>
<p><strong>Parameters</strong> </p>
<table>
<thead>
<tr>
@ -241,7 +237,7 @@ playlists.Playlists.Items.ForEach(playlist =&gt; Console.WriteLine(playlist.Name
<blockquote>
<p>Get a list of new album releases featured in Spotify (shown, for example, on a Spotify players “Browse” tab).</p>
</blockquote>
<p><strong>Paramters</strong> </p>
<p><strong>Parameters</strong> </p>
<table>
<thead>
<tr>
@ -280,7 +276,7 @@ newAlbums.Albums.Items.ForEach(album =&gt; Console.WriteLine(album.Name));
<blockquote>
<p>Get a list of categories used to tag items in Spotify (on, for example, the Spotify players “Browse” tab).</p>
</blockquote>
<p><strong>Paramters</strong> </p>
<p><strong>Parameters</strong> </p>
<table>
<thead>
<tr>
@ -324,7 +320,7 @@ categoryList.Categories.Items.ForEach(category =&gt; Console.WriteLine(category.
<blockquote>
<p>Get a single category used to tag items in Spotify (on, for example, the Spotify players “Browse” tab).</p>
</blockquote>
<p><strong>Paramters</strong> </p>
<p><strong>Parameters</strong> </p>
<table>
<thead>
<tr>
@ -363,7 +359,7 @@ Console.WriteLine(cat.Name);
<blockquote>
<p>Get a list of Spotify playlists tagged with a particular category.</p>
</blockquote>
<p><strong>Paramters</strong> </p>
<p><strong>Parameters</strong> </p>
<table>
<thead>
<tr>

View File

@ -56,7 +56,7 @@
<li class="dropdown active">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">SpotifyWebAPI <b class="caret"></b></a>
<a href="#" class="dropdown-toggle" data-toggle="dropdown">SpotifyAPI.Web <b class="caret"></b></a>
<ul class="dropdown-menu">
<li >
@ -67,10 +67,6 @@
<a href="./">Examples</a>
</li>
<li >
<a href="../auth/">Authentication</a>
</li>
<li >
<a href="../proxy/">Proxy</a>
</li>
@ -129,7 +125,7 @@
<li >
<a href="../../SpotifyLocalAPI/">SpotifyLocalAPI</a>
<a href="../auth/">SpotifyAPI.Web.Auth</a>
</li>
@ -144,7 +140,7 @@
</a>
</li>
<li >
<a rel="prev" href="../auth/">
<a rel="prev" href="../proxy/">
Next <i class="fa fa-arrow-right"></i>
</a>
</li>

View File

@ -56,7 +56,7 @@
<li class="dropdown active">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">SpotifyWebAPI <b class="caret"></b></a>
<a href="#" class="dropdown-toggle" data-toggle="dropdown">SpotifyAPI.Web <b class="caret"></b></a>
<ul class="dropdown-menu">
<li >
@ -67,10 +67,6 @@
<a href="../examples/">Examples</a>
</li>
<li >
<a href="../auth/">Authentication</a>
</li>
<li >
<a href="../proxy/">Proxy</a>
</li>
@ -129,7 +125,7 @@
<li >
<a href="../../SpotifyLocalAPI/">SpotifyLocalAPI</a>
<a href="../auth/">SpotifyAPI.Web.Auth</a>
</li>
@ -194,7 +190,7 @@
<blockquote>
<p>Add the current user as a follower of one or more artists or other Spotify users.</p>
</blockquote>
<p><strong>Paramters</strong> </p>
<p><strong>Parameters</strong> </p>
<table>
<thead>
<tr>
@ -229,7 +225,7 @@ ErrorResponse response = _spotify.Follow(FollowType.User, &quot;1122095781&quot;
<blockquote>
<p>Remove the current user as a follower of one or more artists or other Spotify users.</p>
</blockquote>
<p><strong>Paramters</strong> </p>
<p><strong>Parameters</strong> </p>
<table>
<thead>
<tr>
@ -264,7 +260,7 @@ ErrorResponse response = _spotify.Unfollow(FollowType.User, &quot;1122095781&quo
<blockquote>
<p>Check to see if the current user is following one or more artists or other Spotify users.</p>
</blockquote>
<p><strong>Paramters</strong> </p>
<p><strong>Parameters</strong> </p>
<table>
<thead>
<tr>
@ -299,7 +295,7 @@ Console.WriteLine(response.List[0] ? &quot;Yis!&quot; : &quot;No :(&quot;);
<blockquote>
<p>Add the current user as a follower of a playlist.</p>
</blockquote>
<p><strong>Paramters</strong> </p>
<p><strong>Parameters</strong> </p>
<table>
<thead>
<tr>
@ -339,7 +335,7 @@ if(!response.HasError())
<blockquote>
<p>Remove the current user as a follower of a playlist.</p>
</blockquote>
<p><strong>Paramters</strong> </p>
<p><strong>Parameters</strong> </p>
<table>
<thead>
<tr>
@ -374,7 +370,7 @@ if(!response.HasError())
<blockquote>
<p>Check to see if one or more Spotify users are following a specified playlist.</p>
</blockquote>
<p><strong>Paramters</strong> </p>
<p><strong>Parameters</strong> </p>
<table>
<thead>
<tr>

View File

@ -56,7 +56,7 @@
<li class="dropdown active">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">SpotifyWebAPI <b class="caret"></b></a>
<a href="#" class="dropdown-toggle" data-toggle="dropdown">SpotifyAPI.Web <b class="caret"></b></a>
<ul class="dropdown-menu">
<li class="active">
@ -67,10 +67,6 @@
<a href="../examples/">Examples</a>
</li>
<li >
<a href="../auth/">Authentication</a>
</li>
<li >
<a href="../proxy/">Proxy</a>
</li>
@ -129,7 +125,7 @@
<li >
<a href="../../SpotifyLocalAPI/">SpotifyLocalAPI</a>
<a href="../auth/">SpotifyAPI.Web.Auth</a>
</li>

View File

@ -56,7 +56,7 @@
<li class="dropdown active">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">SpotifyWebAPI <b class="caret"></b></a>
<a href="#" class="dropdown-toggle" data-toggle="dropdown">SpotifyAPI.Web <b class="caret"></b></a>
<ul class="dropdown-menu">
<li >
@ -67,10 +67,6 @@
<a href="../examples/">Examples</a>
</li>
<li >
<a href="../auth/">Authentication</a>
</li>
<li >
<a href="../proxy/">Proxy</a>
</li>
@ -129,7 +125,7 @@
<li >
<a href="../../SpotifyLocalAPI/">SpotifyLocalAPI</a>
<a href="../auth/">SpotifyAPI.Web.Auth</a>
</li>
@ -206,7 +202,7 @@
<blockquote>
<p>Save one or more tracks to the current users “Your Music” library.</p>
</blockquote>
<p><strong>Paramters</strong> </p>
<p><strong>Parameters</strong> </p>
<table>
<thead>
<tr>
@ -236,7 +232,7 @@ if(!response.HasError())
<blockquote>
<p>Save one track to the current users “Your Music” library.</p>
</blockquote>
<p><strong>Paramters</strong> </p>
<p><strong>Parameters</strong> </p>
<table>
<thead>
<tr>
@ -266,7 +262,7 @@ if(!response.HasError())
<blockquote>
<p>Get a list of the songs saved in the current Spotify users “Your Music” library.</p>
</blockquote>
<p><strong>Paramters</strong> </p>
<p><strong>Parameters</strong> </p>
<table>
<thead>
<tr>
@ -305,7 +301,7 @@ savedTracks.Items.ForEach(track =&gt; Console.WriteLine(track.Track.Name));
<blockquote>
<p>Remove one or more tracks from the current users “Your Music” library.</p>
</blockquote>
<p><strong>Paramters</strong> </p>
<p><strong>Parameters</strong> </p>
<table>
<thead>
<tr>
@ -335,7 +331,7 @@ if(!response.HasError())
<blockquote>
<p>Check if one or more tracks is already saved in the current Spotify users “Your Music” library.</p>
</blockquote>
<p><strong>Paramters</strong> </p>
<p><strong>Parameters</strong> </p>
<table>
<thead>
<tr>
@ -365,7 +361,7 @@ if(tracksSaved.List[0])
<blockquote>
<p>Save one or more albums to the current users “Your Music” library.</p>
</blockquote>
<p><strong>Paramters</strong> </p>
<p><strong>Parameters</strong> </p>
<table>
<thead>
<tr>
@ -395,7 +391,7 @@ if(!response.HasError())
<blockquote>
<p>Save one album to the current users “Your Music” library.</p>
</blockquote>
<p><strong>Paramters</strong> </p>
<p><strong>Parameters</strong> </p>
<table>
<thead>
<tr>
@ -425,7 +421,7 @@ if(!response.HasError())
<blockquote>
<p>Get a list of the albums saved in the current Spotify users “Your Music” library.</p>
</blockquote>
<p><strong>Paramters</strong> </p>
<p><strong>Parameters</strong> </p>
<table>
<thead>
<tr>
@ -464,7 +460,7 @@ savedAlbums.Items.ForEach(album =&gt; Console.WriteLine(album.Album.Name));
<blockquote>
<p>Remove one or more albums from the current users “Your Music” library.</p>
</blockquote>
<p><strong>Paramters</strong> </p>
<p><strong>Parameters</strong> </p>
<table>
<thead>
<tr>
@ -494,7 +490,7 @@ if(!response.HasError())
<blockquote>
<p>Check if one or more albums is already saved in the current Spotify users “Your Music” library.</p>
</blockquote>
<p><strong>Paramters</strong> </p>
<p><strong>Parameters</strong> </p>
<table>
<thead>
<tr>

View File

@ -56,7 +56,7 @@
<li class="dropdown active">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">SpotifyWebAPI <b class="caret"></b></a>
<a href="#" class="dropdown-toggle" data-toggle="dropdown">SpotifyAPI.Web <b class="caret"></b></a>
<ul class="dropdown-menu">
<li >
@ -67,10 +67,6 @@
<a href="../examples/">Examples</a>
</li>
<li >
<a href="../auth/">Authentication</a>
</li>
<li >
<a href="../proxy/">Proxy</a>
</li>
@ -129,7 +125,7 @@
<li >
<a href="../../SpotifyLocalAPI/">SpotifyLocalAPI</a>
<a href="../auth/">SpotifyAPI.Web.Auth</a>
</li>

View File

@ -56,7 +56,7 @@
<li class="dropdown active">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">SpotifyWebAPI <b class="caret"></b></a>
<a href="#" class="dropdown-toggle" data-toggle="dropdown">SpotifyAPI.Web <b class="caret"></b></a>
<ul class="dropdown-menu">
<li >
@ -67,10 +67,6 @@
<a href="../examples/">Examples</a>
</li>
<li >
<a href="../auth/">Authentication</a>
</li>
<li >
<a href="../proxy/">Proxy</a>
</li>
@ -129,7 +125,7 @@
<li >
<a href="../../SpotifyLocalAPI/">SpotifyLocalAPI</a>
<a href="../auth/">SpotifyAPI.Web.Auth</a>
</li>
@ -211,7 +207,7 @@
<blockquote>
<p>Get information about a users available devices.</p>
</blockquote>
<p><strong>Paramters</strong> </p>
<p><strong>Parameters</strong> </p>
<table>
<thead>
<tr>
@ -238,7 +234,7 @@ devices.Devices.ForEach(device =&gt; Console.WriteLine(device.Name));
<blockquote>
<p>Get information about the users current playback state, including track, track progress, and active device.</p>
</blockquote>
<p><strong>Paramters</strong> </p>
<p><strong>Parameters</strong> </p>
<table>
<thead>
<tr>
@ -266,7 +262,7 @@ if(contex.Item != null)
<blockquote>
<p>Get the object currently being played on the users Spotify account.</p>
</blockquote>
<p><strong>Paramters</strong> </p>
<p><strong>Parameters</strong> </p>
<table>
<thead>
<tr>
@ -295,7 +291,7 @@ if(contex.Item != null)
<blockquote>
<p>Transfer playback to a new device and determine if it should start playing.</p>
</blockquote>
<p><strong>Paramters</strong> </p>
<p><strong>Parameters</strong> </p>
<table>
<thead>
<tr>
@ -326,7 +322,7 @@ if(contex.Item != null)
<blockquote>
<p>Start a new context or resume current playback on the users active device.</p>
</blockquote>
<p><strong>Paramters</strong> </p>
<p><strong>Parameters</strong> </p>
<table>
<thead>
<tr>
@ -367,7 +363,7 @@ if(contex.Item != null)
<blockquote>
<p>Pause playback on the users account.</p>
</blockquote>
<p><strong>Paramters</strong> </p>
<p><strong>Parameters</strong> </p>
<table>
<thead>
<tr>
@ -393,7 +389,7 @@ if(contex.Item != null)
<blockquote>
<p>Skips to next track in the users queue.</p>
</blockquote>
<p><strong>Paramters</strong> </p>
<p><strong>Parameters</strong> </p>
<table>
<thead>
<tr>
@ -421,7 +417,7 @@ if(contex.Item != null)
Note that this will ALWAYS skip to the previous track, regardless of the current tracks progress.
Returning to the start of the current track should be performed using the https://api.spotify.com/v1/me/player/seek endpoint.</p>
</blockquote>
<p><strong>Paramters</strong> </p>
<p><strong>Parameters</strong> </p>
<table>
<thead>
<tr>
@ -447,7 +443,7 @@ Returning to the start of the current track should be performed using the https:
<blockquote>
<p>Seeks to the given position in the users currently playing track.</p>
</blockquote>
<p><strong>Paramters</strong> </p>
<p><strong>Parameters</strong> </p>
<table>
<thead>
<tr>
@ -478,7 +474,7 @@ Returning to the start of the current track should be performed using the https:
<blockquote>
<p>Set the repeat mode for the users playback. Options are repeat-track, repeat-context, and off.</p>
</blockquote>
<p><strong>Paramters</strong> </p>
<p><strong>Parameters</strong> </p>
<table>
<thead>
<tr>
@ -509,7 +505,7 @@ Returning to the start of the current track should be performed using the https:
<blockquote>
<p>Set the volume for the users current playback device.</p>
</blockquote>
<p><strong>Paramters</strong> </p>
<p><strong>Parameters</strong> </p>
<table>
<thead>
<tr>
@ -540,7 +536,7 @@ Returning to the start of the current track should be performed using the https:
<blockquote>
<p>Toggle shuffle on or off for users playback.</p>
</blockquote>
<p><strong>Paramters</strong> </p>
<p><strong>Parameters</strong> </p>
<table>
<thead>
<tr>

View File

@ -56,7 +56,7 @@
<li class="dropdown active">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">SpotifyWebAPI <b class="caret"></b></a>
<a href="#" class="dropdown-toggle" data-toggle="dropdown">SpotifyAPI.Web <b class="caret"></b></a>
<ul class="dropdown-menu">
<li >
@ -67,10 +67,6 @@
<a href="../examples/">Examples</a>
</li>
<li >
<a href="../auth/">Authentication</a>
</li>
<li >
<a href="../proxy/">Proxy</a>
</li>
@ -129,7 +125,7 @@
<li >
<a href="../../SpotifyLocalAPI/">SpotifyLocalAPI</a>
<a href="../auth/">SpotifyAPI.Web.Auth</a>
</li>
@ -209,7 +205,7 @@
<blockquote>
<p>Get a list of the playlists owned or followed by a Spotify user.</p>
</blockquote>
<p><strong>Paramters</strong> </p>
<p><strong>Parameters</strong> </p>
<table>
<thead>
<tr>
@ -248,7 +244,7 @@ userPlaylists.Items.ForEach(playlist =&gt; playlist.Owner.DisplayName) //Who is
<blockquote>
<p>Get a playlist owned by a Spotify user.</p>
</blockquote>
<p><strong>Paramters</strong> </p>
<p><strong>Parameters</strong> </p>
<table>
<thead>
<tr>
@ -292,7 +288,7 @@ playlist.Tracks.Items.ForEach(track =&gt; Console.WriteLine(track.Track.Name));
<blockquote>
<p>Get full details of the tracks of a playlist owned by a Spotify user.</p>
</blockquote>
<p><strong>Paramters</strong> </p>
<p><strong>Parameters</strong> </p>
<table>
<thead>
<tr>
@ -346,7 +342,7 @@ playlist.Items.ForEach(track =&gt; Console.WriteLine(track.Track.Name));
<blockquote>
<p>Create a playlist for a Spotify user. (The playlist will be empty until you add tracks.)</p>
</blockquote>
<p><strong>Paramters</strong> </p>
<p><strong>Parameters</strong> </p>
<table>
<thead>
<tr>
@ -386,7 +382,7 @@ if(!playlist.HasError())
<blockquote>
<p>Change a playlists name and public/private state. (The user must, of course, own the playlist.)</p>
</blockquote>
<p><strong>Paramters</strong> </p>
<p><strong>Parameters</strong> </p>
<table>
<thead>
<tr>
@ -431,7 +427,7 @@ if(!response.HasError())
<blockquote>
<p>Replace all the tracks in a playlist, overwriting its existing tracks. This powerful request can be useful for replacing tracks, re-ordering existing tracks, or clearing the playlist.</p>
</blockquote>
<p><strong>Paramters</strong> </p>
<p><strong>Parameters</strong> </p>
<table>
<thead>
<tr>
@ -471,7 +467,7 @@ if(!response.HasError())
<blockquote>
<p>Remove one or more tracks from a users playlist.</p>
</blockquote>
<p><strong>Paramters</strong> </p>
<p><strong>Parameters</strong> </p>
<table>
<thead>
<tr>
@ -520,7 +516,7 @@ ErrorResponse playlist = _spotify.RemovePlaylistTracks(&quot;1122095781&quot;, &
<blockquote>
<p>Remove one or more tracks from a users playlist.</p>
</blockquote>
<p><strong>Paramters</strong> </p>
<p><strong>Parameters</strong> </p>
<table>
<thead>
<tr>
@ -561,7 +557,7 @@ ErrorResponse response = _spotify.RemovePlaylistTrack(&quot;1122095781&quot;, &q
<blockquote>
<p>Add one or more tracks to a users playlist.</p>
</blockquote>
<p><strong>Paramters</strong> </p>
<p><strong>Parameters</strong> </p>
<table>
<thead>
<tr>
@ -606,7 +602,7 @@ if(!response.HasError())
<blockquote>
<p>Add one or more tracks to a users playlist.</p>
</blockquote>
<p><strong>Paramters</strong> </p>
<p><strong>Parameters</strong> </p>
<table>
<thead>
<tr>
@ -652,7 +648,7 @@ if(!response.HasError())
<p>Reorder a track or a group of tracks in a playlist.
More Info: <a href="https://developer.spotify.com/web-api/reorder-playlists-tracks/">Reorder-Playlist</a></p>
</blockquote>
<p><strong>Paramters</strong> </p>
<p><strong>Parameters</strong> </p>
<table>
<thead>
<tr>

View File

@ -56,7 +56,7 @@
<li class="dropdown active">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">SpotifyWebAPI <b class="caret"></b></a>
<a href="#" class="dropdown-toggle" data-toggle="dropdown">SpotifyAPI.Web <b class="caret"></b></a>
<ul class="dropdown-menu">
<li >
@ -67,10 +67,6 @@
<a href="../examples/">Examples</a>
</li>
<li >
<a href="../auth/">Authentication</a>
</li>
<li >
<a href="../proxy/">Proxy</a>
</li>
@ -129,7 +125,7 @@
<li >
<a href="../../SpotifyLocalAPI/">SpotifyLocalAPI</a>
<a href="../auth/">SpotifyAPI.Web.Auth</a>
</li>
@ -182,7 +178,7 @@
<blockquote>
<p>Get detailed profile information about the current user (including the current users username).</p>
</blockquote>
<p><strong>Paramters</strong> </p>
<p><strong>Parameters</strong> </p>
<table>
<thead>
<tr>
@ -210,7 +206,7 @@ Console.WriteLine(user.DisplayName);
<blockquote>
<p>Get public profile information about a Spotify user.</p>
</blockquote>
<p><strong>Paramters</strong> </p>
<p><strong>Parameters</strong> </p>
<table>
<thead>
<tr>

View File

@ -56,7 +56,7 @@
<li class="dropdown active">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">SpotifyWebAPI <b class="caret"></b></a>
<a href="#" class="dropdown-toggle" data-toggle="dropdown">SpotifyAPI.Web <b class="caret"></b></a>
<ul class="dropdown-menu">
<li >
@ -67,10 +67,6 @@
<a href="../examples/">Examples</a>
</li>
<li >
<a href="../auth/">Authentication</a>
</li>
<li class="active">
<a href="./">Proxy</a>
</li>
@ -129,7 +125,7 @@
<li >
<a href="../../SpotifyLocalAPI/">SpotifyLocalAPI</a>
<a href="../auth/">SpotifyAPI.Web.Auth</a>
</li>
@ -139,7 +135,7 @@
<ul class="nav navbar-nav navbar-right">
<li >
<a rel="next" href="../auth/">
<a rel="next" href="../examples/">
<i class="fa fa-arrow-left"></i> Previous
</a>
</li>

View File

@ -56,7 +56,7 @@
<li class="dropdown active">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">SpotifyWebAPI <b class="caret"></b></a>
<a href="#" class="dropdown-toggle" data-toggle="dropdown">SpotifyAPI.Web <b class="caret"></b></a>
<ul class="dropdown-menu">
<li >
@ -67,10 +67,6 @@
<a href="../examples/">Examples</a>
</li>
<li >
<a href="../auth/">Authentication</a>
</li>
<li >
<a href="../proxy/">Proxy</a>
</li>
@ -129,7 +125,7 @@
<li >
<a href="../../SpotifyLocalAPI/">SpotifyLocalAPI</a>
<a href="../auth/">SpotifyAPI.Web.Auth</a>
</li>
@ -178,7 +174,7 @@
<blockquote>
<p>Get Spotify catalog information about artists, albums, tracks or playlists that match a keyword string.</p>
</blockquote>
<p><strong>Paramters</strong></p>
<p><strong>Parameters</strong></p>
<table>
<thead>
<tr>

View File

@ -56,7 +56,7 @@
<li class="dropdown active">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">SpotifyWebAPI <b class="caret"></b></a>
<a href="#" class="dropdown-toggle" data-toggle="dropdown">SpotifyAPI.Web <b class="caret"></b></a>
<ul class="dropdown-menu">
<li >
@ -67,10 +67,6 @@
<a href="../examples/">Examples</a>
</li>
<li >
<a href="../auth/">Authentication</a>
</li>
<li >
<a href="../proxy/">Proxy</a>
</li>
@ -129,7 +125,7 @@
<li >
<a href="../../SpotifyLocalAPI/">SpotifyLocalAPI</a>
<a href="../auth/">SpotifyAPI.Web.Auth</a>
</li>
@ -184,7 +180,7 @@
<blockquote>
<p>Get Spotify catalog information for multiple tracks based on their Spotify IDs.</p>
</blockquote>
<p><strong>Paramters</strong> </p>
<p><strong>Parameters</strong> </p>
<table>
<thead>
<tr>
@ -217,7 +213,7 @@ severalTracks.Tracks.ForEach(track =&gt; Console.WriteLine(track.Name));
<blockquote>
<p>Get Spotify catalog information for a single track identified by its unique Spotify ID.</p>
</blockquote>
<p><strong>Paramters</strong> </p>
<p><strong>Parameters</strong> </p>
<table>
<thead>
<tr>
@ -250,7 +246,7 @@ Console.WriteLine(track.Name);
<blockquote>
<p>Get a detailed audio analysis for a single track identified by its unique Spotify ID.</p>
</blockquote>
<p><strong>Paramters</strong> </p>
<p><strong>Parameters</strong> </p>
<table>
<thead>
<tr>

View File

@ -56,7 +56,7 @@
<li class="dropdown active">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">SpotifyWebAPI <b class="caret"></b></a>
<a href="#" class="dropdown-toggle" data-toggle="dropdown">SpotifyAPI.Web <b class="caret"></b></a>
<ul class="dropdown-menu">
<li >
@ -67,10 +67,6 @@
<a href="../examples/">Examples</a>
</li>
<li >
<a href="../auth/">Authentication</a>
</li>
<li >
<a href="../proxy/">Proxy</a>
</li>
@ -129,7 +125,7 @@
<li >
<a href="../../SpotifyLocalAPI/">SpotifyLocalAPI</a>
<a href="../auth/">SpotifyAPI.Web.Auth</a>
</li>
@ -144,7 +140,7 @@
</a>
</li>
<li >
<a rel="prev" href="../../SpotifyLocalAPI/">
<a rel="prev" href="../auth/">
Next <i class="fa fa-arrow-right"></i>
</a>
</li>

View File

@ -4,7 +4,7 @@
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="API Docs for SpotifyAPI-NET">
<meta name="description" content="API Docs for SpotifyAPI.Web and SpotifyAPI.Web.Auth">
<meta name="author" content="JohnnyCrazy">
<link rel="shortcut icon" href="./img/favicon.ico">
@ -56,7 +56,7 @@
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">SpotifyWebAPI <b class="caret"></b></a>
<a href="#" class="dropdown-toggle" data-toggle="dropdown">SpotifyAPI.Web <b class="caret"></b></a>
<ul class="dropdown-menu">
<li >
@ -67,10 +67,6 @@
<a href="SpotifyWebAPI/examples/">Examples</a>
</li>
<li >
<a href="SpotifyWebAPI/auth/">Authentication</a>
</li>
<li >
<a href="SpotifyWebAPI/proxy/">Proxy</a>
</li>
@ -129,7 +125,7 @@
<li >
<a href="SpotifyLocalAPI/">SpotifyLocalAPI</a>
<a href="SpotifyWebAPI/auth/">SpotifyAPI.Web.Auth</a>
</li>
@ -182,31 +178,32 @@
<h1 id="spotifyapi-net-documentation">SpotifyAPI-NET Documentation</h1>
<h2 id="about">About</h2>
<p>This Library, written in C#/.NET, combines two independent SpotifyAPIs into one.</p>
<p>This project, written in C#/.NET, provides 2 libraries for an easier usage of the Spotify Web API</p>
<p><strong>Spotify's Web API</strong> (<a href="https://developer.spotify.com/web-api/">link</a>)</p>
<blockquote>
<p>Based on simple REST principles, our Web API endpoints return metadata in JSON format about artists, albums, and tracks directly from the Spotify catalogue.
The API also provides access to user-related data such as playlists and music saved in a “Your Music” library, subject to users authorization.</p>
</blockquote>
<p><strong>Spotify's <em>unofficial</em> Local API</strong></p>
<p><strong>SpotifyAPI.Web</strong></p>
<blockquote>
<p>Do you ever wanted to control your local Spotify Client with some sort of API? Now you can! This API gives you full control over your spotify client.
You can get infos about the currently playing song, get its Album-Art, skip/pause and much more. It also features multiple Event-Interfaces.</p>
<p>A wrapper around Spotify's Web API, providing sync and async methods to query all possible endpoints. Results are returned as typed class instances, allowing property-based access.</p>
</blockquote>
<p><strong>SpotifyAPI.Web.Auth</strong></p>
<blockquote>
<p>A library providing C# implementations of the 3 supported Authentication modes, including <code>ImplicitGrantAuth</code>, <code>AuthorizationCodeAuth</code> and <code>CredentialsAuth</code></p>
</blockquote>
<p>Both combined can be used for any kind of application.</p>
<hr />
<h2 id="installing">Installing</h2>
<ul>
<li>Via NuGet Package:</li>
</ul>
<pre><code class="cs">Install-Package SpotifyAPI-NET
//or
Install-Package SpotifyAPI-NET -pre
<pre><code class="cs">Install-Package SpotifyAPI.Web
Install-Package SpotifyAPI.Web.Auth
</code></pre>
<ul>
<li>Download the latest binaries on the <a href="https://github.com/JohnnyCrazy/SpotifyAPI-NET/releases">GitHub Release Page</a> and add it to your Project</li>
<li>Clone the Repo and build the project on your local machine.</li>
<li>Clone the Repo and build the project yourself.</li>
</ul>
<hr />
<h2 id="projects">Projects</h2>

File diff suppressed because one or more lines are too long

View File

@ -4,7 +4,7 @@
<url>
<loc>/</loc>
<lastmod>2018-12-17</lastmod>
<lastmod>2018-12-22</lastmod>
<changefreq>daily</changefreq>
</url>
@ -13,97 +13,91 @@
<url>
<loc>/SpotifyWebAPI/gettingstarted/</loc>
<lastmod>2018-12-17</lastmod>
<lastmod>2018-12-22</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>/SpotifyWebAPI/examples/</loc>
<lastmod>2018-12-17</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>/SpotifyWebAPI/auth/</loc>
<lastmod>2018-12-17</lastmod>
<lastmod>2018-12-22</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>/SpotifyWebAPI/proxy/</loc>
<lastmod>2018-12-17</lastmod>
<lastmod>2018-12-22</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>/SpotifyWebAPI/albums/</loc>
<lastmod>2018-12-17</lastmod>
<lastmod>2018-12-22</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>/SpotifyWebAPI/artists/</loc>
<lastmod>2018-12-17</lastmod>
<lastmod>2018-12-22</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>/SpotifyWebAPI/browse/</loc>
<lastmod>2018-12-17</lastmod>
<lastmod>2018-12-22</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>/SpotifyWebAPI/follow/</loc>
<lastmod>2018-12-17</lastmod>
<lastmod>2018-12-22</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>/SpotifyWebAPI/library/</loc>
<lastmod>2018-12-17</lastmod>
<lastmod>2018-12-22</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>/SpotifyWebAPI/personalization/</loc>
<lastmod>2018-12-17</lastmod>
<lastmod>2018-12-22</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>/SpotifyWebAPI/player/</loc>
<lastmod>2018-12-17</lastmod>
<lastmod>2018-12-22</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>/SpotifyWebAPI/playlists/</loc>
<lastmod>2018-12-17</lastmod>
<lastmod>2018-12-22</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>/SpotifyWebAPI/profiles/</loc>
<lastmod>2018-12-17</lastmod>
<lastmod>2018-12-22</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>/SpotifyWebAPI/search/</loc>
<lastmod>2018-12-17</lastmod>
<lastmod>2018-12-22</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>/SpotifyWebAPI/tracks/</loc>
<lastmod>2018-12-17</lastmod>
<lastmod>2018-12-22</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>/SpotifyWebAPI/util/</loc>
<lastmod>2018-12-17</lastmod>
<lastmod>2018-12-22</lastmod>
<changefreq>daily</changefreq>
</url>
@ -111,8 +105,8 @@
<url>
<loc>/SpotifyLocalAPI/</loc>
<lastmod>2018-12-17</lastmod>
<loc>/SpotifyWebAPI/auth/</loc>
<lastmod>2018-12-22</lastmod>
<changefreq>daily</changefreq>
</url>