From 022a6404826e1d988f2d4bf236c74008cc853be8 Mon Sep 17 00:00:00 2001 From: AppVeyor Doc Generation Date: Mon, 11 Nov 2019 07:28:51 +0000 Subject: [PATCH] Built docs | AppVeyor Build 507 --- 404.html | 4 ++-- assets/js/{10.29899bd4.js => 10.4f04aed6.js} | 2 +- assets/js/{19.c6343cc0.js => 19.be850fd0.js} | 2 +- assets/js/{21.401b13b4.js => 21.ef85dcdf.js} | 2 +- assets/js/{22.cfa8f8db.js => 22.0a35d0d8.js} | 2 +- assets/js/{23.0dd8fbde.js => 23.8a027d81.js} | 2 +- assets/js/{24.0e78cfc0.js => 24.07659c28.js} | 2 +- assets/js/{25.aae27f67.js => 25.81029a65.js} | 2 +- assets/js/{8.26b7beaf.js => 8.f1a479eb.js} | 2 +- assets/js/{9.2255e63f.js => 9.71a1bc10.js} | 2 +- assets/js/{app.b3b376a4.js => app.25f60649.js} | 4 ++-- auth/authorization_code.html | 6 +++--- auth/client_credentials.html | 6 +++--- auth/getting_started.html | 6 +++--- auth/implicit_grant.html | 6 +++--- auth/token_swap.html | 6 +++--- index.html | 6 +++--- web/albums.html | 6 +++--- web/artists.html | 6 +++--- web/browse.html | 6 +++--- web/examples.html | 6 +++--- web/follow.html | 6 +++--- web/getting_started.html | 6 +++--- web/library.html | 6 +++--- web/personalization.html | 6 +++--- web/player.html | 6 +++--- web/playlists.html | 6 +++--- web/profiles.html | 6 +++--- web/proxy.html | 6 +++--- web/search.html | 6 +++--- web/tracks.html | 6 +++--- web/utils.html | 6 +++--- 32 files changed, 76 insertions(+), 76 deletions(-) rename assets/js/{10.29899bd4.js => 10.4f04aed6.js} (99%) rename assets/js/{19.c6343cc0.js => 19.be850fd0.js} (99%) rename assets/js/{21.401b13b4.js => 21.ef85dcdf.js} (98%) rename assets/js/{22.cfa8f8db.js => 22.0a35d0d8.js} (97%) rename assets/js/{23.0dd8fbde.js => 23.8a027d81.js} (98%) rename assets/js/{24.0e78cfc0.js => 24.07659c28.js} (99%) rename assets/js/{25.aae27f67.js => 25.81029a65.js} (98%) rename assets/js/{8.26b7beaf.js => 8.f1a479eb.js} (97%) rename assets/js/{9.2255e63f.js => 9.71a1bc10.js} (98%) rename assets/js/{app.b3b376a4.js => app.25f60649.js} (95%) diff --git a/404.html b/404.html index be24efb4..d379e977 100644 --- a/404.html +++ b/404.html @@ -7,11 +7,11 @@ - +

404

That's a Four-Oh-Four.
Take me home.
- + diff --git a/assets/js/10.29899bd4.js b/assets/js/10.4f04aed6.js similarity index 99% rename from assets/js/10.29899bd4.js rename to assets/js/10.4f04aed6.js index 449bebf0..5181ed73 100644 --- a/assets/js/10.29899bd4.js +++ b/assets/js/10.4f04aed6.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[10],{191:function(t,e,s){"use strict";s.r(e);var a=s(0),n=Object(a.a)({},function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"tokenswapauth"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#tokenswapauth","aria-hidden":"true"}},[t._v("#")]),t._v(" TokenSwapAuth")]),t._v(" "),s("p",[t._v("This way uses server-side code or at least access to an exchange server, otherwise, compared to other\nmethods, it is impossible to use.")]),t._v(" "),s("p",[t._v('With this approach, you provide the URI/URL to your desired exchange server to perform all necessary\nrequests to Spotify, as well as requests that return back to the "server URI".')]),t._v(" "),s("p",[t._v("The exchange server "),s("strong",[t._v("must")]),t._v(" be able to:")]),t._v(" "),s("ul",[s("li",[t._v('Return the authorization code from Spotify API authenticate page via GET request to the "server URI".')]),t._v(" "),s("li",[t._v("Request the token response object via POST to the Spotify API token page.")]),t._v(" "),s("li",[t._v("Request a refreshed token response object via POST to the Spotify API token page.")])]),t._v(" "),s("p",[s("strong",[t._v("The good news is that you do not need to code it yourself.")])]),t._v(" "),s("p",[t._v("The advantages of this method are that the client ID and redirect URI are very well hidden and almost unexposed, but more importantly, your client secret is "),s("strong",[t._v("never")]),t._v(" exposed and is completely hidden compared to other methods (excluding "),s("a",{attrs:{href:"/SpotifyWebAPI/auth#implicitgrantauth"}},[t._v("ImplicitGrantAuth")]),t._v("\nas it does not deal with a client secret). This means\nyour Spotify app "),s("strong",[t._v("cannot")]),t._v(" be spoofed by a malicious third party.")]),t._v(" "),s("h2",{attrs:{id:"using-tokenswapwebapifactory"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#using-tokenswapwebapifactory","aria-hidden":"true"}},[t._v("#")]),t._v(" Using TokenSwapWebAPIFactory")]),t._v(" "),s("p",[t._v("The TokenSwapWebAPIFactory will create and configure a SpotifyWebAPI object for you.")]),t._v(" "),s("p",[t._v("It does this through the method GetWebApiAsync "),s("strong",[t._v("asynchronously")]),t._v(", which means it will not halt execution of your program while obtaining it for you. If you would like to halt execution, which is "),s("strong",[t._v("synchronous")]),t._v(", use "),s("code",[t._v("GetWebApiAsync().Result")]),t._v(" without using "),s("strong",[t._v("await")]),t._v(".")]),t._v(" "),s("div",{staticClass:"language-csharp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-csharp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("TokenSwapWebAPIFactory")]),t._v(" webApiFactory"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("SpotifyWebAPI")]),t._v(" spotify"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// You should store a reference to WebAPIFactory if you are using AutoRefresh or want to manually refresh it later on. New WebAPIFactory objects cannot refresh SpotifyWebAPI object that they did not give to you.")]),t._v("\nwebApiFactory "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("TokenSwapWebAPIFactory")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"INSERT LINK TO YOUR index.php HERE"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n Scope "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" Scope"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("UserReadPrivate "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("|")]),t._v(" Scope"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("UserReadEmail "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("|")]),t._v(" Scope"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("PlaylistReadPrivate"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n AutoRefresh "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("true")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// You may want to react to being able to use the Spotify service.")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// webApiFactory.OnAuthSuccess += (sender, e) => authorized = true;")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// You may want to react to your user's access expiring.")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// webApiFactory.OnAccessTokenExpired += (sender, e) => authorized = false;")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("try")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n spotify "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" webApiFactory"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("GetWebApiAsync")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Synchronous way:")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// spotify = webApiFactory.GetWebApiAsync().Result;")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("catch")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Exception")]),t._v(" ex"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Example way to handle error reporting gracefully with your SpotifyWebAPI wrapper")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v('// UpdateStatus($"Spotify failed to load: {ex.Message}");')]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h2",{attrs:{id:"using-tokenswapauth"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#using-tokenswapauth","aria-hidden":"true"}},[t._v("#")]),t._v(" Using TokenSwapAuth")]),t._v(" "),s("p",[t._v("Since the TokenSwapWebAPIFactory not only simplifies the whole process but offers additional functionality too\n(such as AutoRefresh and AuthSuccess AuthFailure events), use of this way is very verbose and is only\nrecommended if you are having issues with TokenSwapWebAPIFactory or need access to the tokens.")]),t._v(" "),s("div",{staticClass:"language-csharp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-csharp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("TokenSwapAuth")]),t._v(" auth "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("TokenSwapAuth")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n exchangeServerUri"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"INSERT LINK TO YOUR index.php HERE"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n serverUri"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://localhost:4002"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n scope"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" Scope"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("UserReadPrivate "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("|")]),t._v(" Scope"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("UserReadEmail "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("|")]),t._v(" Scope"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("PlaylistReadPrivate\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nauth"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("AuthReceived "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("+=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("async")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("sender"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" response"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=>")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n lastToken "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" auth"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("ExchangeCodeAsync")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("response"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Code"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n spotify "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("SpotifyWebAPI")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n TokenType "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" lastToken"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("TokenType"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n AccessToken "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" lastToken"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("AccessToken\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n authenticated "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("true")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n auth"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("Stop")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nauth"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("OnAccessTokenExpired "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("+=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("async")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("sender"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" e"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=>")]),t._v(" spotify"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("AccessToken "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" auth"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("RefreshAuthAsync")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("lastToken"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("RefreshToken"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("AccessToken"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nauth"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("Start")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nauth"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("OpenBrowser")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h2",{attrs:{id:"token-swap-endpoint"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#token-swap-endpoint","aria-hidden":"true"}},[t._v("#")]),t._v(" Token Swap Endpoint")]),t._v(" "),s("p",[t._v("To keep your client secret completely secure and your client ID and redirect URI as secure as possible, use of a web server (such as a php website) is required.")]),t._v(" "),s("p",[t._v("To use this method, an external HTTP Server (that you may need to create) needs to be able to supply the following HTTP Endpoints to your application:")]),t._v(" "),s("p",[s("code",[t._v("/swap")]),t._v(" - Swaps out an "),s("code",[t._v("authorization_code")]),t._v(" with an "),s("code",[t._v("access_token")]),t._v(" and "),s("code",[t._v("refresh_token")]),t._v(" - The following parameters are required in the JSON POST Body:")]),t._v(" "),s("ul",[s("li",[s("code",[t._v("grant_type")]),t._v(" (set to "),s("code",[t._v('"authorization_code"')]),t._v(")")]),t._v(" "),s("li",[s("code",[t._v("code")]),t._v(" (the "),s("code",[t._v("authorization_code")]),t._v(")")]),t._v(" "),s("li",[s("code",[t._v("redirect_uri")])]),t._v(" "),s("li",[s("ul",[s("li",[s("strong",[t._v("Important")]),t._v(" The page that the redirect URI links to must return the authorization code json to your "),s("code",[t._v("serverUri")]),t._v(" (default is 'http://localhost:4002') but to the folder 'auth', like this: 'http://localhost:4002/auth'.")])])])]),t._v(" "),s("p",[s("code",[t._v("/refresh")]),t._v(" - Refreshes an "),s("code",[t._v("access_token")]),t._v(" - The following parameters are required in the JSON POST Body:")]),t._v(" "),s("ul",[s("li",[s("code",[t._v("grant_type")]),t._v(" (set to "),s("code",[t._v('"refresh_token"')]),t._v(")")]),t._v(" "),s("li",[s("code",[t._v("refresh_token")])])]),t._v(" "),s("p",[t._v("The following open-source token swap endpoint code can be used for your website:")]),t._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"https://github.com/rollersteaam/spotify-token-swap-php",target:"_blank",rel:"noopener noreferrer"}},[t._v("rollersteaam/spotify-token-swap-php"),s("OutboundLink")],1)]),t._v(" "),s("li",[s("a",{attrs:{href:"https://github.com/simontaen/SpotifyTokenSwap",target:"_blank",rel:"noopener noreferrer"}},[t._v("simontaen/SpotifyTokenSwap"),s("OutboundLink")],1)])]),t._v(" "),s("h2",{attrs:{id:"remarks"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#remarks","aria-hidden":"true"}},[t._v("#")]),t._v(" Remarks")]),t._v(" "),s("p",[t._v("It should be noted that GitHub Pages does not support hosting php scripts. Hosting php scripts through it will cause the php to render as plain HTML, potentially compromising your client secret while doing absolutely nothing.")]),t._v(" "),s("p",[t._v("Be sure you have whitelisted your redirect uri in the Spotify Developer Dashboard otherwise the authorization will always fail.")]),t._v(" "),s("p",[t._v("If you did not use the WebAPIFactory or you provided a "),s("code",[t._v("serverUri")]),t._v(" different from its default, you must make sure your redirect uri's script at your endpoint will properly redirect to your "),s("code",[t._v("serverUri")]),t._v(" (such as changing the areas which refer to "),s("code",[t._v("localhost:4002")]),t._v(" if you had changed "),s("code",[t._v("serverUri")]),t._v(" from its default), otherwise it will never reach your new "),s("code",[t._v("serverUri")]),t._v(".")])])},[],!1,null,null,null);e.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[10],{190:function(t,e,s){"use strict";s.r(e);var a=s(0),n=Object(a.a)({},function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"tokenswapauth"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#tokenswapauth","aria-hidden":"true"}},[t._v("#")]),t._v(" TokenSwapAuth")]),t._v(" "),s("p",[t._v("This way uses server-side code or at least access to an exchange server, otherwise, compared to other\nmethods, it is impossible to use.")]),t._v(" "),s("p",[t._v('With this approach, you provide the URI/URL to your desired exchange server to perform all necessary\nrequests to Spotify, as well as requests that return back to the "server URI".')]),t._v(" "),s("p",[t._v("The exchange server "),s("strong",[t._v("must")]),t._v(" be able to:")]),t._v(" "),s("ul",[s("li",[t._v('Return the authorization code from Spotify API authenticate page via GET request to the "server URI".')]),t._v(" "),s("li",[t._v("Request the token response object via POST to the Spotify API token page.")]),t._v(" "),s("li",[t._v("Request a refreshed token response object via POST to the Spotify API token page.")])]),t._v(" "),s("p",[s("strong",[t._v("The good news is that you do not need to code it yourself.")])]),t._v(" "),s("p",[t._v("The advantages of this method are that the client ID and redirect URI are very well hidden and almost unexposed, but more importantly, your client secret is "),s("strong",[t._v("never")]),t._v(" exposed and is completely hidden compared to other methods (excluding "),s("a",{attrs:{href:"/SpotifyWebAPI/auth#implicitgrantauth"}},[t._v("ImplicitGrantAuth")]),t._v("\nas it does not deal with a client secret). This means\nyour Spotify app "),s("strong",[t._v("cannot")]),t._v(" be spoofed by a malicious third party.")]),t._v(" "),s("h2",{attrs:{id:"using-tokenswapwebapifactory"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#using-tokenswapwebapifactory","aria-hidden":"true"}},[t._v("#")]),t._v(" Using TokenSwapWebAPIFactory")]),t._v(" "),s("p",[t._v("The TokenSwapWebAPIFactory will create and configure a SpotifyWebAPI object for you.")]),t._v(" "),s("p",[t._v("It does this through the method GetWebApiAsync "),s("strong",[t._v("asynchronously")]),t._v(", which means it will not halt execution of your program while obtaining it for you. If you would like to halt execution, which is "),s("strong",[t._v("synchronous")]),t._v(", use "),s("code",[t._v("GetWebApiAsync().Result")]),t._v(" without using "),s("strong",[t._v("await")]),t._v(".")]),t._v(" "),s("div",{staticClass:"language-csharp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-csharp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("TokenSwapWebAPIFactory")]),t._v(" webApiFactory"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("SpotifyWebAPI")]),t._v(" spotify"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// You should store a reference to WebAPIFactory if you are using AutoRefresh or want to manually refresh it later on. New WebAPIFactory objects cannot refresh SpotifyWebAPI object that they did not give to you.")]),t._v("\nwebApiFactory "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("TokenSwapWebAPIFactory")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"INSERT LINK TO YOUR index.php HERE"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n Scope "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" Scope"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("UserReadPrivate "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("|")]),t._v(" Scope"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("UserReadEmail "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("|")]),t._v(" Scope"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("PlaylistReadPrivate"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n AutoRefresh "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("true")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// You may want to react to being able to use the Spotify service.")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// webApiFactory.OnAuthSuccess += (sender, e) => authorized = true;")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// You may want to react to your user's access expiring.")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// webApiFactory.OnAccessTokenExpired += (sender, e) => authorized = false;")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("try")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n spotify "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" webApiFactory"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("GetWebApiAsync")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Synchronous way:")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// spotify = webApiFactory.GetWebApiAsync().Result;")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("catch")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Exception")]),t._v(" ex"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Example way to handle error reporting gracefully with your SpotifyWebAPI wrapper")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v('// UpdateStatus($"Spotify failed to load: {ex.Message}");')]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h2",{attrs:{id:"using-tokenswapauth"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#using-tokenswapauth","aria-hidden":"true"}},[t._v("#")]),t._v(" Using TokenSwapAuth")]),t._v(" "),s("p",[t._v("Since the TokenSwapWebAPIFactory not only simplifies the whole process but offers additional functionality too\n(such as AutoRefresh and AuthSuccess AuthFailure events), use of this way is very verbose and is only\nrecommended if you are having issues with TokenSwapWebAPIFactory or need access to the tokens.")]),t._v(" "),s("div",{staticClass:"language-csharp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-csharp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("TokenSwapAuth")]),t._v(" auth "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("TokenSwapAuth")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n exchangeServerUri"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"INSERT LINK TO YOUR index.php HERE"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n serverUri"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://localhost:4002"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n scope"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" Scope"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("UserReadPrivate "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("|")]),t._v(" Scope"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("UserReadEmail "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("|")]),t._v(" Scope"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("PlaylistReadPrivate\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nauth"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("AuthReceived "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("+=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("async")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("sender"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" response"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=>")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n lastToken "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" auth"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("ExchangeCodeAsync")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("response"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Code"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n spotify "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("SpotifyWebAPI")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n TokenType "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" lastToken"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("TokenType"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n AccessToken "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" lastToken"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("AccessToken\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n authenticated "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("true")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n auth"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("Stop")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nauth"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("OnAccessTokenExpired "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("+=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("async")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("sender"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" e"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=>")]),t._v(" spotify"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("AccessToken "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" auth"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("RefreshAuthAsync")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("lastToken"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("RefreshToken"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("AccessToken"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nauth"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("Start")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nauth"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("OpenBrowser")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h2",{attrs:{id:"token-swap-endpoint"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#token-swap-endpoint","aria-hidden":"true"}},[t._v("#")]),t._v(" Token Swap Endpoint")]),t._v(" "),s("p",[t._v("To keep your client secret completely secure and your client ID and redirect URI as secure as possible, use of a web server (such as a php website) is required.")]),t._v(" "),s("p",[t._v("To use this method, an external HTTP Server (that you may need to create) needs to be able to supply the following HTTP Endpoints to your application:")]),t._v(" "),s("p",[s("code",[t._v("/swap")]),t._v(" - Swaps out an "),s("code",[t._v("authorization_code")]),t._v(" with an "),s("code",[t._v("access_token")]),t._v(" and "),s("code",[t._v("refresh_token")]),t._v(" - The following parameters are required in the JSON POST Body:")]),t._v(" "),s("ul",[s("li",[s("code",[t._v("grant_type")]),t._v(" (set to "),s("code",[t._v('"authorization_code"')]),t._v(")")]),t._v(" "),s("li",[s("code",[t._v("code")]),t._v(" (the "),s("code",[t._v("authorization_code")]),t._v(")")]),t._v(" "),s("li",[s("code",[t._v("redirect_uri")])]),t._v(" "),s("li",[s("ul",[s("li",[s("strong",[t._v("Important")]),t._v(" The page that the redirect URI links to must return the authorization code json to your "),s("code",[t._v("serverUri")]),t._v(" (default is 'http://localhost:4002') but to the folder 'auth', like this: 'http://localhost:4002/auth'.")])])])]),t._v(" "),s("p",[s("code",[t._v("/refresh")]),t._v(" - Refreshes an "),s("code",[t._v("access_token")]),t._v(" - The following parameters are required in the JSON POST Body:")]),t._v(" "),s("ul",[s("li",[s("code",[t._v("grant_type")]),t._v(" (set to "),s("code",[t._v('"refresh_token"')]),t._v(")")]),t._v(" "),s("li",[s("code",[t._v("refresh_token")])])]),t._v(" "),s("p",[t._v("The following open-source token swap endpoint code can be used for your website:")]),t._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"https://github.com/rollersteaam/spotify-token-swap-php",target:"_blank",rel:"noopener noreferrer"}},[t._v("rollersteaam/spotify-token-swap-php"),s("OutboundLink")],1)]),t._v(" "),s("li",[s("a",{attrs:{href:"https://github.com/simontaen/SpotifyTokenSwap",target:"_blank",rel:"noopener noreferrer"}},[t._v("simontaen/SpotifyTokenSwap"),s("OutboundLink")],1)])]),t._v(" "),s("h2",{attrs:{id:"remarks"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#remarks","aria-hidden":"true"}},[t._v("#")]),t._v(" Remarks")]),t._v(" "),s("p",[t._v("It should be noted that GitHub Pages does not support hosting php scripts. Hosting php scripts through it will cause the php to render as plain HTML, potentially compromising your client secret while doing absolutely nothing.")]),t._v(" "),s("p",[t._v("Be sure you have whitelisted your redirect uri in the Spotify Developer Dashboard otherwise the authorization will always fail.")]),t._v(" "),s("p",[t._v("If you did not use the WebAPIFactory or you provided a "),s("code",[t._v("serverUri")]),t._v(" different from its default, you must make sure your redirect uri's script at your endpoint will properly redirect to your "),s("code",[t._v("serverUri")]),t._v(" (such as changing the areas which refer to "),s("code",[t._v("localhost:4002")]),t._v(" if you had changed "),s("code",[t._v("serverUri")]),t._v(" from its default), otherwise it will never reach your new "),s("code",[t._v("serverUri")]),t._v(".")])])},[],!1,null,null,null);e.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/19.c6343cc0.js b/assets/js/19.be850fd0.js similarity index 99% rename from assets/js/19.c6343cc0.js rename to assets/js/19.be850fd0.js index 64122fa5..890953cfc 100644 --- a/assets/js/19.c6343cc0.js +++ b/assets/js/19.be850fd0.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[19],{200:function(t,a,e){"use strict";e.r(a);var s=e(0),r=Object(s.a)({},function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"player"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#player","aria-hidden":"true"}},[t._v("#")]),t._v(" Player")]),t._v(" "),e("h2",{attrs:{id:"getdevices"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#getdevices","aria-hidden":"true"}},[t._v("#")]),t._v(" GetDevices")]),t._v(" "),e("blockquote",[e("p",[t._v("Get information about a user’s available devices.")])]),t._v(" "),e("p",[e("strong",[t._v("Parameters")])]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Description")]),t._v(" "),e("th",[t._v("Example")])])]),t._v(" "),e("tbody")]),t._v(" "),e("p",[e("strong",[t._v("Usage")])]),t._v(" "),e("div",{staticClass:"language-csharp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-csharp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("AvailabeDevices")]),t._v(" devices "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" _spotify"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("GetDevices")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\ndevices"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Devices"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("ForEach")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("device "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=>")]),t._v(" Console"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("WriteLine")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("device"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Name"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),e("hr"),t._v(" "),e("h2",{attrs:{id:"getplayback"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#getplayback","aria-hidden":"true"}},[t._v("#")]),t._v(" GetPlayback")]),t._v(" "),e("blockquote",[e("p",[t._v("Get information about the user’s current playback state, including track, track progress, and active device.")])]),t._v(" "),e("p",[e("strong",[t._v("Parameters")])]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Description")]),t._v(" "),e("th",[t._v("Example")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[t._v("[market]")]),t._v(" "),e("td",[t._v("An ISO 3166-1 alpha-2 country code. Provide this parameter if you want to apply Track Relinking.")]),t._v(" "),e("td",[e("code",[t._v('"DE"')])])])])]),t._v(" "),e("p",[e("strong",[t._v("Usage")])]),t._v(" "),e("div",{staticClass:"language-csharp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-csharp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("PlaybackContext")]),t._v(" context "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" _spotify"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("GetPlayback")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("if")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("contex"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Item "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("null")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n Console"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("WriteLine")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("context"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Item"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Name"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//Print the current song")]),t._v("\n")])])]),e("hr"),t._v(" "),e("h2",{attrs:{id:"getplayingtrack"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#getplayingtrack","aria-hidden":"true"}},[t._v("#")]),t._v(" GetPlayingTrack")]),t._v(" "),e("blockquote",[e("p",[t._v("Get the object currently being played on the user’s Spotify account.")])]),t._v(" "),e("p",[e("strong",[t._v("Parameters")])]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Description")]),t._v(" "),e("th",[t._v("Example")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[t._v("[market]")]),t._v(" "),e("td",[t._v("An ISO 3166-1 alpha-2 country code. Provide this parameter if you want to apply Track Relinking.")]),t._v(" "),e("td",[e("code",[t._v('"DE"')])])])])]),t._v(" "),e("p",[t._v("This is a simpler (less data) version of "),e("code",[t._v("GetPlayback")])]),t._v(" "),e("p",[e("strong",[t._v("Usage")])]),t._v(" "),e("div",{staticClass:"language-csharp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-csharp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("PlaybackContext")]),t._v(" context "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" _spotify"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("GetPlayingTrack")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("if")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("contex"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Item "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("null")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n Console"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("WriteLine")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("context"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Item"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Name"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//Print the current song")]),t._v("\n")])])]),e("hr"),t._v(" "),e("h2",{attrs:{id:"transferplayback"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#transferplayback","aria-hidden":"true"}},[t._v("#")]),t._v(" TransferPlayback")]),t._v(" "),e("blockquote",[e("p",[t._v("Transfer playback to a new device and determine if it should start playing.")])]),t._v(" "),e("p",[e("strong",[t._v("Parameters")])]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Description")]),t._v(" "),e("th",[t._v("Example")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[t._v("deviceIds or deviceId")]),t._v(" "),e("td",[t._v("A JSON array containing the ID of the device on which playback should be started/transferred")]),t._v(" "),e("td",[e("code",[t._v('"XXXX-XXXX-XXXX-XXXX"')])])]),t._v(" "),e("tr",[e("td",[t._v("play")]),t._v(" "),e("td",[t._v("true: ensure playback happens on new device, false: keep current playback state")]),t._v(" "),e("td",[e("code",[t._v("true")])])])])]),t._v(" "),e("p",[e("strong",[t._v("Usage")])]),t._v(" "),e("div",{staticClass:"language-csharp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-csharp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ErrorResponse")]),t._v(" error "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" _spotify"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("TransferPlayback")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"XXXX-XXXX-XXXX-XXXX"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),e("hr"),t._v(" "),e("h2",{attrs:{id:"resumeplayback"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#resumeplayback","aria-hidden":"true"}},[t._v("#")]),t._v(" ResumePlayback")]),t._v(" "),e("blockquote",[e("p",[t._v("Start a new context or resume current playback on the user’s active device.")])]),t._v(" "),e("p",[e("strong",[t._v("Parameters")])]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Description")]),t._v(" "),e("th",[t._v("Example")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[t._v("[deviceId]")]),t._v(" "),e("td",[t._v("The id of the device this command is targeting. If not supplied, the user's currently active device is the target.")]),t._v(" "),e("td",[e("code",[t._v('"XXXX-XXXX-XXXX-XXXX"')])])]),t._v(" "),e("tr",[e("td",[t._v("contextUri")]),t._v(" "),e("td",[t._v("Spotify URI of the context to play")]),t._v(" "),e("td",[e("code",[t._v('"spotify:album:1Je1IMUlBXcx1Fz0WE7oPT"')])])]),t._v(" "),e("tr",[e("td",[t._v("uris")]),t._v(" "),e("td",[t._v("An array of the Spotify track URIs to play.")]),t._v(" "),e("td",[e("code",[t._v('new List { "spotify:track:4iV5W9uYEdYUVa79Axb7Rh" }')])])]),t._v(" "),e("tr",[e("td",[t._v("offset")]),t._v(" "),e("td",[t._v("Indicates from where in the context playback should start. Only available when context_uri corresponds to an album or playlist object, or when the uris parameter is used.")]),t._v(" "),e("td",[e("code",[t._v("0")])])])])]),t._v(" "),e("p",[e("strong",[t._v("Usage")])]),t._v(" "),e("div",{staticClass:"language-csharp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-csharp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ErrorResponse")]),t._v(" error "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" _spotify"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("ResumePlayback")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("uris"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("List")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("string")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"spotify:track:4iV5W9uYEdYUVa79Axb7Rh"')]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),e("hr"),t._v(" "),e("h2",{attrs:{id:"pauseplayback"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#pauseplayback","aria-hidden":"true"}},[t._v("#")]),t._v(" PausePlayback")]),t._v(" "),e("blockquote",[e("p",[t._v("Pause playback on the user’s account.")])]),t._v(" "),e("p",[e("strong",[t._v("Parameters")])]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Description")]),t._v(" "),e("th",[t._v("Example")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[t._v("[deviceId]")]),t._v(" "),e("td",[t._v("The id of the device this command is targeting. If not supplied, the user's currently active device is the target.")]),t._v(" "),e("td",[e("code",[t._v('"XXXX-XXXX-XXXX-XXXX"')])])])])]),t._v(" "),e("p",[e("strong",[t._v("Usage")])]),t._v(" "),e("div",{staticClass:"language-csharp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-csharp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ErrorResponse")]),t._v(" error "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" _spotify"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("PausePlayback")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),e("hr"),t._v(" "),e("h2",{attrs:{id:"skipplaybacktonext"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#skipplaybacktonext","aria-hidden":"true"}},[t._v("#")]),t._v(" SkipPlaybackToNext")]),t._v(" "),e("blockquote",[e("p",[t._v("Skips to next track in the user’s queue.")])]),t._v(" "),e("p",[e("strong",[t._v("Parameters")])]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Description")]),t._v(" "),e("th",[t._v("Example")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[t._v("[deviceId]")]),t._v(" "),e("td",[t._v("The id of the device this command is targeting. If not supplied, the user's currently active device is the target.")]),t._v(" "),e("td",[e("code",[t._v('"XXXX-XXXX-XXXX-XXXX"')])])])])]),t._v(" "),e("p",[e("strong",[t._v("Usage")])]),t._v(" "),e("div",{staticClass:"language-csharp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-csharp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ErrorResponse")]),t._v(" error "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" _spotify"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("SkipPlaybackToNext")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),e("hr"),t._v(" "),e("h2",{attrs:{id:"skipplaybacktoprevious"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#skipplaybacktoprevious","aria-hidden":"true"}},[t._v("#")]),t._v(" SkipPlaybackToPrevious")]),t._v(" "),e("blockquote",[e("p",[t._v("Skips to previous track in the user’s queue.\nNote that this will ALWAYS skip to the previous track, regardless of the current track’s progress.\nReturning to the start of the current track should be performed using the https://api.spotify.com/v1/me/player/seek endpoint.")])]),t._v(" "),e("p",[e("strong",[t._v("Parameters")])]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Description")]),t._v(" "),e("th",[t._v("Example")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[t._v("[deviceId]")]),t._v(" "),e("td",[t._v("The id of the device this command is targeting. If not supplied, the user's currently active device is the target.")]),t._v(" "),e("td",[e("code",[t._v('"XXXX-XXXX-XXXX-XXXX"')])])])])]),t._v(" "),e("p",[e("strong",[t._v("Usage")])]),t._v(" "),e("div",{staticClass:"language-csharp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-csharp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ErrorResponse")]),t._v(" error "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" _spotify"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("SkipPlaybackToPrevious")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),e("hr"),t._v(" "),e("h2",{attrs:{id:"seekplayback"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#seekplayback","aria-hidden":"true"}},[t._v("#")]),t._v(" SeekPlayback")]),t._v(" "),e("blockquote",[e("p",[t._v("Seeks to the given position in the user’s currently playing track.")])]),t._v(" "),e("p",[e("strong",[t._v("Parameters")])]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Description")]),t._v(" "),e("th",[t._v("Example")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[t._v("positionMs")]),t._v(" "),e("td",[t._v("The position in milliseconds to seek to. Must be a positive number. Passing in a position that is greater than the length of the track will cause the player to start playing the next song.")]),t._v(" "),e("td",[e("code",[t._v("50")])])]),t._v(" "),e("tr",[e("td",[t._v("[deviceId]")]),t._v(" "),e("td",[t._v("The id of the device this command is targeting. If not supplied, the user's currently active device is the target.")]),t._v(" "),e("td",[e("code",[t._v('"XXXX-XXXX-XXXX-XXXX"')])])])])]),t._v(" "),e("p",[e("strong",[t._v("Usage")])]),t._v(" "),e("div",{staticClass:"language-csharp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-csharp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ErrorResponse")]),t._v(" error "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" _spotify"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("SeekPlayback")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("50")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),e("hr"),t._v(" "),e("h2",{attrs:{id:"setrepeatmode"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#setrepeatmode","aria-hidden":"true"}},[t._v("#")]),t._v(" SetRepeatMode")]),t._v(" "),e("blockquote",[e("p",[t._v("Set the repeat mode for the user’s playback. Options are repeat-track, repeat-context, and off.")])]),t._v(" "),e("p",[e("strong",[t._v("Parameters")])]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Description")]),t._v(" "),e("th",[t._v("Example")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[t._v("state")]),t._v(" "),e("td",[t._v("track, context or off.")]),t._v(" "),e("td",[e("code",[t._v("RepeatState.Track")])])]),t._v(" "),e("tr",[e("td",[t._v("[deviceId]")]),t._v(" "),e("td",[t._v("The id of the device this command is targeting. If not supplied, the user's currently active device is the target.")]),t._v(" "),e("td",[e("code",[t._v('"XXXX-XXXX-XXXX-XXXX"')])])])])]),t._v(" "),e("p",[e("strong",[t._v("Usage")])]),t._v(" "),e("div",{staticClass:"language-csharp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-csharp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ErrorResponse")]),t._v(" error "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" _spotify"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("SetRepeatMode")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("RepeatState"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Track"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),e("hr"),t._v(" "),e("h2",{attrs:{id:"setvolume"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#setvolume","aria-hidden":"true"}},[t._v("#")]),t._v(" SetVolume")]),t._v(" "),e("blockquote",[e("p",[t._v("Set the volume for the user’s current playback device.")])]),t._v(" "),e("p",[e("strong",[t._v("Parameters")])]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Description")]),t._v(" "),e("th",[t._v("Example")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[t._v("volumePercent")]),t._v(" "),e("td",[t._v("Integer. The volume to set. Must be a value from 0 to 100 inclusive.")]),t._v(" "),e("td",[e("code",[t._v("50")])])]),t._v(" "),e("tr",[e("td",[t._v("[deviceId]")]),t._v(" "),e("td",[t._v("The id of the device this command is targeting. If not supplied, the user's currently active device is the target.")]),t._v(" "),e("td",[e("code",[t._v('"XXXX-XXXX-XXXX-XXXX"')])])])])]),t._v(" "),e("p",[e("strong",[t._v("Usage")])]),t._v(" "),e("div",{staticClass:"language-csharp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-csharp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ErrorResponse")]),t._v(" error "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" _spotify"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("SetVolume")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("50")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),e("hr"),t._v(" "),e("h2",{attrs:{id:"setshuffle"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#setshuffle","aria-hidden":"true"}},[t._v("#")]),t._v(" SetShuffle")]),t._v(" "),e("blockquote",[e("p",[t._v("Toggle shuffle on or off for user’s playback.")])]),t._v(" "),e("p",[e("strong",[t._v("Parameters")])]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Description")]),t._v(" "),e("th",[t._v("Example")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[t._v("shuffle")]),t._v(" "),e("td",[t._v("True or False")]),t._v(" "),e("td",[e("code",[t._v("false")])])]),t._v(" "),e("tr",[e("td",[t._v("[deviceId]")]),t._v(" "),e("td",[t._v("The id of the device this command is targeting. If not supplied, the user's currently active device is the target.")]),t._v(" "),e("td",[e("code",[t._v('"XXXX-XXXX-XXXX-XXXX"')])])])])]),t._v(" "),e("p",[e("strong",[t._v("Usage")])]),t._v(" "),e("div",{staticClass:"language-csharp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-csharp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ErrorResponse")]),t._v(" error "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" _spotify"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("SetShuffle")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("false")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])])])},[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[19],{201:function(t,a,e){"use strict";e.r(a);var s=e(0),r=Object(s.a)({},function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"player"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#player","aria-hidden":"true"}},[t._v("#")]),t._v(" Player")]),t._v(" "),e("h2",{attrs:{id:"getdevices"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#getdevices","aria-hidden":"true"}},[t._v("#")]),t._v(" GetDevices")]),t._v(" "),e("blockquote",[e("p",[t._v("Get information about a user’s available devices.")])]),t._v(" "),e("p",[e("strong",[t._v("Parameters")])]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Description")]),t._v(" "),e("th",[t._v("Example")])])]),t._v(" "),e("tbody")]),t._v(" "),e("p",[e("strong",[t._v("Usage")])]),t._v(" "),e("div",{staticClass:"language-csharp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-csharp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("AvailabeDevices")]),t._v(" devices "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" _spotify"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("GetDevices")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\ndevices"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Devices"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("ForEach")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("device "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=>")]),t._v(" Console"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("WriteLine")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("device"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Name"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),e("hr"),t._v(" "),e("h2",{attrs:{id:"getplayback"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#getplayback","aria-hidden":"true"}},[t._v("#")]),t._v(" GetPlayback")]),t._v(" "),e("blockquote",[e("p",[t._v("Get information about the user’s current playback state, including track, track progress, and active device.")])]),t._v(" "),e("p",[e("strong",[t._v("Parameters")])]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Description")]),t._v(" "),e("th",[t._v("Example")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[t._v("[market]")]),t._v(" "),e("td",[t._v("An ISO 3166-1 alpha-2 country code. Provide this parameter if you want to apply Track Relinking.")]),t._v(" "),e("td",[e("code",[t._v('"DE"')])])])])]),t._v(" "),e("p",[e("strong",[t._v("Usage")])]),t._v(" "),e("div",{staticClass:"language-csharp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-csharp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("PlaybackContext")]),t._v(" context "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" _spotify"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("GetPlayback")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("if")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("contex"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Item "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("null")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n Console"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("WriteLine")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("context"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Item"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Name"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//Print the current song")]),t._v("\n")])])]),e("hr"),t._v(" "),e("h2",{attrs:{id:"getplayingtrack"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#getplayingtrack","aria-hidden":"true"}},[t._v("#")]),t._v(" GetPlayingTrack")]),t._v(" "),e("blockquote",[e("p",[t._v("Get the object currently being played on the user’s Spotify account.")])]),t._v(" "),e("p",[e("strong",[t._v("Parameters")])]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Description")]),t._v(" "),e("th",[t._v("Example")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[t._v("[market]")]),t._v(" "),e("td",[t._v("An ISO 3166-1 alpha-2 country code. Provide this parameter if you want to apply Track Relinking.")]),t._v(" "),e("td",[e("code",[t._v('"DE"')])])])])]),t._v(" "),e("p",[t._v("This is a simpler (less data) version of "),e("code",[t._v("GetPlayback")])]),t._v(" "),e("p",[e("strong",[t._v("Usage")])]),t._v(" "),e("div",{staticClass:"language-csharp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-csharp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("PlaybackContext")]),t._v(" context "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" _spotify"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("GetPlayingTrack")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("if")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("contex"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Item "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("null")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n Console"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("WriteLine")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("context"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Item"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Name"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//Print the current song")]),t._v("\n")])])]),e("hr"),t._v(" "),e("h2",{attrs:{id:"transferplayback"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#transferplayback","aria-hidden":"true"}},[t._v("#")]),t._v(" TransferPlayback")]),t._v(" "),e("blockquote",[e("p",[t._v("Transfer playback to a new device and determine if it should start playing.")])]),t._v(" "),e("p",[e("strong",[t._v("Parameters")])]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Description")]),t._v(" "),e("th",[t._v("Example")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[t._v("deviceIds or deviceId")]),t._v(" "),e("td",[t._v("A JSON array containing the ID of the device on which playback should be started/transferred")]),t._v(" "),e("td",[e("code",[t._v('"XXXX-XXXX-XXXX-XXXX"')])])]),t._v(" "),e("tr",[e("td",[t._v("play")]),t._v(" "),e("td",[t._v("true: ensure playback happens on new device, false: keep current playback state")]),t._v(" "),e("td",[e("code",[t._v("true")])])])])]),t._v(" "),e("p",[e("strong",[t._v("Usage")])]),t._v(" "),e("div",{staticClass:"language-csharp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-csharp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ErrorResponse")]),t._v(" error "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" _spotify"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("TransferPlayback")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"XXXX-XXXX-XXXX-XXXX"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),e("hr"),t._v(" "),e("h2",{attrs:{id:"resumeplayback"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#resumeplayback","aria-hidden":"true"}},[t._v("#")]),t._v(" ResumePlayback")]),t._v(" "),e("blockquote",[e("p",[t._v("Start a new context or resume current playback on the user’s active device.")])]),t._v(" "),e("p",[e("strong",[t._v("Parameters")])]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Description")]),t._v(" "),e("th",[t._v("Example")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[t._v("[deviceId]")]),t._v(" "),e("td",[t._v("The id of the device this command is targeting. If not supplied, the user's currently active device is the target.")]),t._v(" "),e("td",[e("code",[t._v('"XXXX-XXXX-XXXX-XXXX"')])])]),t._v(" "),e("tr",[e("td",[t._v("contextUri")]),t._v(" "),e("td",[t._v("Spotify URI of the context to play")]),t._v(" "),e("td",[e("code",[t._v('"spotify:album:1Je1IMUlBXcx1Fz0WE7oPT"')])])]),t._v(" "),e("tr",[e("td",[t._v("uris")]),t._v(" "),e("td",[t._v("An array of the Spotify track URIs to play.")]),t._v(" "),e("td",[e("code",[t._v('new List { "spotify:track:4iV5W9uYEdYUVa79Axb7Rh" }')])])]),t._v(" "),e("tr",[e("td",[t._v("offset")]),t._v(" "),e("td",[t._v("Indicates from where in the context playback should start. Only available when context_uri corresponds to an album or playlist object, or when the uris parameter is used.")]),t._v(" "),e("td",[e("code",[t._v("0")])])])])]),t._v(" "),e("p",[e("strong",[t._v("Usage")])]),t._v(" "),e("div",{staticClass:"language-csharp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-csharp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ErrorResponse")]),t._v(" error "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" _spotify"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("ResumePlayback")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("uris"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("List")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("string")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"spotify:track:4iV5W9uYEdYUVa79Axb7Rh"')]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),e("hr"),t._v(" "),e("h2",{attrs:{id:"pauseplayback"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#pauseplayback","aria-hidden":"true"}},[t._v("#")]),t._v(" PausePlayback")]),t._v(" "),e("blockquote",[e("p",[t._v("Pause playback on the user’s account.")])]),t._v(" "),e("p",[e("strong",[t._v("Parameters")])]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Description")]),t._v(" "),e("th",[t._v("Example")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[t._v("[deviceId]")]),t._v(" "),e("td",[t._v("The id of the device this command is targeting. If not supplied, the user's currently active device is the target.")]),t._v(" "),e("td",[e("code",[t._v('"XXXX-XXXX-XXXX-XXXX"')])])])])]),t._v(" "),e("p",[e("strong",[t._v("Usage")])]),t._v(" "),e("div",{staticClass:"language-csharp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-csharp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ErrorResponse")]),t._v(" error "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" _spotify"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("PausePlayback")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),e("hr"),t._v(" "),e("h2",{attrs:{id:"skipplaybacktonext"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#skipplaybacktonext","aria-hidden":"true"}},[t._v("#")]),t._v(" SkipPlaybackToNext")]),t._v(" "),e("blockquote",[e("p",[t._v("Skips to next track in the user’s queue.")])]),t._v(" "),e("p",[e("strong",[t._v("Parameters")])]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Description")]),t._v(" "),e("th",[t._v("Example")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[t._v("[deviceId]")]),t._v(" "),e("td",[t._v("The id of the device this command is targeting. If not supplied, the user's currently active device is the target.")]),t._v(" "),e("td",[e("code",[t._v('"XXXX-XXXX-XXXX-XXXX"')])])])])]),t._v(" "),e("p",[e("strong",[t._v("Usage")])]),t._v(" "),e("div",{staticClass:"language-csharp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-csharp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ErrorResponse")]),t._v(" error "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" _spotify"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("SkipPlaybackToNext")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),e("hr"),t._v(" "),e("h2",{attrs:{id:"skipplaybacktoprevious"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#skipplaybacktoprevious","aria-hidden":"true"}},[t._v("#")]),t._v(" SkipPlaybackToPrevious")]),t._v(" "),e("blockquote",[e("p",[t._v("Skips to previous track in the user’s queue.\nNote that this will ALWAYS skip to the previous track, regardless of the current track’s progress.\nReturning to the start of the current track should be performed using the https://api.spotify.com/v1/me/player/seek endpoint.")])]),t._v(" "),e("p",[e("strong",[t._v("Parameters")])]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Description")]),t._v(" "),e("th",[t._v("Example")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[t._v("[deviceId]")]),t._v(" "),e("td",[t._v("The id of the device this command is targeting. If not supplied, the user's currently active device is the target.")]),t._v(" "),e("td",[e("code",[t._v('"XXXX-XXXX-XXXX-XXXX"')])])])])]),t._v(" "),e("p",[e("strong",[t._v("Usage")])]),t._v(" "),e("div",{staticClass:"language-csharp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-csharp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ErrorResponse")]),t._v(" error "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" _spotify"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("SkipPlaybackToPrevious")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),e("hr"),t._v(" "),e("h2",{attrs:{id:"seekplayback"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#seekplayback","aria-hidden":"true"}},[t._v("#")]),t._v(" SeekPlayback")]),t._v(" "),e("blockquote",[e("p",[t._v("Seeks to the given position in the user’s currently playing track.")])]),t._v(" "),e("p",[e("strong",[t._v("Parameters")])]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Description")]),t._v(" "),e("th",[t._v("Example")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[t._v("positionMs")]),t._v(" "),e("td",[t._v("The position in milliseconds to seek to. Must be a positive number. Passing in a position that is greater than the length of the track will cause the player to start playing the next song.")]),t._v(" "),e("td",[e("code",[t._v("50")])])]),t._v(" "),e("tr",[e("td",[t._v("[deviceId]")]),t._v(" "),e("td",[t._v("The id of the device this command is targeting. If not supplied, the user's currently active device is the target.")]),t._v(" "),e("td",[e("code",[t._v('"XXXX-XXXX-XXXX-XXXX"')])])])])]),t._v(" "),e("p",[e("strong",[t._v("Usage")])]),t._v(" "),e("div",{staticClass:"language-csharp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-csharp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ErrorResponse")]),t._v(" error "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" _spotify"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("SeekPlayback")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("50")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),e("hr"),t._v(" "),e("h2",{attrs:{id:"setrepeatmode"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#setrepeatmode","aria-hidden":"true"}},[t._v("#")]),t._v(" SetRepeatMode")]),t._v(" "),e("blockquote",[e("p",[t._v("Set the repeat mode for the user’s playback. Options are repeat-track, repeat-context, and off.")])]),t._v(" "),e("p",[e("strong",[t._v("Parameters")])]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Description")]),t._v(" "),e("th",[t._v("Example")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[t._v("state")]),t._v(" "),e("td",[t._v("track, context or off.")]),t._v(" "),e("td",[e("code",[t._v("RepeatState.Track")])])]),t._v(" "),e("tr",[e("td",[t._v("[deviceId]")]),t._v(" "),e("td",[t._v("The id of the device this command is targeting. If not supplied, the user's currently active device is the target.")]),t._v(" "),e("td",[e("code",[t._v('"XXXX-XXXX-XXXX-XXXX"')])])])])]),t._v(" "),e("p",[e("strong",[t._v("Usage")])]),t._v(" "),e("div",{staticClass:"language-csharp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-csharp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ErrorResponse")]),t._v(" error "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" _spotify"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("SetRepeatMode")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("RepeatState"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Track"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),e("hr"),t._v(" "),e("h2",{attrs:{id:"setvolume"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#setvolume","aria-hidden":"true"}},[t._v("#")]),t._v(" SetVolume")]),t._v(" "),e("blockquote",[e("p",[t._v("Set the volume for the user’s current playback device.")])]),t._v(" "),e("p",[e("strong",[t._v("Parameters")])]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Description")]),t._v(" "),e("th",[t._v("Example")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[t._v("volumePercent")]),t._v(" "),e("td",[t._v("Integer. The volume to set. Must be a value from 0 to 100 inclusive.")]),t._v(" "),e("td",[e("code",[t._v("50")])])]),t._v(" "),e("tr",[e("td",[t._v("[deviceId]")]),t._v(" "),e("td",[t._v("The id of the device this command is targeting. If not supplied, the user's currently active device is the target.")]),t._v(" "),e("td",[e("code",[t._v('"XXXX-XXXX-XXXX-XXXX"')])])])])]),t._v(" "),e("p",[e("strong",[t._v("Usage")])]),t._v(" "),e("div",{staticClass:"language-csharp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-csharp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ErrorResponse")]),t._v(" error "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" _spotify"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("SetVolume")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("50")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),e("hr"),t._v(" "),e("h2",{attrs:{id:"setshuffle"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#setshuffle","aria-hidden":"true"}},[t._v("#")]),t._v(" SetShuffle")]),t._v(" "),e("blockquote",[e("p",[t._v("Toggle shuffle on or off for user’s playback.")])]),t._v(" "),e("p",[e("strong",[t._v("Parameters")])]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Name")]),t._v(" "),e("th",[t._v("Description")]),t._v(" "),e("th",[t._v("Example")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[t._v("shuffle")]),t._v(" "),e("td",[t._v("True or False")]),t._v(" "),e("td",[e("code",[t._v("false")])])]),t._v(" "),e("tr",[e("td",[t._v("[deviceId]")]),t._v(" "),e("td",[t._v("The id of the device this command is targeting. If not supplied, the user's currently active device is the target.")]),t._v(" "),e("td",[e("code",[t._v('"XXXX-XXXX-XXXX-XXXX"')])])])])]),t._v(" "),e("p",[e("strong",[t._v("Usage")])]),t._v(" "),e("div",{staticClass:"language-csharp extra-class"},[e("pre",{pre:!0,attrs:{class:"language-csharp"}},[e("code",[e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ErrorResponse")]),t._v(" error "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" _spotify"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("SetShuffle")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("false")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])])])},[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/21.401b13b4.js b/assets/js/21.ef85dcdf.js similarity index 98% rename from assets/js/21.401b13b4.js rename to assets/js/21.ef85dcdf.js index dad82a5e..bc9cb9e3 100644 --- a/assets/js/21.401b13b4.js +++ b/assets/js/21.ef85dcdf.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[21],{202:function(t,e,a){"use strict";a.r(e);var r=a(0),s=Object(r.a)({},function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"profiles"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#profiles","aria-hidden":"true"}},[t._v("#")]),t._v(" Profiles")]),t._v(" "),a("h2",{attrs:{id:"getprivateprofile"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#getprivateprofile","aria-hidden":"true"}},[t._v("#")]),t._v(" GetPrivateProfile")]),t._v(" "),a("blockquote",[a("p",[t._v("Get detailed profile information about the current user (including the current user’s username).")])]),t._v(" "),a("p",[a("strong",[t._v("Parameters")])]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Description")]),t._v(" "),a("th",[t._v("Example")])])]),t._v(" "),a("tbody")]),t._v(" "),a("p",[t._v("Returns a "),a("a",{attrs:{href:"https://developer.spotify.com/web-api/object-model/#user-object-private",target:"_blank",rel:"noopener noreferrer"}},[t._v("PrivateProfile"),a("OutboundLink")],1)]),t._v(" "),a("p",[a("strong",[t._v("Usage")])]),t._v(" "),a("div",{staticClass:"language-csharp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-csharp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("PrivateUser")]),t._v(" user "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" _spotify"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("GetPrivateProfile")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nConsole"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("WriteLine")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("user"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("DisplayName"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("hr"),t._v(" "),a("h2",{attrs:{id:"getpublicprofile"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#getpublicprofile","aria-hidden":"true"}},[t._v("#")]),t._v(" GetPublicProfile")]),t._v(" "),a("blockquote",[a("p",[t._v("Get public profile information about a Spotify user.")])]),t._v(" "),a("p",[a("strong",[t._v("Parameters")])]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Description")]),t._v(" "),a("th",[t._v("Example")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[t._v("userId")]),t._v(" "),a("td",[t._v("The user's Spotify user ID.")]),t._v(" "),a("td",[t._v("EXAMPLE")])])])]),t._v(" "),a("p",[t._v("Returns a "),a("a",{attrs:{href:"https://developer.spotify.com/web-api/object-model/#user-object-public",target:"_blank",rel:"noopener noreferrer"}},[t._v("PublicProfile"),a("OutboundLink")],1)]),t._v(" "),a("p",[a("strong",[t._v("Usage")])]),t._v(" "),a("div",{staticClass:"language-csharp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-csharp"}},[a("code")])]),a("hr")])},[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[21],{200:function(t,e,a){"use strict";a.r(e);var r=a(0),s=Object(r.a)({},function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"profiles"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#profiles","aria-hidden":"true"}},[t._v("#")]),t._v(" Profiles")]),t._v(" "),a("h2",{attrs:{id:"getprivateprofile"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#getprivateprofile","aria-hidden":"true"}},[t._v("#")]),t._v(" GetPrivateProfile")]),t._v(" "),a("blockquote",[a("p",[t._v("Get detailed profile information about the current user (including the current user’s username).")])]),t._v(" "),a("p",[a("strong",[t._v("Parameters")])]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Description")]),t._v(" "),a("th",[t._v("Example")])])]),t._v(" "),a("tbody")]),t._v(" "),a("p",[t._v("Returns a "),a("a",{attrs:{href:"https://developer.spotify.com/web-api/object-model/#user-object-private",target:"_blank",rel:"noopener noreferrer"}},[t._v("PrivateProfile"),a("OutboundLink")],1)]),t._v(" "),a("p",[a("strong",[t._v("Usage")])]),t._v(" "),a("div",{staticClass:"language-csharp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-csharp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("PrivateUser")]),t._v(" user "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" _spotify"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("GetPrivateProfile")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nConsole"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("WriteLine")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("user"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("DisplayName"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("hr"),t._v(" "),a("h2",{attrs:{id:"getpublicprofile"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#getpublicprofile","aria-hidden":"true"}},[t._v("#")]),t._v(" GetPublicProfile")]),t._v(" "),a("blockquote",[a("p",[t._v("Get public profile information about a Spotify user.")])]),t._v(" "),a("p",[a("strong",[t._v("Parameters")])]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("Name")]),t._v(" "),a("th",[t._v("Description")]),t._v(" "),a("th",[t._v("Example")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[t._v("userId")]),t._v(" "),a("td",[t._v("The user's Spotify user ID.")]),t._v(" "),a("td",[t._v("EXAMPLE")])])])]),t._v(" "),a("p",[t._v("Returns a "),a("a",{attrs:{href:"https://developer.spotify.com/web-api/object-model/#user-object-public",target:"_blank",rel:"noopener noreferrer"}},[t._v("PublicProfile"),a("OutboundLink")],1)]),t._v(" "),a("p",[a("strong",[t._v("Usage")])]),t._v(" "),a("div",{staticClass:"language-csharp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-csharp"}},[a("code")])]),a("hr")])},[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file diff --git a/assets/js/22.cfa8f8db.js b/assets/js/22.0a35d0d8.js similarity index 97% rename from assets/js/22.cfa8f8db.js rename to assets/js/22.0a35d0d8.js index 67a4d92e..9b6b2772 100644 --- a/assets/js/22.cfa8f8db.js +++ b/assets/js/22.0a35d0d8.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[22],{201:function(t,s,a){"use strict";a.r(s);var n=a(0),e=Object(n.a)({},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"proxy-settings"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#proxy-settings","aria-hidden":"true"}},[t._v("#")]),t._v(" Proxy Settings")]),t._v(" "),a("p",[t._v("You can forward your proxy settings to the web api by using a field in the "),a("code",[t._v("SpotifyLocalAPIConfig")]),t._v(".")]),t._v(" "),a("div",{staticClass:"language-csharp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-csharp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ProxyConfig")]),t._v(" proxyConfig "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ProxyConfig")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n Host "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"127.0.0.1"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n Port "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("8080")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Additional values like Username and Password are available")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("SpotifyWebAPI")]),t._v(" api "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("SpotifyWebAPI")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("proxyConfig"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])])])},[],!1,null,null,null);s.default=e.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[22],{203:function(t,s,a){"use strict";a.r(s);var n=a(0),e=Object(n.a)({},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"proxy-settings"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#proxy-settings","aria-hidden":"true"}},[t._v("#")]),t._v(" Proxy Settings")]),t._v(" "),a("p",[t._v("You can forward your proxy settings to the web api by using a field in the "),a("code",[t._v("SpotifyLocalAPIConfig")]),t._v(".")]),t._v(" "),a("div",{staticClass:"language-csharp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-csharp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ProxyConfig")]),t._v(" proxyConfig "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ProxyConfig")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n Host "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"127.0.0.1"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n Port "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("8080")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Additional values like Username and Password are available")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("SpotifyWebAPI")]),t._v(" api "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("SpotifyWebAPI")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("proxyConfig"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])])])},[],!1,null,null,null);s.default=e.exports}}]); \ No newline at end of file diff --git a/assets/js/23.0dd8fbde.js b/assets/js/23.8a027d81.js similarity index 98% rename from assets/js/23.0dd8fbde.js rename to assets/js/23.8a027d81.js index 26047d28..0481569c 100644 --- a/assets/js/23.0dd8fbde.js +++ b/assets/js/23.8a027d81.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[23],{205:function(t,a,s){"use strict";s.r(a);var e=s(0),r=Object(e.a)({},function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"search"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#search","aria-hidden":"true"}},[t._v("#")]),t._v(" Search")]),t._v(" "),s("h2",{attrs:{id:"searchitems"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#searchitems","aria-hidden":"true"}},[t._v("#")]),t._v(" SearchItems")]),t._v(" "),s("blockquote",[s("p",[t._v("Get Spotify catalog information about artists, albums, tracks or playlists that match a keyword string.")])]),t._v(" "),s("div",{staticClass:"warning custom-block"},[s("p",[t._v("You may want to use "),s("code",[t._v("SearchItemsEscaped")]),t._v(" if you're processing user-input without validation")])]),t._v(" "),s("p",[s("strong",[t._v("Parameters")])]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Description")]),t._v(" "),s("th",[t._v("Example")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[t._v("q")]),t._v(" "),s("td",[t._v("The search query's keywords (and optional field filters and operators), for example q=roadhouse+blues.")]),t._v(" "),s("td",[s("code",[t._v('"roadhouse+blues"')])])]),t._v(" "),s("tr",[s("td",[t._v("type")]),t._v(" "),s("td",[t._v("A list of item types to search across.")]),t._v(" "),s("td",[s("code",[t._v("SearchType.Album")])])]),t._v(" "),s("tr",[s("td",[t._v("[limit]")]),t._v(" "),s("td",[t._v("The maximum number of items to return. Default: 20. Minimum: 1. Maximum: 50.")]),t._v(" "),s("td",[s("code",[t._v("20")])])]),t._v(" "),s("tr",[s("td",[t._v("[offset]")]),t._v(" "),s("td",[t._v("The index of the first result to return. Default: 0")]),t._v(" "),s("td",[s("code",[t._v("0")])])]),t._v(" "),s("tr",[s("td",[t._v("[market]")]),t._v(" "),s("td",[t._v("An ISO 3166-1 alpha-2 country code or the string from_token.")]),t._v(" "),s("td",[s("code",[t._v('"de"')])])])])]),t._v(" "),s("p",[t._v("Returns a "),s("code",[t._v("SearchItem")]),t._v(" which contains the properties "),s("code",[t._v("Paging Artists")]),t._v(","),s("code",[t._v("Paging Tracks")]),t._v(", "),s("code",[t._v("Paging Albums")]),t._v(", "),s("code",[t._v("Paging Playlists")]),t._v(". They are filled based on your search-type.")]),t._v(" "),s("p",[s("strong",[t._v("Usage")])]),t._v(" "),s("div",{staticClass:"language-csharp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-csharp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("SearchItem")]),t._v(" item "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" _spotify"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("SearchItems")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"roadhouse+blues"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" SearchType"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Album "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("|")]),t._v(" SearchType"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Playlist"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nConsole"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("WriteLine")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("item"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Albums"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Total"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//How many results are there in total? NOTE: item.Tracks = item.Artists = null")]),t._v("\n")])])]),s("hr"),t._v(" "),s("h2",{attrs:{id:"searchitemsescaped"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#searchitemsescaped","aria-hidden":"true"}},[t._v("#")]),t._v(" SearchItemsEscaped")]),t._v(" "),s("blockquote",[s("p",[t._v("Get Spotify catalog information about artists, albums, tracks or playlists that match a keyword string.")])]),t._v(" "),s("p",[t._v("Works like "),s("code",[t._v("SearchItems")]),t._v(", but URL escapes all characters")])])},[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[23],{202:function(t,a,s){"use strict";s.r(a);var e=s(0),r=Object(e.a)({},function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"search"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#search","aria-hidden":"true"}},[t._v("#")]),t._v(" Search")]),t._v(" "),s("h2",{attrs:{id:"searchitems"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#searchitems","aria-hidden":"true"}},[t._v("#")]),t._v(" SearchItems")]),t._v(" "),s("blockquote",[s("p",[t._v("Get Spotify catalog information about artists, albums, tracks or playlists that match a keyword string.")])]),t._v(" "),s("div",{staticClass:"warning custom-block"},[s("p",[t._v("You may want to use "),s("code",[t._v("SearchItemsEscaped")]),t._v(" if you're processing user-input without validation")])]),t._v(" "),s("p",[s("strong",[t._v("Parameters")])]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Description")]),t._v(" "),s("th",[t._v("Example")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[t._v("q")]),t._v(" "),s("td",[t._v("The search query's keywords (and optional field filters and operators), for example q=roadhouse+blues.")]),t._v(" "),s("td",[s("code",[t._v('"roadhouse+blues"')])])]),t._v(" "),s("tr",[s("td",[t._v("type")]),t._v(" "),s("td",[t._v("A list of item types to search across.")]),t._v(" "),s("td",[s("code",[t._v("SearchType.Album")])])]),t._v(" "),s("tr",[s("td",[t._v("[limit]")]),t._v(" "),s("td",[t._v("The maximum number of items to return. Default: 20. Minimum: 1. Maximum: 50.")]),t._v(" "),s("td",[s("code",[t._v("20")])])]),t._v(" "),s("tr",[s("td",[t._v("[offset]")]),t._v(" "),s("td",[t._v("The index of the first result to return. Default: 0")]),t._v(" "),s("td",[s("code",[t._v("0")])])]),t._v(" "),s("tr",[s("td",[t._v("[market]")]),t._v(" "),s("td",[t._v("An ISO 3166-1 alpha-2 country code or the string from_token.")]),t._v(" "),s("td",[s("code",[t._v('"de"')])])])])]),t._v(" "),s("p",[t._v("Returns a "),s("code",[t._v("SearchItem")]),t._v(" which contains the properties "),s("code",[t._v("Paging Artists")]),t._v(","),s("code",[t._v("Paging Tracks")]),t._v(", "),s("code",[t._v("Paging Albums")]),t._v(", "),s("code",[t._v("Paging Playlists")]),t._v(". They are filled based on your search-type.")]),t._v(" "),s("p",[s("strong",[t._v("Usage")])]),t._v(" "),s("div",{staticClass:"language-csharp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-csharp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("SearchItem")]),t._v(" item "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" _spotify"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("SearchItems")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"roadhouse+blues"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" SearchType"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Album "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("|")]),t._v(" SearchType"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Playlist"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nConsole"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("WriteLine")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("item"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Albums"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Total"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//How many results are there in total? NOTE: item.Tracks = item.Artists = null")]),t._v("\n")])])]),s("hr"),t._v(" "),s("h2",{attrs:{id:"searchitemsescaped"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#searchitemsescaped","aria-hidden":"true"}},[t._v("#")]),t._v(" SearchItemsEscaped")]),t._v(" "),s("blockquote",[s("p",[t._v("Get Spotify catalog information about artists, albums, tracks or playlists that match a keyword string.")])]),t._v(" "),s("p",[t._v("Works like "),s("code",[t._v("SearchItems")]),t._v(", but URL escapes all characters")])])},[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/24.0e78cfc0.js b/assets/js/24.07659c28.js similarity index 99% rename from assets/js/24.0e78cfc0.js rename to assets/js/24.07659c28.js index e2d2f6ae..f62f24c8 100644 --- a/assets/js/24.0e78cfc0.js +++ b/assets/js/24.07659c28.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[24],{203:function(t,a,s){"use strict";s.r(a);var e=s(0),n=Object(e.a)({},function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"tracks"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#tracks","aria-hidden":"true"}},[t._v("#")]),t._v(" Tracks")]),t._v(" "),s("h2",{attrs:{id:"getseveraltracks"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#getseveraltracks","aria-hidden":"true"}},[t._v("#")]),t._v(" GetSeveralTracks")]),t._v(" "),s("blockquote",[s("p",[t._v("Get Spotify catalog information for multiple tracks based on their Spotify IDs.")])]),t._v(" "),s("p",[s("strong",[t._v("Parameters")])]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Description")]),t._v(" "),s("th",[t._v("Example")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[t._v("ids")]),t._v(" "),s("td",[t._v("A list of the Spotify IDs for the tracks. Maximum: 50 IDs.")]),t._v(" "),s("td",[s("code",[t._v('new List {"6Y1CLPwYe7zvI8PJiWVz6T"}')])])]),t._v(" "),s("tr",[s("td",[t._v("market")]),t._v(" "),s("td",[t._v("An ISO 3166-1 alpha-2 country code. Provide this parameter if you want to apply Track Relinking.")]),t._v(" "),s("td",[s("code",[t._v('"DE"')])])])])]),t._v(" "),s("p",[t._v("Returns a "),s("code",[t._v("SeveralTracks")]),t._v(" object which has one property, "),s("code",[t._v("List Tracks")])]),t._v(" "),s("p",[s("strong",[t._v("Usage")])]),t._v(" "),s("div",{staticClass:"language-csharp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-csharp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("SeveralTracks")]),t._v(" severalTracks "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" _spotify"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("GetSeveralTracks")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("List")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"6Y1CLPwYe7zvI8PJiWVz6T"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nseveralTracks"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Tracks"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("ForEach")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("track "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=>")]),t._v(" Console"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("WriteLine")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("track"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Name"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("hr"),t._v(" "),s("h2",{attrs:{id:"gettrack"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#gettrack","aria-hidden":"true"}},[t._v("#")]),t._v(" GetTrack")]),t._v(" "),s("blockquote",[s("p",[t._v("Get Spotify catalog information for a single track identified by its unique Spotify ID.")])]),t._v(" "),s("p",[s("strong",[t._v("Parameters")])]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Description")]),t._v(" "),s("th",[t._v("Example")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[t._v("id")]),t._v(" "),s("td",[t._v("The Spotify ID for the track.")]),t._v(" "),s("td",[s("code",[t._v('"6Y1CLPwYe7zvI8PJiWVz6T"')])])]),t._v(" "),s("tr",[s("td",[t._v("market")]),t._v(" "),s("td",[t._v("An ISO 3166-1 alpha-2 country code. Provide this parameter if you want to apply Track Relinking.")]),t._v(" "),s("td",[s("code",[t._v('"DE"')])])])])]),t._v(" "),s("p",[t._v("Returns a "),s("a",{attrs:{href:"https://developer.spotify.com/web-api/object-model/#track-object-full",target:"_blank",rel:"noopener noreferrer"}},[t._v("FullTrack"),s("OutboundLink")],1)]),t._v(" "),s("p",[s("strong",[t._v("Usage")])]),t._v(" "),s("div",{staticClass:"language-csharp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-csharp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("FullTrack")]),t._v(" track "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" _spotify"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("GetTrack")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"6Y1CLPwYe7zvI8PJiWVz6T"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nConsole"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("WriteLine")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("track"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Name"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("hr"),t._v(" "),s("h2",{attrs:{id:"getaudioanalysis"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#getaudioanalysis","aria-hidden":"true"}},[t._v("#")]),t._v(" GetAudioAnalysis")]),t._v(" "),s("blockquote",[s("p",[t._v("Get a detailed audio analysis for a single track identified by its unique Spotify ID.")])]),t._v(" "),s("p",[s("strong",[t._v("Parameters")])]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Description")]),t._v(" "),s("th",[t._v("Example")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[t._v("id")]),t._v(" "),s("td",[t._v("The Spotify ID for the track.")]),t._v(" "),s("td",[s("code",[t._v('"6Y1CLPwYe7zvI8PJiWVz6T"')])])])])]),t._v(" "),s("p",[t._v("Returns a AudioAnalysis. This object is currently lacking Spotify documentation but archived "),s("a",{attrs:{href:"https://web.archive.org/web/20160528174915/http://developer.echonest.com/docs/v4/_static/AnalyzeDocumentation.pdf",target:"_blank",rel:"noopener noreferrer"}},[t._v("EchoNest documentation"),s("OutboundLink")],1),t._v(" is relevant.")]),t._v(" "),s("p",[s("strong",[t._v("Usage")])]),t._v(" "),s("div",{staticClass:"language-csharp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-csharp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("AudioAnalysis")]),t._v(" analysis "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" _spotify"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("GetAudioAnalysis")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"6Y1CLPwYe7zvI8PJiWVz6T"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nConsole"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("WriteLine")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("analysis"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Meta"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("DetailedStatus"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])])])},[],!1,null,null,null);a.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[24],{204:function(t,a,s){"use strict";s.r(a);var e=s(0),n=Object(e.a)({},function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"tracks"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#tracks","aria-hidden":"true"}},[t._v("#")]),t._v(" Tracks")]),t._v(" "),s("h2",{attrs:{id:"getseveraltracks"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#getseveraltracks","aria-hidden":"true"}},[t._v("#")]),t._v(" GetSeveralTracks")]),t._v(" "),s("blockquote",[s("p",[t._v("Get Spotify catalog information for multiple tracks based on their Spotify IDs.")])]),t._v(" "),s("p",[s("strong",[t._v("Parameters")])]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Description")]),t._v(" "),s("th",[t._v("Example")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[t._v("ids")]),t._v(" "),s("td",[t._v("A list of the Spotify IDs for the tracks. Maximum: 50 IDs.")]),t._v(" "),s("td",[s("code",[t._v('new List {"6Y1CLPwYe7zvI8PJiWVz6T"}')])])]),t._v(" "),s("tr",[s("td",[t._v("market")]),t._v(" "),s("td",[t._v("An ISO 3166-1 alpha-2 country code. Provide this parameter if you want to apply Track Relinking.")]),t._v(" "),s("td",[s("code",[t._v('"DE"')])])])])]),t._v(" "),s("p",[t._v("Returns a "),s("code",[t._v("SeveralTracks")]),t._v(" object which has one property, "),s("code",[t._v("List Tracks")])]),t._v(" "),s("p",[s("strong",[t._v("Usage")])]),t._v(" "),s("div",{staticClass:"language-csharp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-csharp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("SeveralTracks")]),t._v(" severalTracks "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" _spotify"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("GetSeveralTracks")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("List")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v("String"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"6Y1CLPwYe7zvI8PJiWVz6T"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nseveralTracks"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Tracks"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("ForEach")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("track "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=>")]),t._v(" Console"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("WriteLine")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("track"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Name"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("hr"),t._v(" "),s("h2",{attrs:{id:"gettrack"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#gettrack","aria-hidden":"true"}},[t._v("#")]),t._v(" GetTrack")]),t._v(" "),s("blockquote",[s("p",[t._v("Get Spotify catalog information for a single track identified by its unique Spotify ID.")])]),t._v(" "),s("p",[s("strong",[t._v("Parameters")])]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Description")]),t._v(" "),s("th",[t._v("Example")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[t._v("id")]),t._v(" "),s("td",[t._v("The Spotify ID for the track.")]),t._v(" "),s("td",[s("code",[t._v('"6Y1CLPwYe7zvI8PJiWVz6T"')])])]),t._v(" "),s("tr",[s("td",[t._v("market")]),t._v(" "),s("td",[t._v("An ISO 3166-1 alpha-2 country code. Provide this parameter if you want to apply Track Relinking.")]),t._v(" "),s("td",[s("code",[t._v('"DE"')])])])])]),t._v(" "),s("p",[t._v("Returns a "),s("a",{attrs:{href:"https://developer.spotify.com/web-api/object-model/#track-object-full",target:"_blank",rel:"noopener noreferrer"}},[t._v("FullTrack"),s("OutboundLink")],1)]),t._v(" "),s("p",[s("strong",[t._v("Usage")])]),t._v(" "),s("div",{staticClass:"language-csharp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-csharp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("FullTrack")]),t._v(" track "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" _spotify"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("GetTrack")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"6Y1CLPwYe7zvI8PJiWVz6T"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nConsole"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("WriteLine")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("track"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Name"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("hr"),t._v(" "),s("h2",{attrs:{id:"getaudioanalysis"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#getaudioanalysis","aria-hidden":"true"}},[t._v("#")]),t._v(" GetAudioAnalysis")]),t._v(" "),s("blockquote",[s("p",[t._v("Get a detailed audio analysis for a single track identified by its unique Spotify ID.")])]),t._v(" "),s("p",[s("strong",[t._v("Parameters")])]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("Name")]),t._v(" "),s("th",[t._v("Description")]),t._v(" "),s("th",[t._v("Example")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[t._v("id")]),t._v(" "),s("td",[t._v("The Spotify ID for the track.")]),t._v(" "),s("td",[s("code",[t._v('"6Y1CLPwYe7zvI8PJiWVz6T"')])])])])]),t._v(" "),s("p",[t._v("Returns a AudioAnalysis. This object is currently lacking Spotify documentation but archived "),s("a",{attrs:{href:"https://web.archive.org/web/20160528174915/http://developer.echonest.com/docs/v4/_static/AnalyzeDocumentation.pdf",target:"_blank",rel:"noopener noreferrer"}},[t._v("EchoNest documentation"),s("OutboundLink")],1),t._v(" is relevant.")]),t._v(" "),s("p",[s("strong",[t._v("Usage")])]),t._v(" "),s("div",{staticClass:"language-csharp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-csharp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("AudioAnalysis")]),t._v(" analysis "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" _spotify"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("GetAudioAnalysis")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"6Y1CLPwYe7zvI8PJiWVz6T"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nConsole"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("WriteLine")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("analysis"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Meta"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("DetailedStatus"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])])])},[],!1,null,null,null);a.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/25.aae27f67.js b/assets/js/25.81029a65.js similarity index 98% rename from assets/js/25.aae27f67.js rename to assets/js/25.81029a65.js index bcfa3b38..5d03af08 100644 --- a/assets/js/25.aae27f67.js +++ b/assets/js/25.81029a65.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[25],{204:function(t,s,a){"use strict";a.r(s);var n=a(0),e=Object(n.a)({},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"utilities"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#utilities","aria-hidden":"true"}},[t._v("#")]),t._v(" Utilities")]),t._v(" "),a("h2",{attrs:{id:"paging-methods"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#paging-methods","aria-hidden":"true"}},[t._v("#")]),t._v(" Paging-Methods")]),t._v(" "),a("p",[t._v("The "),a("code",[t._v("SpotifyWebAPI")]),t._v(" features two paging-helper Methods, "),a("code",[t._v("GetNextPage(Paging page)")]),t._v(" and "),a("code",[t._v("GetPreviousPage(Paging page)")]),t._v(".\nBoth are an easy way to receive the next/previous page of a Paging-Object.")]),t._v(" "),a("p",[t._v("Sample:")]),t._v(" "),a("div",{staticClass:"language-csharp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-csharp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" playlistTracks "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" _spotify"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("GetPlaylistTracks")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1122095781"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"4EcNf2l8rXInbJOf3tQdgU"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("50")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("while")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("true")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n Console"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("WriteLine")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("playlistTracks"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Items"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Count"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("if")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("playlistTracks"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("HasNextPage")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("break")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n playlistTracks "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" _spotify"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("GetNextPage")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("playlistTracks"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])])},[],!1,null,null,null);s.default=e.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[25],{205:function(t,s,a){"use strict";a.r(s);var n=a(0),e=Object(n.a)({},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"utilities"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#utilities","aria-hidden":"true"}},[t._v("#")]),t._v(" Utilities")]),t._v(" "),a("h2",{attrs:{id:"paging-methods"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#paging-methods","aria-hidden":"true"}},[t._v("#")]),t._v(" Paging-Methods")]),t._v(" "),a("p",[t._v("The "),a("code",[t._v("SpotifyWebAPI")]),t._v(" features two paging-helper Methods, "),a("code",[t._v("GetNextPage(Paging page)")]),t._v(" and "),a("code",[t._v("GetPreviousPage(Paging page)")]),t._v(".\nBoth are an easy way to receive the next/previous page of a Paging-Object.")]),t._v(" "),a("p",[t._v("Sample:")]),t._v(" "),a("div",{staticClass:"language-csharp extra-class"},[a("pre",{pre:!0,attrs:{class:"language-csharp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" playlistTracks "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" _spotify"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("GetPlaylistTracks")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1122095781"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"4EcNf2l8rXInbJOf3tQdgU"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("50")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("while")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("true")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n Console"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("WriteLine")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("playlistTracks"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Items"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("Count"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("if")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("playlistTracks"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("HasNextPage")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("break")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n playlistTracks "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" _spotify"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("GetNextPage")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("playlistTracks"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])])},[],!1,null,null,null);s.default=e.exports}}]); \ No newline at end of file diff --git a/assets/js/8.26b7beaf.js b/assets/js/8.f1a479eb.js similarity index 97% rename from assets/js/8.26b7beaf.js rename to assets/js/8.f1a479eb.js index 56669ca2..06c76fd2 100644 --- a/assets/js/8.26b7beaf.js +++ b/assets/js/8.f1a479eb.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[8],{189:function(t,e,r){"use strict";r.r(e);var o=r(0),a=Object(o.a)({},function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[r("h1",{attrs:{id:"getting-started"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#getting-started","aria-hidden":"true"}},[t._v("#")]),t._v(" Getting Started")]),t._v(" "),r("h2",{attrs:{id:"auth-methods"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#auth-methods","aria-hidden":"true"}},[t._v("#")]),t._v(" Auth-Methods")]),t._v(" "),r("p",[t._v("Before you can use the Web API full functional, you need the user to authenticate your Application.\nIf you want to know more, you can read to the whole auth-process "),r("a",{attrs:{href:"https://developer.spotify.com/web-api/authorization-guide/",target:"_blank",rel:"noopener noreferrer"}},[t._v("here"),r("OutboundLink")],1),t._v(".")]),t._v(" "),r("p",[t._v("Before you start, install "),r("code",[t._v("SpotifyAPI.Web.Auth")]),t._v(" and create an application at Spotify: "),r("a",{attrs:{href:"https://developer.spotify.com/my-applications/#!/applications",target:"_blank",rel:"noopener noreferrer"}},[t._v("Your Applications"),r("OutboundLink")],1)]),t._v(" "),r("p",[t._v("After you created your Application, you will have following important values:")]),t._v(" "),r("table",[r("thead",[r("tr",[r("th",[t._v("Name")]),t._v(" "),r("th",[t._v("Description")])])]),t._v(" "),r("tbody",[r("tr",[r("td",[r("strong",[t._v("Client_Id")])]),t._v(" "),r("td",[t._v("This is your client_id, you don't have to hide it")])]),t._v(" "),r("tr",[r("td",[r("strong",[t._v("Client_Secret")])]),t._v(" "),r("td",[t._v("Never use this in one of your client-side apps! Keep it secret!")])]),t._v(" "),r("tr",[r("td",[r("strong",[t._v("Redirect URIs")])]),t._v(" "),r("td",[t._v("Some of auth flows require that you set the correct redirect URI")])])])]),t._v(" "),r("p",[t._v("Now you can start with the user-authentication, Spotify provides 3 ways (4 if you consider different implementations):")]),t._v(" "),r("ul",[r("li",[r("p",[r("router-link",{attrs:{to:"/auth/implicit_grant.html"}},[t._v("ImplicitGrantAuth")])],1)]),t._v(" "),r("li",[r("p",[r("router-link",{attrs:{to:"/auth/token_swap.html"}},[t._v("TokenSwapAuth")]),t._v(" ("),r("strong",[t._v("Recommended")]),t._v(", server-side code mandatory, most secure method. The necessary code is shown here so you do not have to code it yourself.)")],1)]),t._v(" "),r("li",[r("p",[r("router-link",{attrs:{to:"/auth/autorization_code.html"}},[t._v("AutorizationCodeAuth")]),t._v(" (Not recommended, server-side code needed, else it's unsecure)")],1)]),t._v(" "),r("li",[r("p",[r("router-link",{attrs:{to:"/auth/client_credentials_auth.html"}},[t._v("ClientCredentialsAuth")]),t._v(" (Not recommended, server-side code needed, else it's unsecure)")],1)])]),t._v(" "),r("p",[t._v("Overview:\n"),r("img",{attrs:{src:"http://i.imgur.com/uf3ahTl.png",alt:"Overview"}})])])},[],!1,null,null,null);e.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[8],{191:function(t,e,r){"use strict";r.r(e);var o=r(0),a=Object(o.a)({},function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[r("h1",{attrs:{id:"getting-started"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#getting-started","aria-hidden":"true"}},[t._v("#")]),t._v(" Getting Started")]),t._v(" "),r("h2",{attrs:{id:"auth-methods"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#auth-methods","aria-hidden":"true"}},[t._v("#")]),t._v(" Auth-Methods")]),t._v(" "),r("p",[t._v("Before you can use the Web API full functional, you need the user to authenticate your Application.\nIf you want to know more, you can read to the whole auth-process "),r("a",{attrs:{href:"https://developer.spotify.com/web-api/authorization-guide/",target:"_blank",rel:"noopener noreferrer"}},[t._v("here"),r("OutboundLink")],1),t._v(".")]),t._v(" "),r("p",[t._v("Before you start, install "),r("code",[t._v("SpotifyAPI.Web.Auth")]),t._v(" and create an application at Spotify: "),r("a",{attrs:{href:"https://developer.spotify.com/my-applications/#!/applications",target:"_blank",rel:"noopener noreferrer"}},[t._v("Your Applications"),r("OutboundLink")],1)]),t._v(" "),r("p",[t._v("After you created your Application, you will have following important values:")]),t._v(" "),r("table",[r("thead",[r("tr",[r("th",[t._v("Name")]),t._v(" "),r("th",[t._v("Description")])])]),t._v(" "),r("tbody",[r("tr",[r("td",[r("strong",[t._v("Client_Id")])]),t._v(" "),r("td",[t._v("This is your client_id, you don't have to hide it")])]),t._v(" "),r("tr",[r("td",[r("strong",[t._v("Client_Secret")])]),t._v(" "),r("td",[t._v("Never use this in one of your client-side apps! Keep it secret!")])]),t._v(" "),r("tr",[r("td",[r("strong",[t._v("Redirect URIs")])]),t._v(" "),r("td",[t._v("Some of auth flows require that you set the correct redirect URI")])])])]),t._v(" "),r("p",[t._v("Now you can start with the user-authentication, Spotify provides 3 ways (4 if you consider different implementations):")]),t._v(" "),r("ul",[r("li",[r("p",[r("router-link",{attrs:{to:"/auth/implicit_grant.html"}},[t._v("ImplicitGrantAuth")])],1)]),t._v(" "),r("li",[r("p",[r("router-link",{attrs:{to:"/auth/token_swap.html"}},[t._v("TokenSwapAuth")]),t._v(" ("),r("strong",[t._v("Recommended")]),t._v(", server-side code mandatory, most secure method. The necessary code is shown here so you do not have to code it yourself.)")],1)]),t._v(" "),r("li",[r("p",[r("router-link",{attrs:{to:"/auth/autorization_code.html"}},[t._v("AutorizationCodeAuth")]),t._v(" (Not recommended, server-side code needed, else it's unsecure)")],1)]),t._v(" "),r("li",[r("p",[r("router-link",{attrs:{to:"/auth/client_credentials_auth.html"}},[t._v("ClientCredentialsAuth")]),t._v(" (Not recommended, server-side code needed, else it's unsecure)")],1)])]),t._v(" "),r("p",[t._v("Overview:\n"),r("img",{attrs:{src:"http://i.imgur.com/uf3ahTl.png",alt:"Overview"}})])])},[],!1,null,null,null);e.default=a.exports}}]); \ No newline at end of file diff --git a/assets/js/9.2255e63f.js b/assets/js/9.71a1bc10.js similarity index 98% rename from assets/js/9.2255e63f.js rename to assets/js/9.71a1bc10.js index dc4b4ddf..2cd700fe 100644 --- a/assets/js/9.2255e63f.js +++ b/assets/js/9.71a1bc10.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[9],{190:function(t,a,s){"use strict";s.r(a);var n=s(0),e=Object(n.a)({},function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"implicitgrantauth"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#implicitgrantauth","aria-hidden":"true"}},[t._v("#")]),t._v(" ImplicitGrantAuth")]),t._v(" "),s("p",[t._v("This way is "),s("strong",[t._v("recommended")]),t._v(' 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.\nYou won\'t be able to refresh the token. If you want to use the internal Http server, please add "http://localhost:YOURPORT" to your application redirect URIs.')]),t._v(" "),s("p",[t._v("More info: "),s("a",{attrs:{href:"https://developer.spotify.com/documentation/general/guides/authorization-guide/#implicit-grant-flow",target:"_blank",rel:"noopener noreferrer"}},[t._v("here"),s("OutboundLink")],1)]),t._v(" "),s("div",{staticClass:"language-csharp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-csharp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("async")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("Main")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("string")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" args"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ImplicitGrantAuth")]),t._v(" auth "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ImplicitGrantAuth")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n _clientId"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://localhost:4002"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://localhost:4002"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n Scope"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("UserReadPrivate\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n auth"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("AuthReceived "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("+=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("async")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("sender"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" payload"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=>")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n auth"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("Stop")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// `sender` is also the auth instance")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("SpotifyWebAPI")]),t._v(" api "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("SpotifyWebAPI")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n TokenType "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" payload"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("TokenType"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n AccessToken "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" payload"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("AccessToken\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Do requests with API client")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n auth"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("Start")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Starts an internal HTTP Server")]),t._v("\n auth"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("OpenBrowser")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])])},[],!1,null,null,null);a.default=e.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[9],{189:function(t,a,s){"use strict";s.r(a);var n=s(0),e=Object(n.a)({},function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"implicitgrantauth"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#implicitgrantauth","aria-hidden":"true"}},[t._v("#")]),t._v(" ImplicitGrantAuth")]),t._v(" "),s("p",[t._v("This way is "),s("strong",[t._v("recommended")]),t._v(' 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.\nYou won\'t be able to refresh the token. If you want to use the internal Http server, please add "http://localhost:YOURPORT" to your application redirect URIs.')]),t._v(" "),s("p",[t._v("More info: "),s("a",{attrs:{href:"https://developer.spotify.com/documentation/general/guides/authorization-guide/#implicit-grant-flow",target:"_blank",rel:"noopener noreferrer"}},[t._v("here"),s("OutboundLink")],1)]),t._v(" "),s("div",{staticClass:"language-csharp extra-class"},[s("pre",{pre:!0,attrs:{class:"language-csharp"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("static")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("async")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("void")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("Main")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("string")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" args"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ImplicitGrantAuth")]),t._v(" auth "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("ImplicitGrantAuth")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n _clientId"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://localhost:4002"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://localhost:4002"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n Scope"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("UserReadPrivate\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n auth"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("AuthReceived "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("+=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("async")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("sender"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" payload"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=>")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n auth"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("Stop")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// `sender` is also the auth instance")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("SpotifyWebAPI")]),t._v(" api "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("SpotifyWebAPI")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n TokenType "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" payload"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("TokenType"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n AccessToken "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" payload"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("AccessToken\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Do requests with API client")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n auth"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("Start")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Starts an internal HTTP Server")]),t._v("\n auth"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("OpenBrowser")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])])},[],!1,null,null,null);a.default=e.exports}}]); \ No newline at end of file diff --git a/assets/js/app.b3b376a4.js b/assets/js/app.25f60649.js similarity index 95% rename from assets/js/app.b3b376a4.js rename to assets/js/app.25f60649.js index 12b41e44..e6855277 100644 --- a/assets/js/app.b3b376a4.js +++ b/assets/js/app.25f60649.js @@ -1,4 +1,4 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[0],[]]);!function(t){function e(e){for(var r,a,s=e[0],l=e[1],c=e[2],f=0,p=[];f
'};function o(t,e,n){return tn?n:t}function i(t){return 100*(-1+t)}n.configure=function(t){var e,n;for(e in t)void 0!==(n=t[e])&&t.hasOwnProperty(e)&&(r[e]=n);return this},n.status=null,n.set=function(t){var e=n.isStarted();t=o(t,r.minimum,1),n.status=1===t?null:t;var l=n.render(!e),c=l.querySelector(r.barSelector),u=r.speed,f=r.easing;return l.offsetWidth,a(function(e){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),s(c,function(t,e,n){var o;return(o="translate3d"===r.positionUsing?{transform:"translate3d("+i(t)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+i(t)+"%,0)"}:{"margin-left":i(t)+"%"}).transition="all "+e+"ms "+n,o}(t,u,f)),1===t?(s(l,{transition:"none",opacity:1}),l.offsetWidth,setTimeout(function(){s(l,{transition:"all "+u+"ms linear",opacity:0}),setTimeout(function(){n.remove(),e()},u)},u)):setTimeout(e,u)}),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var t=function(){setTimeout(function(){n.status&&(n.trickle(),t())},r.trickleSpeed)};return r.trickle&&t(),this},n.done=function(t){return t||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(t){var e=n.status;return e?("number"!=typeof t&&(t=(1-e)*o(Math.random()*e,.1,.95)),e=o(e+t,0,.994),n.set(e)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},t=0,e=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===e&&n.start(),t++,e++,r.always(function(){0==--e?(t=0,n.done()):n.set((t-e)/t)}),this):this},n.render=function(t){if(n.isRendered())return document.getElementById("nprogress");c(document.documentElement,"nprogress-busy");var e=document.createElement("div");e.id="nprogress",e.innerHTML=r.template;var o,a=e.querySelector(r.barSelector),l=t?"-100":i(n.status||0),u=document.querySelector(r.parent);return s(a,{transition:"all 0 linear",transform:"translate3d("+l+"%,0,0)"}),r.showSpinner||(o=e.querySelector(r.spinnerSelector))&&p(o),u!=document.body&&c(u,"nprogress-custom-parent"),u.appendChild(e),e},n.remove=function(){u(document.documentElement,"nprogress-busy"),u(document.querySelector(r.parent),"nprogress-custom-parent");var t=document.getElementById("nprogress");t&&p(t)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var t=document.body.style,e="WebkitTransform"in t?"Webkit":"MozTransform"in t?"Moz":"msTransform"in t?"ms":"OTransform"in t?"O":"";return e+"Perspective"in t?"translate3d":e+"Transform"in t?"translate":"margin"};var a=function(){var t=[];function e(){var n=t.shift();n&&n(e)}return function(n){t.push(n),1==t.length&&e()}}(),s=function(){var t=["Webkit","O","Moz","ms"],e={};function n(n){return n=n.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,function(t,e){return e.toUpperCase()}),e[n]||(e[n]=function(e){var n=document.body.style;if(e in n)return e;for(var r,o=t.length,i=e.charAt(0).toUpperCase()+e.slice(1);o--;)if((r=t[o]+i)in n)return r;return e}(n))}function r(t,e,r){e=n(e),t.style[e]=r}return function(t,e){var n,o,i=arguments;if(2==i.length)for(n in e)void 0!==(o=e[n])&&e.hasOwnProperty(n)&&r(t,n,o);else r(t,i[1],i[2])}}();function l(t,e){return("string"==typeof t?t:f(t)).indexOf(" "+e+" ")>=0}function c(t,e){var n=f(t),r=n+e;l(n,e)||(t.className=r.substring(1))}function u(t,e){var n,r=f(t);l(t,e)&&(n=r.replace(" "+e+" "," "),t.className=n.substring(1,n.length-1))}function f(t){return(" "+(t.className||"")+" ").replace(/\s+/gi," ")}function p(t){t&&t.parentNode&&t.parentNode.removeChild(t)}return n})?r.call(e,n,e,t):r)||(t.exports=o)},function(t,e){var n="Expected a function",r=NaN,o="[object Symbol]",i=/^\s+|\s+$/g,a=/^[-+]0x[0-9a-f]+$/i,s=/^0b[01]+$/i,l=/^0o[0-7]+$/i,c=parseInt,u="object"==typeof global&&global&&global.Object===Object&&global,f="object"==typeof self&&self&&self.Object===Object&&self,p=u||f||Function("return this")(),d=Object.prototype.toString,h=Math.max,v=Math.min,m=function(){return p.Date.now()};function y(t,e,r){var o,i,a,s,l,c,u=0,f=!1,p=!1,d=!0;if("function"!=typeof t)throw new TypeError(n);function y(e){var n=o,r=i;return o=i=void 0,u=e,s=t.apply(r,n)}function _(t){var n=t-c;return void 0===c||n>=e||n<0||p&&t-u>=a}function w(){var t=m();if(_(t))return k(t);l=setTimeout(w,function(t){var n=e-(t-c);return p?v(n,a-(t-u)):n}(t))}function k(t){return l=void 0,d&&o?y(t):(o=i=void 0,s)}function $(){var t=m(),n=_(t);if(o=arguments,i=this,c=t,n){if(void 0===l)return function(t){return u=t,l=setTimeout(w,e),f?y(t):s}(c);if(p)return l=setTimeout(w,e),y(c)}return void 0===l&&(l=setTimeout(w,e)),s}return e=b(e)||0,g(r)&&(f=!!r.leading,a=(p="maxWait"in r)?h(b(r.maxWait)||0,e):a,d="trailing"in r?!!r.trailing:d),$.cancel=function(){void 0!==l&&clearTimeout(l),u=0,o=c=i=l=void 0},$.flush=function(){return void 0===l?s:k(m())},$}function g(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}function b(t){if("number"==typeof t)return t;if(function(t){return"symbol"==typeof t||function(t){return!!t&&"object"==typeof t}(t)&&d.call(t)==o}(t))return r;if(g(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=g(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=t.replace(i,"");var n=s.test(t);return n||l.test(t)?c(t.slice(2),n?2:8):a.test(t)?r:+t}t.exports=function(t,e,r){var o=!0,i=!0;if("function"!=typeof t)throw new TypeError(n);return g(r)&&(o="leading"in r?!!r.leading:o,i="trailing"in r?!!r.trailing:i),y(t,e,{leading:o,maxWait:e,trailing:i})}},function(t,e,n){t.exports=n(8)},function(t,e,n){Promise.all([n.e(0),n.e(26)]).then(n.t.bind(null,9,7))},function(t,e,n){},function(t,e,n){"use strict";var r=n(1);n.n(r).a},function(t,e,n){"use strict";n.r(e); /*! @@ -11,4 +11,4 @@ var r=Object.freeze({});function o(t){return null==t}function i(t){return null!= * vue-router v3.1.2 * (c) 2019 Evan You * @license MIT - */function Fo(t){return Object.prototype.toString.call(t).indexOf("Error")>-1}function zo(t,e){return e instanceof t||e&&(e.name===t.name||e._name===t._name)}function Bo(t,e){for(var n in e)t[n]=e[n];return t}var Vo={name:"RouterView",functional:!0,props:{name:{type:String,default:"default"}},render:function(t,e){var n=e.props,r=e.children,o=e.parent,i=e.data;i.routerView=!0;for(var a=o.$createElement,s=n.name,l=o.$route,c=o._routerViewCache||(o._routerViewCache={}),u=0,f=!1;o&&o._routerRoot!==o;){var p=o.$vnode&&o.$vnode.data;p&&(p.routerView&&u++,p.keepAlive&&o._inactive&&(f=!0)),o=o.$parent}if(i.routerViewDepth=u,f)return a(c[s],i,r);var d=l.matched[u];if(!d)return c[s]=null,a();var h=c[s]=d.components[s];i.registerRouteInstance=function(t,e){var n=d.instances[s];(e&&n!==t||!e&&n===t)&&(d.instances[s]=e)},(i.hook||(i.hook={})).prepatch=function(t,e){d.instances[s]=e.componentInstance},i.hook.init=function(t){t.data.keepAlive&&t.componentInstance&&t.componentInstance!==d.instances[s]&&(d.instances[s]=t.componentInstance)};var v=i.props=function(t,e){switch(typeof e){case"undefined":return;case"object":return e;case"function":return e(t);case"boolean":return e?t.params:void 0;default:0}}(l,d.props&&d.props[s]);if(v){v=i.props=Bo({},v);var m=i.attrs=i.attrs||{};for(var y in v)h.props&&y in h.props||(m[y]=v[y],delete v[y])}return a(h,i,r)}};var Go=/[!'()*]/g,Ho=function(t){return"%"+t.charCodeAt(0).toString(16)},qo=/%2C/g,Wo=function(t){return encodeURIComponent(t).replace(Go,Ho).replace(qo,",")},Ko=decodeURIComponent;function Xo(t){var e={};return(t=t.trim().replace(/^(\?|#|&)/,""))?(t.split("&").forEach(function(t){var n=t.replace(/\+/g," ").split("="),r=Ko(n.shift()),o=n.length>0?Ko(n.join("=")):null;void 0===e[r]?e[r]=o:Array.isArray(e[r])?e[r].push(o):e[r]=[e[r],o]}),e):e}function Jo(t){var e=t?Object.keys(t).map(function(e){var n=t[e];if(void 0===n)return"";if(null===n)return Wo(e);if(Array.isArray(n)){var r=[];return n.forEach(function(t){void 0!==t&&(null===t?r.push(Wo(e)):r.push(Wo(e)+"="+Wo(t)))}),r.join("&")}return Wo(e)+"="+Wo(n)}).filter(function(t){return t.length>0}).join("&"):null;return e?"?"+e:""}var Yo=/\/?$/;function Zo(t,e,n,r){var o=r&&r.options.stringifyQuery,i=e.query||{};try{i=Qo(i)}catch(t){}var a={name:e.name||t&&t.name,meta:t&&t.meta||{},path:e.path||"/",hash:e.hash||"",query:i,params:e.params||{},fullPath:ni(e,o),matched:t?ei(t):[]};return n&&(a.redirectedFrom=ni(n,o)),Object.freeze(a)}function Qo(t){if(Array.isArray(t))return t.map(Qo);if(t&&"object"==typeof t){var e={};for(var n in t)e[n]=Qo(t[n]);return e}return t}var ti=Zo(null,{path:"/"});function ei(t){for(var e=[];t;)e.unshift(t),t=t.parent;return e}function ni(t,e){var n=t.path,r=t.query;void 0===r&&(r={});var o=t.hash;return void 0===o&&(o=""),(n||"/")+(e||Jo)(r)+o}function ri(t,e){return e===ti?t===e:!!e&&(t.path&&e.path?t.path.replace(Yo,"")===e.path.replace(Yo,"")&&t.hash===e.hash&&oi(t.query,e.query):!(!t.name||!e.name)&&(t.name===e.name&&t.hash===e.hash&&oi(t.query,e.query)&&oi(t.params,e.params)))}function oi(t,e){if(void 0===t&&(t={}),void 0===e&&(e={}),!t||!e)return t===e;var n=Object.keys(t),r=Object.keys(e);return n.length===r.length&&n.every(function(n){var r=t[n],o=e[n];return"object"==typeof r&&"object"==typeof o?oi(r,o):String(r)===String(o)})}function ii(t,e,n){var r=t.charAt(0);if("/"===r)return t;if("?"===r||"#"===r)return e+t;var o=e.split("/");n&&o[o.length-1]||o.pop();for(var i=t.replace(/^\//,"").split("/"),a=0;a=0&&(e=t.slice(r),t=t.slice(0,r));var o=t.indexOf("?");return o>=0&&(n=t.slice(o+1),t=t.slice(0,o)),{path:t,query:n,hash:e}}(o.path||""),l=e&&e.path||"/",c=s.path?ii(s.path,l,n||o.append):l,u=function(t,e,n){void 0===e&&(e={});var r,o=n||Xo;try{r=o(t||"")}catch(t){r={}}for(var i in e)r[i]=e[i];return r}(s.query,o.query,r&&r.options.parseQuery),f=o.hash||s.hash;return f&&"#"!==f.charAt(0)&&(f="#"+f),{_normalized:!0,path:c,query:u,hash:f}}var Ci,Si=[String,Object],Oi=[String,Array],Ei=function(){},Pi={name:"RouterLink",props:{to:{type:Si,required:!0},tag:{type:String,default:"a"},exact:Boolean,append:Boolean,replace:Boolean,activeClass:String,exactActiveClass:String,event:{type:Oi,default:"click"}},render:function(t){var e=this,n=this.$router,r=this.$route,o=n.resolve(this.to,r,this.append),i=o.location,a=o.route,s=o.href,l={},c=n.options.linkActiveClass,u=n.options.linkExactActiveClass,f=null==c?"router-link-active":c,p=null==u?"router-link-exact-active":u,d=null==this.activeClass?f:this.activeClass,h=null==this.exactActiveClass?p:this.exactActiveClass,v=a.redirectedFrom?Zo(null,Ai(a.redirectedFrom),null,n):a;l[h]=ri(r,v),l[d]=this.exact?l[h]:function(t,e){return 0===t.path.replace(Yo,"/").indexOf(e.path.replace(Yo,"/"))&&(!e.hash||t.hash===e.hash)&&function(t,e){for(var n in e)if(!(n in t))return!1;return!0}(t.query,e.query)}(r,v);var m=function(t){Ti(t)&&(e.replace?n.replace(i,Ei):n.push(i,Ei))},y={click:Ti};Array.isArray(this.event)?this.event.forEach(function(t){y[t]=m}):y[this.event]=m;var g={class:l},b=!this.$scopedSlots.$hasNormal&&this.$scopedSlots.default&&this.$scopedSlots.default({href:s,route:a,navigate:m,isActive:l[d],isExactActive:l[h]});if(b){if(1===b.length)return b[0];if(b.length>1||!b.length)return 0===b.length?t():t("span",{},b)}if("a"===this.tag)g.on=y,g.attrs={href:s};else{var _=function t(e){if(e)for(var n,r=0;r-1&&(s.params[p]=n.params[p]);return s.path=xi(u.path,s.params),l(u,s,a)}if(s.path){s.params={};for(var d=0;d=t.length?n():t[o]?e(t[o],function(){r(o+1)}):r(o+1)};r(0)}function ea(t){return function(e,n,r){var o=!1,i=0,a=null;na(t,function(t,e,n,s){if("function"==typeof t&&void 0===t.cid){o=!0,i++;var l,c=ia(function(e){var o;((o=e).__esModule||oa&&"Module"===o[Symbol.toStringTag])&&(e=e.default),t.resolved="function"==typeof e?e:Ci.extend(e),n.components[s]=e,--i<=0&&r()}),u=ia(function(t){var e="Failed to resolve async component "+s+": "+t;a||(a=Fo(t)?t:new Error(e),r(a))});try{l=t(c,u)}catch(t){u(t)}if(l)if("function"==typeof l.then)l.then(c,u);else{var f=l.component;f&&"function"==typeof f.then&&f.then(c,u)}}}),o||r()}}function na(t,e){return ra(t.map(function(t){return Object.keys(t.components).map(function(n){return e(t.components[n],t.instances[n],t,n)})}))}function ra(t){return Array.prototype.concat.apply([],t)}var oa="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag;function ia(t){var e=!1;return function(){for(var n=[],r=arguments.length;r--;)n[r]=arguments[r];if(!e)return e=!0,t.apply(this,n)}}var aa=function(t){function e(){t.call(this,"Navigating to current location is not allowed"),this.name=this._name="NavigationDuplicated"}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(Error);aa._name="NavigationDuplicated";var sa=function(t,e){this.router=t,this.base=function(t){if(!t)if(ji){var e=document.querySelector("base");t=(t=e&&e.getAttribute("href")||"/").replace(/^https?:\/\/[^\/]+/,"")}else t="/";"/"!==t.charAt(0)&&(t="/"+t);return t.replace(/\/$/,"")}(e),this.current=ti,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[]};function la(t,e,n,r){var o=na(t,function(t,r,o,i){var a=function(t,e){"function"!=typeof t&&(t=Ci.extend(t));return t.options[e]}(t,e);if(a)return Array.isArray(a)?a.map(function(t){return n(t,r,o,i)}):n(a,r,o,i)});return ra(r?o.reverse():o)}function ca(t,e){if(e)return function(){return t.apply(e,arguments)}}sa.prototype.listen=function(t){this.cb=t},sa.prototype.onReady=function(t,e){this.ready?t():(this.readyCbs.push(t),e&&this.readyErrorCbs.push(e))},sa.prototype.onError=function(t){this.errorCbs.push(t)},sa.prototype.transitionTo=function(t,e,n){var r=this,o=this.router.match(t,this.current);this.confirmTransition(o,function(){r.updateRoute(o),e&&e(o),r.ensureURL(),r.ready||(r.ready=!0,r.readyCbs.forEach(function(t){t(o)}))},function(t){n&&n(t),t&&!r.ready&&(r.ready=!0,r.readyErrorCbs.forEach(function(e){e(t)}))})},sa.prototype.confirmTransition=function(t,e,n){var r=this,o=this.current,i=function(t){!zo(aa,t)&&Fo(t)&&(r.errorCbs.length?r.errorCbs.forEach(function(e){e(t)}):console.error(t)),n&&n(t)};if(ri(t,o)&&t.matched.length===o.matched.length)return this.ensureURL(),i(new aa(t));var a=function(t,e){var n,r=Math.max(t.length,e.length);for(n=0;n-1?decodeURI(t.slice(0,r))+t.slice(r):decodeURI(t)}else n>-1&&(t=decodeURI(t.slice(0,n))+t.slice(n));return t}function va(t){var e=window.location.href,n=e.indexOf("#");return(n>=0?e.slice(0,n):e)+"#"+t}function ma(t){Wi?Zi(va(t)):window.location.hash=t}function ya(t){Wi?Qi(va(t)):window.location.replace(va(t))}var ga=function(t){function e(e,n){t.call(this,e,n),this.stack=[],this.index=-1}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.push=function(t,e,n){var r=this;this.transitionTo(t,function(t){r.stack=r.stack.slice(0,r.index+1).concat(t),r.index++,e&&e(t)},n)},e.prototype.replace=function(t,e,n){var r=this;this.transitionTo(t,function(t){r.stack=r.stack.slice(0,r.index).concat(t),e&&e(t)},n)},e.prototype.go=function(t){var e=this,n=this.index+t;if(!(n<0||n>=this.stack.length)){var r=this.stack[n];this.confirmTransition(r,function(){e.index=n,e.updateRoute(r)},function(t){zo(aa,t)&&(e.index=n)})}},e.prototype.getCurrentLocation=function(){var t=this.stack[this.stack.length-1];return t?t.fullPath:"/"},e.prototype.ensureURL=function(){},e}(sa),ba=function(t){void 0===t&&(t={}),this.app=null,this.apps=[],this.options=t,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=Ii(t.routes||[],this);var e=t.mode||"hash";switch(this.fallback="history"===e&&!Wi&&!1!==t.fallback,this.fallback&&(e="hash"),ji||(e="abstract"),this.mode=e,e){case"history":this.history=new ua(this,t.base);break;case"hash":this.history=new pa(this,t.base,this.fallback);break;case"abstract":this.history=new ga(this,t.base);break;default:0}},_a={currentRoute:{configurable:!0}};function wa(t,e){return t.push(e),function(){var n=t.indexOf(e);n>-1&&t.splice(n,1)}}ba.prototype.match=function(t,e,n){return this.matcher.match(t,e,n)},_a.currentRoute.get=function(){return this.history&&this.history.current},ba.prototype.init=function(t){var e=this;if(this.apps.push(t),t.$once("hook:destroyed",function(){var n=e.apps.indexOf(t);n>-1&&e.apps.splice(n,1),e.app===t&&(e.app=e.apps[0]||null)}),!this.app){this.app=t;var n=this.history;if(n instanceof ua)n.transitionTo(n.getCurrentLocation());else if(n instanceof pa){var r=function(){n.setupListeners()};n.transitionTo(n.getCurrentLocation(),r,r)}n.listen(function(t){e.apps.forEach(function(e){e._route=t})})}},ba.prototype.beforeEach=function(t){return wa(this.beforeHooks,t)},ba.prototype.beforeResolve=function(t){return wa(this.resolveHooks,t)},ba.prototype.afterEach=function(t){return wa(this.afterHooks,t)},ba.prototype.onReady=function(t,e){this.history.onReady(t,e)},ba.prototype.onError=function(t){this.history.onError(t)},ba.prototype.push=function(t,e,n){var r=this;if(!e&&!n&&"undefined"!=typeof Promise)return new Promise(function(e,n){r.history.push(t,e,n)});this.history.push(t,e,n)},ba.prototype.replace=function(t,e,n){var r=this;if(!e&&!n&&"undefined"!=typeof Promise)return new Promise(function(e,n){r.history.replace(t,e,n)});this.history.replace(t,e,n)},ba.prototype.go=function(t){this.history.go(t)},ba.prototype.back=function(){this.go(-1)},ba.prototype.forward=function(){this.go(1)},ba.prototype.getMatchedComponents=function(t){var e=t?t.matched?t:this.resolve(t).route:this.currentRoute;return e?[].concat.apply([],e.matched.map(function(t){return Object.keys(t.components).map(function(e){return t.components[e]})})):[]},ba.prototype.resolve=function(t,e,n){var r=Ai(t,e=e||this.history.current,n,this),o=this.match(r,e),i=o.redirectedFrom||o.fullPath;return{location:r,route:o,href:function(t,e,n){var r="hash"===n?"#"+e:e;return t?ai(t+"/"+r):r}(this.history.base,i,this.mode),normalizedTo:r,resolved:o}},ba.prototype.addRoutes=function(t){this.matcher.addRoutes(t),this.history.current!==ti&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(ba.prototype,_a),ba.install=function t(e){if(!t.installed||Ci!==e){t.installed=!0,Ci=e;var n=function(t){return void 0!==t},r=function(t,e){var r=t.$options._parentVnode;n(r)&&n(r=r.data)&&n(r=r.registerRouteInstance)&&r(t,e)};e.mixin({beforeCreate:function(){n(this.$options.router)?(this._routerRoot=this,this._router=this.$options.router,this._router.init(this),e.util.defineReactive(this,"_route",this._router.history.current)):this._routerRoot=this.$parent&&this.$parent._routerRoot||this,r(this,this)},destroyed:function(){r(this)}}),Object.defineProperty(e.prototype,"$router",{get:function(){return this._routerRoot._router}}),Object.defineProperty(e.prototype,"$route",{get:function(){return this._routerRoot._route}}),e.component("RouterView",Vo),e.component("RouterLink",Pi);var o=e.config.optionMergeStrategies;o.beforeRouteEnter=o.beforeRouteLeave=o.beforeRouteUpdate=o.created}},ba.version="3.1.2",ji&&window.Vue&&window.Vue.use(ba);var ka=ba;var $a={NotFound:()=>n.e(4).then(n.bind(null,185)),Layout:()=>Promise.all([n.e(0),n.e(2)]).then(n.bind(null,184))},xa={"v-f88195a6":()=>n.e(5).then(n.bind(null,186)),"v-0f125dbb":()=>n.e(6).then(n.bind(null,187)),"v-5127c24a":()=>n.e(7).then(n.bind(null,188)),"v-79c557ae":()=>n.e(8).then(n.bind(null,189)),"v-bc26f6ca":()=>n.e(9).then(n.bind(null,190)),"v-15ae477b":()=>n.e(10).then(n.bind(null,191)),"v-e2943322":()=>n.e(11).then(n.bind(null,192)),"v-9b504b3e":()=>n.e(12).then(n.bind(null,193)),"v-3896b323":()=>n.e(13).then(n.bind(null,194)),"v-ae731ab6":()=>n.e(14).then(n.bind(null,195)),"v-545731d5":()=>n.e(15).then(n.bind(null,196)),"v-5cda54a1":()=>n.e(16).then(n.bind(null,197)),"v-24570241":()=>n.e(17).then(n.bind(null,198)),"v-7499233e":()=>n.e(18).then(n.bind(null,199)),"v-26737916":()=>n.e(19).then(n.bind(null,200)),"v-700fa4e1":()=>n.e(22).then(n.bind(null,201)),"v-86daa2ba":()=>n.e(21).then(n.bind(null,202)),"v-2f539db2":()=>n.e(24).then(n.bind(null,203)),"v-1edba7fe":()=>n.e(25).then(n.bind(null,204)),"v-fe729232":()=>n.e(23).then(n.bind(null,205)),"v-1e493801":()=>n.e(20).then(n.bind(null,206))};function Aa(t){const e=Object.create(null);return function(n){return e[n]||(e[n]=t(n))}}const Ca=/-(\w)/g,Sa=Aa(t=>t.replace(Ca,(t,e)=>e?e.toUpperCase():"")),Oa=/\B([A-Z])/g,Ea=Aa(t=>t.replace(Oa,"-$1").toLowerCase()),Pa=Aa(t=>t.charAt(0).toUpperCase()+t.slice(1));function Ta(t,e){if(!e)return;if(t(e))return t(e);return e.includes("-")?t(Pa(Sa(e))):t(Pa(e))||t(Ea(e))}const ja=Object.assign({},$a,xa),La=t=>ja[t],Ra=t=>xa[t],Ia=t=>$a[t],Ma=t=>No.component(t);function Ua(t){return Ta(Ra,t)}function Da(t){return Ta(Ia,t)}function Na(t){return Ta(La,t)}function Fa(t){return Ta(Ma,t)}function za(...t){return Promise.all(t.filter(t=>t).map(async t=>{if(!Fa(t)&&Na(t)){const e=await Na(t)();No.component(t,e.default)}}))}function Ba(t,e){"undefined"!=typeof window&&window.__VUEPRESS__&&(window.__VUEPRESS__[t]=e)}var Va={created(){this.$ssrContext&&(this.$ssrContext.title=this.$title,this.$ssrContext.lang=this.$lang,this.$ssrContext.description=this.$page.description||this.$description)},mounted(){this.currentMetaTags=new Set,this.updateMeta()},methods:{updateMeta(){document.title=this.$title,document.documentElement.lang=this.$lang;const t=this.$page.frontmatter.meta||[],e=t.slice(0);0===t.filter(t=>"description"===t.name).length&&e.push({name:"description",content:this.$description});const n=document.querySelectorAll('meta[name="description"]');n.length&&n.forEach(t=>this.currentMetaTags.add(t)),this.currentMetaTags=new Set(Ga(e,this.currentMetaTags))}},watch:{$page(){this.updateMeta()}},beforeDestroy(){Ga(null,this.currentMetaTags)}};function Ga(t,e){if(e&&[...e].forEach(t=>{document.head.removeChild(t)}),t)return t.map(t=>{const e=document.createElement("meta");return Object.keys(t).forEach(n=>{e.setAttribute(n,t[n])}),document.head.appendChild(e),e})}var Ha=n(3),qa={mounted(){window.addEventListener("scroll",this.onScroll)},methods:{onScroll:n.n(Ha)()(function(){this.setActiveHash()},300),setActiveHash(){const t=[].slice.call(document.querySelectorAll(".sidebar-link")),e=[].slice.call(document.querySelectorAll(".header-anchor")).filter(e=>t.some(t=>t.hash===e.hash)),n=Math.max(window.pageYOffset,document.documentElement.scrollTop,document.body.scrollTop),r=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight),o=window.innerHeight+n;for(let t=0;t=i.parentElement.offsetTop+10&&(!a||n{this.$nextTick(()=>{this.$vuepress.$set("disableScrollBehavior",!1)})})}}}},beforeDestroy(){window.removeEventListener("scroll",this.onScroll)}},Wa=n(2),Ka=n.n(Wa),Xa=[Va,qa,{mounted(){Ka.a.configure({showSpinner:!1}),this.$router.beforeEach((t,e,n)=>{t.path===e.path||No.component(t.name)||Ka.a.start(),n()}),this.$router.afterEach(()=>{Ka.a.done(),this.isSidebarOpen=!1})}}],Ja={methods:{getLayout:function(){if(this.$page.path){var t=this.$page.frontmatter.layout;return t&&(this.$vuepress.getLayoutAsyncComponent(t)||this.$vuepress.getVueComponent(t))?t:"Layout"}return"NotFound"}},computed:{layout:function(){var t=this.getLayout();return Ba("layout",t),No.component(t)}}},Ya=n(0),Za=Object(Ya.a)(Ja,function(){var t=this.$createElement;return(this._self._c||t)(this.layout,{tag:"component"})},[],!1,null,null,null).exports;!function(t,e,n){switch(e){case"components":t[e]||(t[e]={}),Object.assign(t[e],n);break;case"mixins":t[e]||(t[e]=[]),t[e].push(...n);break;default:throw new Error("Unknown option name.")}}(Za,"mixins",Xa);const Qa=[{name:"v-f88195a6",path:"/",component:Za,beforeEnter:(t,e,n)=>{za("Layout","v-f88195a6").then(n)}},{path:"/index.html",redirect:"/"},{name:"v-0f125dbb",path:"/auth/authorization_code.html",component:Za,beforeEnter:(t,e,n)=>{za("Layout","v-0f125dbb").then(n)}},{name:"v-5127c24a",path:"/auth/client_credentials.html",component:Za,beforeEnter:(t,e,n)=>{za("Layout","v-5127c24a").then(n)}},{name:"v-79c557ae",path:"/auth/getting_started.html",component:Za,beforeEnter:(t,e,n)=>{za("Layout","v-79c557ae").then(n)}},{name:"v-bc26f6ca",path:"/auth/implicit_grant.html",component:Za,beforeEnter:(t,e,n)=>{za("Layout","v-bc26f6ca").then(n)}},{name:"v-15ae477b",path:"/auth/token_swap.html",component:Za,beforeEnter:(t,e,n)=>{za("Layout","v-15ae477b").then(n)}},{name:"v-e2943322",path:"/web/albums.html",component:Za,beforeEnter:(t,e,n)=>{za("Layout","v-e2943322").then(n)}},{name:"v-9b504b3e",path:"/web/artists.html",component:Za,beforeEnter:(t,e,n)=>{za("Layout","v-9b504b3e").then(n)}},{name:"v-3896b323",path:"/web/browse.html",component:Za,beforeEnter:(t,e,n)=>{za("Layout","v-3896b323").then(n)}},{name:"v-ae731ab6",path:"/web/examples.html",component:Za,beforeEnter:(t,e,n)=>{za("Layout","v-ae731ab6").then(n)}},{name:"v-545731d5",path:"/web/follow.html",component:Za,beforeEnter:(t,e,n)=>{za("Layout","v-545731d5").then(n)}},{name:"v-5cda54a1",path:"/web/getting_started.html",component:Za,beforeEnter:(t,e,n)=>{za("Layout","v-5cda54a1").then(n)}},{name:"v-24570241",path:"/web/library.html",component:Za,beforeEnter:(t,e,n)=>{za("Layout","v-24570241").then(n)}},{name:"v-7499233e",path:"/web/personalization.html",component:Za,beforeEnter:(t,e,n)=>{za("Layout","v-7499233e").then(n)}},{name:"v-26737916",path:"/web/player.html",component:Za,beforeEnter:(t,e,n)=>{za("Layout","v-26737916").then(n)}},{name:"v-700fa4e1",path:"/web/proxy.html",component:Za,beforeEnter:(t,e,n)=>{za("Layout","v-700fa4e1").then(n)}},{name:"v-86daa2ba",path:"/web/profiles.html",component:Za,beforeEnter:(t,e,n)=>{za("Layout","v-86daa2ba").then(n)}},{name:"v-2f539db2",path:"/web/tracks.html",component:Za,beforeEnter:(t,e,n)=>{za("Layout","v-2f539db2").then(n)}},{name:"v-1edba7fe",path:"/web/utils.html",component:Za,beforeEnter:(t,e,n)=>{za("Layout","v-1edba7fe").then(n)}},{name:"v-fe729232",path:"/web/search.html",component:Za,beforeEnter:(t,e,n)=>{za("Layout","v-fe729232").then(n)}},{name:"v-1e493801",path:"/web/playlists.html",component:Za,beforeEnter:(t,e,n)=>{za("Layout","v-1e493801").then(n)}},{path:"*",component:Za}],ts={title:"SpotifyAPI-NET",description:"🔉 An API for the Spotify-Client and the Spotify Web API, written in C#/.NET",base:"/SpotifyAPI-NET/",pages:[{title:"SpotifyAPI-NET Docs",frontmatter:{},regularPath:"/",relativePath:"README.md",key:"v-f88195a6",path:"/",headers:[{level:2,title:"About",slug:"about"},{level:2,title:"Installing",slug:"installing"},{level:2,title:"Getting Started",slug:"getting-started"},{level:2,title:"Projects",slug:"projects"},{level:3,title:"audio-band](https://github.com/dsafa/audio-band) by [@dsafa",slug:"audio-band-by-dsafa"},{level:3,title:"rocksmith-custom-song-toolkit](https://github.com/catara/rocksmith-custom-song-toolkit) by [@catara",slug:"rocksmith-custom-song-toolkit-by-catara"},{level:3,title:"Spofy](https://github.com/eltoncezar/Spofy) by [@eltoncezar",slug:"spofy-by-eltoncezar"},{level:3,title:"Toastify](https://github.com/aleab/toastify) by [@aleab",slug:"toastify-by-aleab"},{level:3,title:"Spotify Oculus](https://github.com/CaptainMorgs/spotify-oculus-release) by [@CaptainMorgs",slug:"spotify-oculus-by-captainmorgs"}],lastUpdated:"10/21/2019, 8:39:03 AM"},{title:"AutorizationCodeAuth",frontmatter:{sidebar:!1},regularPath:"/auth/authorization_code.html",relativePath:"auth/authorization_code.md",key:"v-0f125dbb",path:"/auth/authorization_code.html",lastUpdated:"10/21/2019, 8:39:03 AM"},{title:"ClientCredentialsAuth",frontmatter:{sidebar:!1},regularPath:"/auth/client_credentials.html",relativePath:"auth/client_credentials.md",key:"v-5127c24a",path:"/auth/client_credentials.html",lastUpdated:"10/21/2019, 8:39:03 AM"},{title:"Getting Started",frontmatter:{},regularPath:"/auth/getting_started.html",relativePath:"auth/getting_started.md",key:"v-79c557ae",path:"/auth/getting_started.html",headers:[{level:2,title:"Auth-Methods",slug:"auth-methods"}],lastUpdated:"10/21/2019, 8:39:03 AM"},{title:"ImplicitGrantAuth",frontmatter:{sidebar:!1},regularPath:"/auth/implicit_grant.html",relativePath:"auth/implicit_grant.md",key:"v-bc26f6ca",path:"/auth/implicit_grant.html",lastUpdated:"10/21/2019, 8:39:03 AM"},{title:"TokenSwapAuth",frontmatter:{},regularPath:"/auth/token_swap.html",relativePath:"auth/token_swap.md",key:"v-15ae477b",path:"/auth/token_swap.html",headers:[{level:2,title:"Using TokenSwapWebAPIFactory",slug:"using-tokenswapwebapifactory"},{level:2,title:"Using TokenSwapAuth",slug:"using-tokenswapauth"},{level:2,title:"Token Swap Endpoint",slug:"token-swap-endpoint"},{level:2,title:"Remarks",slug:"remarks"}],lastUpdated:"10/21/2019, 8:39:03 AM"},{title:"Albums",frontmatter:{},regularPath:"/web/albums.html",relativePath:"web/albums.md",key:"v-e2943322",path:"/web/albums.html",headers:[{level:2,title:"GetAlbumTracks",slug:"getalbumtracks"},{level:2,title:"GetAlbum",slug:"getalbum"},{level:2,title:"GetSeveralAlbums",slug:"getseveralalbums"}],lastUpdated:"10/21/2019, 8:39:03 AM"},{title:"Artists",frontmatter:{},regularPath:"/web/artists.html",relativePath:"web/artists.md",key:"v-9b504b3e",path:"/web/artists.html",headers:[{level:2,title:"GetArtist",slug:"getartist"},{level:2,title:"GetRelatedArtists",slug:"getrelatedartists"},{level:2,title:"GetArtistsTopTracks",slug:"getartiststoptracks"},{level:2,title:"GetArtistsAlbums",slug:"getartistsalbums"},{level:2,title:"GetSeveralArtists",slug:"getseveralartists"}],lastUpdated:"10/21/2019, 8:39:03 AM"},{title:"Browse",frontmatter:{},regularPath:"/web/browse.html",relativePath:"web/browse.md",key:"v-3896b323",path:"/web/browse.html",headers:[{level:2,title:"GetFeaturedPlaylists",slug:"getfeaturedplaylists"},{level:2,title:"GetNewAlbumReleases",slug:"getnewalbumreleases"},{level:2,title:"GetCategories",slug:"getcategories"},{level:2,title:"GetCategory",slug:"getcategory"},{level:2,title:"GetCategoryPlaylists",slug:"getcategoryplaylists"}],lastUpdated:"10/21/2019, 8:39:03 AM"},{title:"Examples",frontmatter:{sidebar:!1},regularPath:"/web/examples.html",relativePath:"web/examples.md",key:"v-ae731ab6",path:"/web/examples.html",lastUpdated:"10/21/2019, 8:39:03 AM"},{title:"Follow",frontmatter:{},regularPath:"/web/follow.html",relativePath:"web/follow.md",key:"v-545731d5",path:"/web/follow.html",headers:[{level:2,title:"Follow",slug:"follow-2"},{level:2,title:"Unfollow",slug:"unfollow"},{level:2,title:"IsFollowing",slug:"isfollowing"},{level:2,title:"FollowPlaylist",slug:"followplaylist"},{level:2,title:"UnfollowPlaylist",slug:"unfollowplaylist"},{level:2,title:"IsFollowingPlaylist",slug:"isfollowingplaylist"}],lastUpdated:"10/21/2019, 8:39:03 AM"},{title:"Getting Started",frontmatter:{sidebarDepth:2},regularPath:"/web/getting_started.html",relativePath:"web/getting_started.md",key:"v-5cda54a1",path:"/web/getting_started.html",headers:[{level:2,title:"First steps",slug:"first-steps"},{level:3,title:"Imports",slug:"imports"},{level:3,title:"Basic-Usage",slug:"basic-usage"},{level:2,title:"Examples",slug:"examples"},{level:2,title:"Error-Handling",slug:"error-handling"},{level:2,title:"Sync vs Asynchronous",slug:"sync-vs-asynchronous"},{level:2,title:"API-Reference",slug:"api-reference"},{level:3,title:"Albums",slug:"albums"},{level:3,title:"Artists",slug:"artists"},{level:3,title:"Browse",slug:"browse"},{level:3,title:"Follow",slug:"follow"},{level:3,title:"Library",slug:"library"},{level:3,title:"Personalization",slug:"personalization"},{level:3,title:"Player",slug:"player"},{level:3,title:"Playlists",slug:"playlists"},{level:3,title:"Profiles",slug:"profiles"},{level:3,title:"Search",slug:"search"},{level:3,title:"Tracks",slug:"tracks"},{level:3,title:"Util",slug:"util"}],lastUpdated:"10/21/2019, 8:39:03 AM"},{title:"Library",frontmatter:{},regularPath:"/web/library.html",relativePath:"web/library.md",key:"v-24570241",path:"/web/library.html",headers:[{level:2,title:"SaveTracks",slug:"savetracks"},{level:2,title:"SaveTrack",slug:"savetrack"},{level:2,title:"GetSavedTracks",slug:"getsavedtracks"},{level:2,title:"RemoveSavedTracks",slug:"removesavedtracks"},{level:2,title:"CheckSavedTracks",slug:"checksavedtracks"},{level:2,title:"SaveAlbums",slug:"savealbums"},{level:2,title:"SaveAlbum",slug:"savealbum"},{level:2,title:"GetSavedAlbums",slug:"getsavedalbums"},{level:2,title:"RemoveSavedAlbums",slug:"removesavedalbums"},{level:2,title:"CheckSavedAlbums",slug:"checksavedalbums"}],lastUpdated:"10/21/2019, 8:39:03 AM"},{title:"Personalization",frontmatter:{},regularPath:"/web/personalization.html",relativePath:"web/personalization.md",key:"v-7499233e",path:"/web/personalization.html",headers:[{level:2,title:"GetUsersTopTracks",slug:"getuserstoptracks"},{level:2,title:"GetUsersTopArtists",slug:"getuserstopartists"},{level:2,title:"GetUsersRecentlyPlayedTracks",slug:"getusersrecentlyplayedtracks"}],lastUpdated:"10/21/2019, 8:39:03 AM"},{title:"Player",frontmatter:{},regularPath:"/web/player.html",relativePath:"web/player.md",key:"v-26737916",path:"/web/player.html",headers:[{level:2,title:"GetDevices",slug:"getdevices"},{level:2,title:"GetPlayback",slug:"getplayback"},{level:2,title:"GetPlayingTrack",slug:"getplayingtrack"},{level:2,title:"TransferPlayback",slug:"transferplayback"},{level:2,title:"ResumePlayback",slug:"resumeplayback"},{level:2,title:"PausePlayback",slug:"pauseplayback"},{level:2,title:"SkipPlaybackToNext",slug:"skipplaybacktonext"},{level:2,title:"SkipPlaybackToPrevious",slug:"skipplaybacktoprevious"},{level:2,title:"SeekPlayback",slug:"seekplayback"},{level:2,title:"SetRepeatMode",slug:"setrepeatmode"},{level:2,title:"SetVolume",slug:"setvolume"},{level:2,title:"SetShuffle",slug:"setshuffle"}],lastUpdated:"10/21/2019, 8:39:03 AM"},{title:"Proxy Settings",frontmatter:{sidebar:!1},regularPath:"/web/proxy.html",relativePath:"web/proxy.md",key:"v-700fa4e1",path:"/web/proxy.html",lastUpdated:"10/21/2019, 8:39:03 AM"},{title:"Profiles",frontmatter:{},regularPath:"/web/profiles.html",relativePath:"web/profiles.md",key:"v-86daa2ba",path:"/web/profiles.html",headers:[{level:2,title:"GetPrivateProfile",slug:"getprivateprofile"},{level:2,title:"GetPublicProfile",slug:"getpublicprofile"}],lastUpdated:"10/21/2019, 8:39:03 AM"},{title:"Tracks",frontmatter:{},regularPath:"/web/tracks.html",relativePath:"web/tracks.md",key:"v-2f539db2",path:"/web/tracks.html",headers:[{level:2,title:"GetSeveralTracks",slug:"getseveraltracks"},{level:2,title:"GetTrack",slug:"gettrack"},{level:2,title:"GetAudioAnalysis",slug:"getaudioanalysis"}],lastUpdated:"10/21/2019, 8:39:03 AM"},{title:"Utilities",frontmatter:{},regularPath:"/web/utils.html",relativePath:"web/utils.md",key:"v-1edba7fe",path:"/web/utils.html",headers:[{level:2,title:"Paging-Methods",slug:"paging-methods"}],lastUpdated:"10/21/2019, 8:39:03 AM"},{title:"Search",frontmatter:{},regularPath:"/web/search.html",relativePath:"web/search.md",key:"v-fe729232",path:"/web/search.html",headers:[{level:2,title:"SearchItems",slug:"searchitems"},{level:2,title:"SearchItemsEscaped",slug:"searchitemsescaped"}],lastUpdated:"10/21/2019, 8:39:03 AM"},{title:"Playlists",frontmatter:{},regularPath:"/web/playlists.html",relativePath:"web/playlists.md",key:"v-1e493801",path:"/web/playlists.html",headers:[{level:2,title:"GetUserPlaylists",slug:"getuserplaylists"},{level:2,title:"GetPlaylist",slug:"getplaylist"},{level:2,title:"GetPlaylistTracks",slug:"getplaylisttracks"},{level:2,title:"CreatePlaylist",slug:"createplaylist"},{level:2,title:"UpdatePlaylist",slug:"updateplaylist"},{level:2,title:"ReplacePlaylistTracks",slug:"replaceplaylisttracks"},{level:2,title:"RemovePlaylistTracks",slug:"removeplaylisttracks"},{level:2,title:"RemovePlaylistTrack",slug:"removeplaylisttrack"},{level:2,title:"AddPlaylistTracks",slug:"addplaylisttracks"},{level:2,title:"AddPlaylistTrack",slug:"addplaylisttrack"},{level:2,title:"ReorderPlaylist",slug:"reorderplaylist"}],lastUpdated:"10/21/2019, 8:39:03 AM"}],themeConfig:{repo:"JohnnyCrazy/SpotifyAPI-NET",repoLabel:"🚀 GitHub",docsDir:"SpotifyAPI.Docs/docs",editLinks:!0,editLinkText:"Help us improve this page!",sidebar:"auto",sidebarDepth:0,lastUpdated:"Last Updated",serviceWorker:{updatePopup:!0},nav:[{text:"Home",link:"/"},{text:"SpotifyAPI.Web",items:[{text:"Getting Started",link:"/web/getting_started"},{text:"Examples",link:"/web/examples"},{text:"Proxy",link:"/web/proxy"},{text:"- Albums",link:"/web/albums"},{text:"- Artists",link:"/web/artists"},{text:"- Browse",link:"/web/browse"},{text:"- Follow",link:"/web/follow"},{text:"- Library",link:"/web/library"},{text:"- Personalization",link:"/web/personalization"},{text:"- Player",link:"/web/player"},{text:"- Playlists",link:"/web/playlists"},{text:"- Profiles",link:"/web/profiles"},{text:"- Search",link:"/web/search"},{text:"- Tracks",link:"/web/tracks"},{text:"Utilities",link:"/web/utils"}]},{text:"SpotifyAPI.Auth",items:[{text:"Getting Started",link:"/auth/getting_started"},{text:"- ImplicitGrantAuth",link:"/auth/implicit_grant"},{text:"- TokenSwapAuth",link:"/auth/token_swap"},{text:"- AutorizationCodeAuth",link:"/auth/authorization_code"},{text:"- ClientCredentialsAuth",link:"/auth/client_credentials"}]}]}};n(5);No.component("Badge",()=>Promise.all([n.e(0),n.e(3)]).then(n.bind(null,207)));n(6);var es=[{},({Vue:t})=>{t.mixin({computed:{$dataBlock(){return this.$options.__data__block__}}})},{},{}],ns=[];class rs{constructor(){this.store=new No({data:{state:{}}})}$get(t){return this.store.state[t]}$set(t,e){No.set(this.store.state,t,e)}$emit(...t){this.store.$emit(...t)}$on(...t){this.store.$on(...t)}}class os extends rs{}Object.assign(os.prototype,{getPageAsyncComponent:Ua,getLayoutAsyncComponent:Da,getAsyncComponent:Na,getVueComponent:Fa});var is={install(t){const e=new os;t.$vuepress=e,t.prototype.$vuepress=e}};function as(t,e){return t.options.routes.filter(t=>t.path.toLowerCase()===e.toLowerCase()).length>0}var ss={props:{pageKey:String,slotKey:{type:String,default:"default"}},render(t){const e=this.pageKey||this.$parent.$page.key;return Ba("pageKey",e),No.component(e)||No.component(e,Ua(e)),No.component(e)?t(e):t("")}},ls={functional:!0,props:{slotKey:String,required:!0},render:(t,{props:e,slots:n})=>t("div",{class:[`content__${e.slotKey}`]},n()[e.slotKey])},cs=(n(7),Object(Ya.a)({},function(t,e){var n=e._c;return n("svg",{staticClass:"icon outbound",attrs:{xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",x:"0px",y:"0px",viewBox:"0 0 100 100",width:"15",height:"15"}},[n("path",{attrs:{fill:"currentColor",d:"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"}}),e._v(" "),n("polygon",{attrs:{fill:"currentColor",points:"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"}})])},[],!0,null,null,null).exports),us={functional:!0,render(t,{parent:e,children:n}){if(e._isMounted)return n;e.$once("hook:mounted",()=>{e.$forceUpdate()})}};No.config.productionTip=!1,No.use(ka),No.use(is),No.mixin(function(t,e,n=No){!function(t){t.locales&&Object.keys(t.locales).forEach(e=>{t.locales[e].path=e});Object.freeze(t)}(e),n.$vuepress.$set("siteData",e);const r=new(t(n.$vuepress.$get("siteData"))),o=Object.getOwnPropertyDescriptors(Object.getPrototypeOf(r)),i={};return Object.keys(o).reduce((t,e)=>(e.startsWith("$")&&(t[e]=o[e].get),t),i),{computed:i}}(t=>(class{setPage(t){this.__page=t}get $site(){return t}get $themeConfig(){return this.$site.themeConfig}get $frontmatter(){return this.$page.frontmatter}get $localeConfig(){const{locales:t={}}=this.$site;let e,n;for(const r in t)"/"===r?n=t[r]:0===this.$page.path.indexOf(r)&&(e=t[r]);return e||n||{}}get $siteTitle(){return this.$localeConfig.title||this.$site.title||""}get $title(){const t=this.$page,{metaTitle:e}=this.$page.frontmatter;if("string"==typeof e)return e;const n=this.$siteTitle,r=t.frontmatter.home?null:t.frontmatter.title||t.title;return n?r?r+" | "+n:n:r||"VuePress"}get $description(){const t=function(t){if(t){const e=t.filter(t=>"description"===t.name)[0];if(e)return e.content}}(this.$page.frontmatter.meta);return t||(this.$page.frontmatter.description||this.$localeConfig.description||this.$site.description||"")}get $lang(){return this.$page.frontmatter.lang||this.$localeConfig.lang||"en-US"}get $localePath(){return this.$localeConfig.path||"/"}get $themeLocaleConfig(){return(this.$site.themeConfig.locales||{})[this.$localePath]||{}}get $page(){return this.__page?this.__page:function(t,e){for(let n=0;nn||(t.hash?!No.$vuepress.$get("disableScrollBehavior")&&{selector:t.hash}:{x:0,y:0})});!function(t){t.beforeEach((e,n,r)=>{if(as(t,e.path))r();else if(/(\/|\.html)$/.test(e.path))if(/\/$/.test(e.path)){const n=e.path.replace(/\/$/,"")+".html";as(t,n)?r(n):r()}else r();else{const n=e.path+"/",o=e.path+".html";as(t,o)?r(o):as(t,n)?r(n):r()}})}(n);const r={};try{es.forEach(e=>{"function"==typeof e&&e({Vue:No,options:r,router:n,siteData:ts,isServer:t})})}catch(t){console.error(t)}return{app:new No(Object.assign(r,{router:n,render:t=>t("div",{attrs:{id:"app"}},[t("router-view",{ref:"layout"}),t("div",{class:"global-ui"},ns.map(e=>t(e)))])})),router:n}}(!1);window.__VUEPRESS__={version:"1.0.3",hash:"7b08f7c"},ps.onReady(()=>{fs.$mount("#app")})}]); \ No newline at end of file + */function Fo(t){return Object.prototype.toString.call(t).indexOf("Error")>-1}function zo(t,e){return e instanceof t||e&&(e.name===t.name||e._name===t._name)}function Bo(t,e){for(var n in e)t[n]=e[n];return t}var Vo={name:"RouterView",functional:!0,props:{name:{type:String,default:"default"}},render:function(t,e){var n=e.props,r=e.children,o=e.parent,i=e.data;i.routerView=!0;for(var a=o.$createElement,s=n.name,l=o.$route,c=o._routerViewCache||(o._routerViewCache={}),u=0,f=!1;o&&o._routerRoot!==o;){var p=o.$vnode&&o.$vnode.data;p&&(p.routerView&&u++,p.keepAlive&&o._inactive&&(f=!0)),o=o.$parent}if(i.routerViewDepth=u,f)return a(c[s],i,r);var d=l.matched[u];if(!d)return c[s]=null,a();var h=c[s]=d.components[s];i.registerRouteInstance=function(t,e){var n=d.instances[s];(e&&n!==t||!e&&n===t)&&(d.instances[s]=e)},(i.hook||(i.hook={})).prepatch=function(t,e){d.instances[s]=e.componentInstance},i.hook.init=function(t){t.data.keepAlive&&t.componentInstance&&t.componentInstance!==d.instances[s]&&(d.instances[s]=t.componentInstance)};var v=i.props=function(t,e){switch(typeof e){case"undefined":return;case"object":return e;case"function":return e(t);case"boolean":return e?t.params:void 0;default:0}}(l,d.props&&d.props[s]);if(v){v=i.props=Bo({},v);var m=i.attrs=i.attrs||{};for(var y in v)h.props&&y in h.props||(m[y]=v[y],delete v[y])}return a(h,i,r)}};var Go=/[!'()*]/g,Ho=function(t){return"%"+t.charCodeAt(0).toString(16)},qo=/%2C/g,Wo=function(t){return encodeURIComponent(t).replace(Go,Ho).replace(qo,",")},Ko=decodeURIComponent;function Xo(t){var e={};return(t=t.trim().replace(/^(\?|#|&)/,""))?(t.split("&").forEach(function(t){var n=t.replace(/\+/g," ").split("="),r=Ko(n.shift()),o=n.length>0?Ko(n.join("=")):null;void 0===e[r]?e[r]=o:Array.isArray(e[r])?e[r].push(o):e[r]=[e[r],o]}),e):e}function Jo(t){var e=t?Object.keys(t).map(function(e){var n=t[e];if(void 0===n)return"";if(null===n)return Wo(e);if(Array.isArray(n)){var r=[];return n.forEach(function(t){void 0!==t&&(null===t?r.push(Wo(e)):r.push(Wo(e)+"="+Wo(t)))}),r.join("&")}return Wo(e)+"="+Wo(n)}).filter(function(t){return t.length>0}).join("&"):null;return e?"?"+e:""}var Yo=/\/?$/;function Zo(t,e,n,r){var o=r&&r.options.stringifyQuery,i=e.query||{};try{i=Qo(i)}catch(t){}var a={name:e.name||t&&t.name,meta:t&&t.meta||{},path:e.path||"/",hash:e.hash||"",query:i,params:e.params||{},fullPath:ni(e,o),matched:t?ei(t):[]};return n&&(a.redirectedFrom=ni(n,o)),Object.freeze(a)}function Qo(t){if(Array.isArray(t))return t.map(Qo);if(t&&"object"==typeof t){var e={};for(var n in t)e[n]=Qo(t[n]);return e}return t}var ti=Zo(null,{path:"/"});function ei(t){for(var e=[];t;)e.unshift(t),t=t.parent;return e}function ni(t,e){var n=t.path,r=t.query;void 0===r&&(r={});var o=t.hash;return void 0===o&&(o=""),(n||"/")+(e||Jo)(r)+o}function ri(t,e){return e===ti?t===e:!!e&&(t.path&&e.path?t.path.replace(Yo,"")===e.path.replace(Yo,"")&&t.hash===e.hash&&oi(t.query,e.query):!(!t.name||!e.name)&&(t.name===e.name&&t.hash===e.hash&&oi(t.query,e.query)&&oi(t.params,e.params)))}function oi(t,e){if(void 0===t&&(t={}),void 0===e&&(e={}),!t||!e)return t===e;var n=Object.keys(t),r=Object.keys(e);return n.length===r.length&&n.every(function(n){var r=t[n],o=e[n];return"object"==typeof r&&"object"==typeof o?oi(r,o):String(r)===String(o)})}function ii(t,e,n){var r=t.charAt(0);if("/"===r)return t;if("?"===r||"#"===r)return e+t;var o=e.split("/");n&&o[o.length-1]||o.pop();for(var i=t.replace(/^\//,"").split("/"),a=0;a=0&&(e=t.slice(r),t=t.slice(0,r));var o=t.indexOf("?");return o>=0&&(n=t.slice(o+1),t=t.slice(0,o)),{path:t,query:n,hash:e}}(o.path||""),l=e&&e.path||"/",c=s.path?ii(s.path,l,n||o.append):l,u=function(t,e,n){void 0===e&&(e={});var r,o=n||Xo;try{r=o(t||"")}catch(t){r={}}for(var i in e)r[i]=e[i];return r}(s.query,o.query,r&&r.options.parseQuery),f=o.hash||s.hash;return f&&"#"!==f.charAt(0)&&(f="#"+f),{_normalized:!0,path:c,query:u,hash:f}}var Ci,Si=[String,Object],Oi=[String,Array],Ei=function(){},Pi={name:"RouterLink",props:{to:{type:Si,required:!0},tag:{type:String,default:"a"},exact:Boolean,append:Boolean,replace:Boolean,activeClass:String,exactActiveClass:String,event:{type:Oi,default:"click"}},render:function(t){var e=this,n=this.$router,r=this.$route,o=n.resolve(this.to,r,this.append),i=o.location,a=o.route,s=o.href,l={},c=n.options.linkActiveClass,u=n.options.linkExactActiveClass,f=null==c?"router-link-active":c,p=null==u?"router-link-exact-active":u,d=null==this.activeClass?f:this.activeClass,h=null==this.exactActiveClass?p:this.exactActiveClass,v=a.redirectedFrom?Zo(null,Ai(a.redirectedFrom),null,n):a;l[h]=ri(r,v),l[d]=this.exact?l[h]:function(t,e){return 0===t.path.replace(Yo,"/").indexOf(e.path.replace(Yo,"/"))&&(!e.hash||t.hash===e.hash)&&function(t,e){for(var n in e)if(!(n in t))return!1;return!0}(t.query,e.query)}(r,v);var m=function(t){Ti(t)&&(e.replace?n.replace(i,Ei):n.push(i,Ei))},y={click:Ti};Array.isArray(this.event)?this.event.forEach(function(t){y[t]=m}):y[this.event]=m;var g={class:l},b=!this.$scopedSlots.$hasNormal&&this.$scopedSlots.default&&this.$scopedSlots.default({href:s,route:a,navigate:m,isActive:l[d],isExactActive:l[h]});if(b){if(1===b.length)return b[0];if(b.length>1||!b.length)return 0===b.length?t():t("span",{},b)}if("a"===this.tag)g.on=y,g.attrs={href:s};else{var _=function t(e){if(e)for(var n,r=0;r-1&&(s.params[p]=n.params[p]);return s.path=xi(u.path,s.params),l(u,s,a)}if(s.path){s.params={};for(var d=0;d=t.length?n():t[o]?e(t[o],function(){r(o+1)}):r(o+1)};r(0)}function ea(t){return function(e,n,r){var o=!1,i=0,a=null;na(t,function(t,e,n,s){if("function"==typeof t&&void 0===t.cid){o=!0,i++;var l,c=ia(function(e){var o;((o=e).__esModule||oa&&"Module"===o[Symbol.toStringTag])&&(e=e.default),t.resolved="function"==typeof e?e:Ci.extend(e),n.components[s]=e,--i<=0&&r()}),u=ia(function(t){var e="Failed to resolve async component "+s+": "+t;a||(a=Fo(t)?t:new Error(e),r(a))});try{l=t(c,u)}catch(t){u(t)}if(l)if("function"==typeof l.then)l.then(c,u);else{var f=l.component;f&&"function"==typeof f.then&&f.then(c,u)}}}),o||r()}}function na(t,e){return ra(t.map(function(t){return Object.keys(t.components).map(function(n){return e(t.components[n],t.instances[n],t,n)})}))}function ra(t){return Array.prototype.concat.apply([],t)}var oa="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag;function ia(t){var e=!1;return function(){for(var n=[],r=arguments.length;r--;)n[r]=arguments[r];if(!e)return e=!0,t.apply(this,n)}}var aa=function(t){function e(){t.call(this,"Navigating to current location is not allowed"),this.name=this._name="NavigationDuplicated"}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(Error);aa._name="NavigationDuplicated";var sa=function(t,e){this.router=t,this.base=function(t){if(!t)if(ji){var e=document.querySelector("base");t=(t=e&&e.getAttribute("href")||"/").replace(/^https?:\/\/[^\/]+/,"")}else t="/";"/"!==t.charAt(0)&&(t="/"+t);return t.replace(/\/$/,"")}(e),this.current=ti,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[]};function la(t,e,n,r){var o=na(t,function(t,r,o,i){var a=function(t,e){"function"!=typeof t&&(t=Ci.extend(t));return t.options[e]}(t,e);if(a)return Array.isArray(a)?a.map(function(t){return n(t,r,o,i)}):n(a,r,o,i)});return ra(r?o.reverse():o)}function ca(t,e){if(e)return function(){return t.apply(e,arguments)}}sa.prototype.listen=function(t){this.cb=t},sa.prototype.onReady=function(t,e){this.ready?t():(this.readyCbs.push(t),e&&this.readyErrorCbs.push(e))},sa.prototype.onError=function(t){this.errorCbs.push(t)},sa.prototype.transitionTo=function(t,e,n){var r=this,o=this.router.match(t,this.current);this.confirmTransition(o,function(){r.updateRoute(o),e&&e(o),r.ensureURL(),r.ready||(r.ready=!0,r.readyCbs.forEach(function(t){t(o)}))},function(t){n&&n(t),t&&!r.ready&&(r.ready=!0,r.readyErrorCbs.forEach(function(e){e(t)}))})},sa.prototype.confirmTransition=function(t,e,n){var r=this,o=this.current,i=function(t){!zo(aa,t)&&Fo(t)&&(r.errorCbs.length?r.errorCbs.forEach(function(e){e(t)}):console.error(t)),n&&n(t)};if(ri(t,o)&&t.matched.length===o.matched.length)return this.ensureURL(),i(new aa(t));var a=function(t,e){var n,r=Math.max(t.length,e.length);for(n=0;n-1?decodeURI(t.slice(0,r))+t.slice(r):decodeURI(t)}else n>-1&&(t=decodeURI(t.slice(0,n))+t.slice(n));return t}function va(t){var e=window.location.href,n=e.indexOf("#");return(n>=0?e.slice(0,n):e)+"#"+t}function ma(t){Wi?Zi(va(t)):window.location.hash=t}function ya(t){Wi?Qi(va(t)):window.location.replace(va(t))}var ga=function(t){function e(e,n){t.call(this,e,n),this.stack=[],this.index=-1}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.push=function(t,e,n){var r=this;this.transitionTo(t,function(t){r.stack=r.stack.slice(0,r.index+1).concat(t),r.index++,e&&e(t)},n)},e.prototype.replace=function(t,e,n){var r=this;this.transitionTo(t,function(t){r.stack=r.stack.slice(0,r.index).concat(t),e&&e(t)},n)},e.prototype.go=function(t){var e=this,n=this.index+t;if(!(n<0||n>=this.stack.length)){var r=this.stack[n];this.confirmTransition(r,function(){e.index=n,e.updateRoute(r)},function(t){zo(aa,t)&&(e.index=n)})}},e.prototype.getCurrentLocation=function(){var t=this.stack[this.stack.length-1];return t?t.fullPath:"/"},e.prototype.ensureURL=function(){},e}(sa),ba=function(t){void 0===t&&(t={}),this.app=null,this.apps=[],this.options=t,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=Ii(t.routes||[],this);var e=t.mode||"hash";switch(this.fallback="history"===e&&!Wi&&!1!==t.fallback,this.fallback&&(e="hash"),ji||(e="abstract"),this.mode=e,e){case"history":this.history=new ua(this,t.base);break;case"hash":this.history=new pa(this,t.base,this.fallback);break;case"abstract":this.history=new ga(this,t.base);break;default:0}},_a={currentRoute:{configurable:!0}};function wa(t,e){return t.push(e),function(){var n=t.indexOf(e);n>-1&&t.splice(n,1)}}ba.prototype.match=function(t,e,n){return this.matcher.match(t,e,n)},_a.currentRoute.get=function(){return this.history&&this.history.current},ba.prototype.init=function(t){var e=this;if(this.apps.push(t),t.$once("hook:destroyed",function(){var n=e.apps.indexOf(t);n>-1&&e.apps.splice(n,1),e.app===t&&(e.app=e.apps[0]||null)}),!this.app){this.app=t;var n=this.history;if(n instanceof ua)n.transitionTo(n.getCurrentLocation());else if(n instanceof pa){var r=function(){n.setupListeners()};n.transitionTo(n.getCurrentLocation(),r,r)}n.listen(function(t){e.apps.forEach(function(e){e._route=t})})}},ba.prototype.beforeEach=function(t){return wa(this.beforeHooks,t)},ba.prototype.beforeResolve=function(t){return wa(this.resolveHooks,t)},ba.prototype.afterEach=function(t){return wa(this.afterHooks,t)},ba.prototype.onReady=function(t,e){this.history.onReady(t,e)},ba.prototype.onError=function(t){this.history.onError(t)},ba.prototype.push=function(t,e,n){var r=this;if(!e&&!n&&"undefined"!=typeof Promise)return new Promise(function(e,n){r.history.push(t,e,n)});this.history.push(t,e,n)},ba.prototype.replace=function(t,e,n){var r=this;if(!e&&!n&&"undefined"!=typeof Promise)return new Promise(function(e,n){r.history.replace(t,e,n)});this.history.replace(t,e,n)},ba.prototype.go=function(t){this.history.go(t)},ba.prototype.back=function(){this.go(-1)},ba.prototype.forward=function(){this.go(1)},ba.prototype.getMatchedComponents=function(t){var e=t?t.matched?t:this.resolve(t).route:this.currentRoute;return e?[].concat.apply([],e.matched.map(function(t){return Object.keys(t.components).map(function(e){return t.components[e]})})):[]},ba.prototype.resolve=function(t,e,n){var r=Ai(t,e=e||this.history.current,n,this),o=this.match(r,e),i=o.redirectedFrom||o.fullPath;return{location:r,route:o,href:function(t,e,n){var r="hash"===n?"#"+e:e;return t?ai(t+"/"+r):r}(this.history.base,i,this.mode),normalizedTo:r,resolved:o}},ba.prototype.addRoutes=function(t){this.matcher.addRoutes(t),this.history.current!==ti&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(ba.prototype,_a),ba.install=function t(e){if(!t.installed||Ci!==e){t.installed=!0,Ci=e;var n=function(t){return void 0!==t},r=function(t,e){var r=t.$options._parentVnode;n(r)&&n(r=r.data)&&n(r=r.registerRouteInstance)&&r(t,e)};e.mixin({beforeCreate:function(){n(this.$options.router)?(this._routerRoot=this,this._router=this.$options.router,this._router.init(this),e.util.defineReactive(this,"_route",this._router.history.current)):this._routerRoot=this.$parent&&this.$parent._routerRoot||this,r(this,this)},destroyed:function(){r(this)}}),Object.defineProperty(e.prototype,"$router",{get:function(){return this._routerRoot._router}}),Object.defineProperty(e.prototype,"$route",{get:function(){return this._routerRoot._route}}),e.component("RouterView",Vo),e.component("RouterLink",Pi);var o=e.config.optionMergeStrategies;o.beforeRouteEnter=o.beforeRouteLeave=o.beforeRouteUpdate=o.created}},ba.version="3.1.2",ji&&window.Vue&&window.Vue.use(ba);var ka=ba;var $a={NotFound:()=>n.e(4).then(n.bind(null,185)),Layout:()=>Promise.all([n.e(0),n.e(2)]).then(n.bind(null,184))},xa={"v-f88195a6":()=>n.e(5).then(n.bind(null,186)),"v-0f125dbb":()=>n.e(6).then(n.bind(null,187)),"v-5127c24a":()=>n.e(7).then(n.bind(null,188)),"v-bc26f6ca":()=>n.e(9).then(n.bind(null,189)),"v-15ae477b":()=>n.e(10).then(n.bind(null,190)),"v-79c557ae":()=>n.e(8).then(n.bind(null,191)),"v-e2943322":()=>n.e(11).then(n.bind(null,192)),"v-9b504b3e":()=>n.e(12).then(n.bind(null,193)),"v-3896b323":()=>n.e(13).then(n.bind(null,194)),"v-ae731ab6":()=>n.e(14).then(n.bind(null,195)),"v-545731d5":()=>n.e(15).then(n.bind(null,196)),"v-5cda54a1":()=>n.e(16).then(n.bind(null,197)),"v-24570241":()=>n.e(17).then(n.bind(null,198)),"v-7499233e":()=>n.e(18).then(n.bind(null,199)),"v-86daa2ba":()=>n.e(21).then(n.bind(null,200)),"v-26737916":()=>n.e(19).then(n.bind(null,201)),"v-fe729232":()=>n.e(23).then(n.bind(null,202)),"v-700fa4e1":()=>n.e(22).then(n.bind(null,203)),"v-2f539db2":()=>n.e(24).then(n.bind(null,204)),"v-1edba7fe":()=>n.e(25).then(n.bind(null,205)),"v-1e493801":()=>n.e(20).then(n.bind(null,206))};function Aa(t){const e=Object.create(null);return function(n){return e[n]||(e[n]=t(n))}}const Ca=/-(\w)/g,Sa=Aa(t=>t.replace(Ca,(t,e)=>e?e.toUpperCase():"")),Oa=/\B([A-Z])/g,Ea=Aa(t=>t.replace(Oa,"-$1").toLowerCase()),Pa=Aa(t=>t.charAt(0).toUpperCase()+t.slice(1));function Ta(t,e){if(!e)return;if(t(e))return t(e);return e.includes("-")?t(Pa(Sa(e))):t(Pa(e))||t(Ea(e))}const ja=Object.assign({},$a,xa),La=t=>ja[t],Ra=t=>xa[t],Ia=t=>$a[t],Ma=t=>No.component(t);function Ua(t){return Ta(Ra,t)}function Da(t){return Ta(Ia,t)}function Na(t){return Ta(La,t)}function Fa(t){return Ta(Ma,t)}function za(...t){return Promise.all(t.filter(t=>t).map(async t=>{if(!Fa(t)&&Na(t)){const e=await Na(t)();No.component(t,e.default)}}))}function Ba(t,e){"undefined"!=typeof window&&window.__VUEPRESS__&&(window.__VUEPRESS__[t]=e)}var Va={created(){this.$ssrContext&&(this.$ssrContext.title=this.$title,this.$ssrContext.lang=this.$lang,this.$ssrContext.description=this.$page.description||this.$description)},mounted(){this.currentMetaTags=new Set,this.updateMeta()},methods:{updateMeta(){document.title=this.$title,document.documentElement.lang=this.$lang;const t=this.$page.frontmatter.meta||[],e=t.slice(0);0===t.filter(t=>"description"===t.name).length&&e.push({name:"description",content:this.$description});const n=document.querySelectorAll('meta[name="description"]');n.length&&n.forEach(t=>this.currentMetaTags.add(t)),this.currentMetaTags=new Set(Ga(e,this.currentMetaTags))}},watch:{$page(){this.updateMeta()}},beforeDestroy(){Ga(null,this.currentMetaTags)}};function Ga(t,e){if(e&&[...e].forEach(t=>{document.head.removeChild(t)}),t)return t.map(t=>{const e=document.createElement("meta");return Object.keys(t).forEach(n=>{e.setAttribute(n,t[n])}),document.head.appendChild(e),e})}var Ha=n(3),qa={mounted(){window.addEventListener("scroll",this.onScroll)},methods:{onScroll:n.n(Ha)()(function(){this.setActiveHash()},300),setActiveHash(){const t=[].slice.call(document.querySelectorAll(".sidebar-link")),e=[].slice.call(document.querySelectorAll(".header-anchor")).filter(e=>t.some(t=>t.hash===e.hash)),n=Math.max(window.pageYOffset,document.documentElement.scrollTop,document.body.scrollTop),r=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight),o=window.innerHeight+n;for(let t=0;t=i.parentElement.offsetTop+10&&(!a||n{this.$nextTick(()=>{this.$vuepress.$set("disableScrollBehavior",!1)})})}}}},beforeDestroy(){window.removeEventListener("scroll",this.onScroll)}},Wa=n(2),Ka=n.n(Wa),Xa=[Va,qa,{mounted(){Ka.a.configure({showSpinner:!1}),this.$router.beforeEach((t,e,n)=>{t.path===e.path||No.component(t.name)||Ka.a.start(),n()}),this.$router.afterEach(()=>{Ka.a.done(),this.isSidebarOpen=!1})}}],Ja={methods:{getLayout:function(){if(this.$page.path){var t=this.$page.frontmatter.layout;return t&&(this.$vuepress.getLayoutAsyncComponent(t)||this.$vuepress.getVueComponent(t))?t:"Layout"}return"NotFound"}},computed:{layout:function(){var t=this.getLayout();return Ba("layout",t),No.component(t)}}},Ya=n(0),Za=Object(Ya.a)(Ja,function(){var t=this.$createElement;return(this._self._c||t)(this.layout,{tag:"component"})},[],!1,null,null,null).exports;!function(t,e,n){switch(e){case"components":t[e]||(t[e]={}),Object.assign(t[e],n);break;case"mixins":t[e]||(t[e]=[]),t[e].push(...n);break;default:throw new Error("Unknown option name.")}}(Za,"mixins",Xa);const Qa=[{name:"v-f88195a6",path:"/",component:Za,beforeEnter:(t,e,n)=>{za("Layout","v-f88195a6").then(n)}},{path:"/index.html",redirect:"/"},{name:"v-0f125dbb",path:"/auth/authorization_code.html",component:Za,beforeEnter:(t,e,n)=>{za("Layout","v-0f125dbb").then(n)}},{name:"v-5127c24a",path:"/auth/client_credentials.html",component:Za,beforeEnter:(t,e,n)=>{za("Layout","v-5127c24a").then(n)}},{name:"v-bc26f6ca",path:"/auth/implicit_grant.html",component:Za,beforeEnter:(t,e,n)=>{za("Layout","v-bc26f6ca").then(n)}},{name:"v-15ae477b",path:"/auth/token_swap.html",component:Za,beforeEnter:(t,e,n)=>{za("Layout","v-15ae477b").then(n)}},{name:"v-79c557ae",path:"/auth/getting_started.html",component:Za,beforeEnter:(t,e,n)=>{za("Layout","v-79c557ae").then(n)}},{name:"v-e2943322",path:"/web/albums.html",component:Za,beforeEnter:(t,e,n)=>{za("Layout","v-e2943322").then(n)}},{name:"v-9b504b3e",path:"/web/artists.html",component:Za,beforeEnter:(t,e,n)=>{za("Layout","v-9b504b3e").then(n)}},{name:"v-3896b323",path:"/web/browse.html",component:Za,beforeEnter:(t,e,n)=>{za("Layout","v-3896b323").then(n)}},{name:"v-ae731ab6",path:"/web/examples.html",component:Za,beforeEnter:(t,e,n)=>{za("Layout","v-ae731ab6").then(n)}},{name:"v-545731d5",path:"/web/follow.html",component:Za,beforeEnter:(t,e,n)=>{za("Layout","v-545731d5").then(n)}},{name:"v-5cda54a1",path:"/web/getting_started.html",component:Za,beforeEnter:(t,e,n)=>{za("Layout","v-5cda54a1").then(n)}},{name:"v-24570241",path:"/web/library.html",component:Za,beforeEnter:(t,e,n)=>{za("Layout","v-24570241").then(n)}},{name:"v-7499233e",path:"/web/personalization.html",component:Za,beforeEnter:(t,e,n)=>{za("Layout","v-7499233e").then(n)}},{name:"v-86daa2ba",path:"/web/profiles.html",component:Za,beforeEnter:(t,e,n)=>{za("Layout","v-86daa2ba").then(n)}},{name:"v-26737916",path:"/web/player.html",component:Za,beforeEnter:(t,e,n)=>{za("Layout","v-26737916").then(n)}},{name:"v-fe729232",path:"/web/search.html",component:Za,beforeEnter:(t,e,n)=>{za("Layout","v-fe729232").then(n)}},{name:"v-700fa4e1",path:"/web/proxy.html",component:Za,beforeEnter:(t,e,n)=>{za("Layout","v-700fa4e1").then(n)}},{name:"v-2f539db2",path:"/web/tracks.html",component:Za,beforeEnter:(t,e,n)=>{za("Layout","v-2f539db2").then(n)}},{name:"v-1edba7fe",path:"/web/utils.html",component:Za,beforeEnter:(t,e,n)=>{za("Layout","v-1edba7fe").then(n)}},{name:"v-1e493801",path:"/web/playlists.html",component:Za,beforeEnter:(t,e,n)=>{za("Layout","v-1e493801").then(n)}},{path:"*",component:Za}],ts={title:"SpotifyAPI-NET",description:"🔉 An API for the Spotify-Client and the Spotify Web API, written in C#/.NET",base:"/SpotifyAPI-NET/",pages:[{title:"SpotifyAPI-NET Docs",frontmatter:{},regularPath:"/",relativePath:"README.md",key:"v-f88195a6",path:"/",headers:[{level:2,title:"About",slug:"about"},{level:2,title:"Installing",slug:"installing"},{level:2,title:"Getting Started",slug:"getting-started"},{level:2,title:"Projects",slug:"projects"},{level:3,title:"audio-band](https://github.com/dsafa/audio-band) by [@dsafa",slug:"audio-band-by-dsafa"},{level:3,title:"rocksmith-custom-song-toolkit](https://github.com/catara/rocksmith-custom-song-toolkit) by [@catara",slug:"rocksmith-custom-song-toolkit-by-catara"},{level:3,title:"Spofy](https://github.com/eltoncezar/Spofy) by [@eltoncezar",slug:"spofy-by-eltoncezar"},{level:3,title:"Toastify](https://github.com/aleab/toastify) by [@aleab",slug:"toastify-by-aleab"},{level:3,title:"Spotify Oculus](https://github.com/CaptainMorgs/spotify-oculus-release) by [@CaptainMorgs",slug:"spotify-oculus-by-captainmorgs"}],lastUpdated:"11/11/2019, 7:27:39 AM"},{title:"AutorizationCodeAuth",frontmatter:{sidebar:!1},regularPath:"/auth/authorization_code.html",relativePath:"auth/authorization_code.md",key:"v-0f125dbb",path:"/auth/authorization_code.html",lastUpdated:"11/11/2019, 7:27:39 AM"},{title:"ClientCredentialsAuth",frontmatter:{sidebar:!1},regularPath:"/auth/client_credentials.html",relativePath:"auth/client_credentials.md",key:"v-5127c24a",path:"/auth/client_credentials.html",lastUpdated:"11/11/2019, 7:27:39 AM"},{title:"ImplicitGrantAuth",frontmatter:{sidebar:!1},regularPath:"/auth/implicit_grant.html",relativePath:"auth/implicit_grant.md",key:"v-bc26f6ca",path:"/auth/implicit_grant.html",lastUpdated:"11/11/2019, 7:27:39 AM"},{title:"TokenSwapAuth",frontmatter:{},regularPath:"/auth/token_swap.html",relativePath:"auth/token_swap.md",key:"v-15ae477b",path:"/auth/token_swap.html",headers:[{level:2,title:"Using TokenSwapWebAPIFactory",slug:"using-tokenswapwebapifactory"},{level:2,title:"Using TokenSwapAuth",slug:"using-tokenswapauth"},{level:2,title:"Token Swap Endpoint",slug:"token-swap-endpoint"},{level:2,title:"Remarks",slug:"remarks"}],lastUpdated:"11/11/2019, 7:27:39 AM"},{title:"Getting Started",frontmatter:{},regularPath:"/auth/getting_started.html",relativePath:"auth/getting_started.md",key:"v-79c557ae",path:"/auth/getting_started.html",headers:[{level:2,title:"Auth-Methods",slug:"auth-methods"}],lastUpdated:"11/11/2019, 7:27:39 AM"},{title:"Albums",frontmatter:{},regularPath:"/web/albums.html",relativePath:"web/albums.md",key:"v-e2943322",path:"/web/albums.html",headers:[{level:2,title:"GetAlbumTracks",slug:"getalbumtracks"},{level:2,title:"GetAlbum",slug:"getalbum"},{level:2,title:"GetSeveralAlbums",slug:"getseveralalbums"}],lastUpdated:"11/11/2019, 7:27:39 AM"},{title:"Artists",frontmatter:{},regularPath:"/web/artists.html",relativePath:"web/artists.md",key:"v-9b504b3e",path:"/web/artists.html",headers:[{level:2,title:"GetArtist",slug:"getartist"},{level:2,title:"GetRelatedArtists",slug:"getrelatedartists"},{level:2,title:"GetArtistsTopTracks",slug:"getartiststoptracks"},{level:2,title:"GetArtistsAlbums",slug:"getartistsalbums"},{level:2,title:"GetSeveralArtists",slug:"getseveralartists"}],lastUpdated:"11/11/2019, 7:27:39 AM"},{title:"Browse",frontmatter:{},regularPath:"/web/browse.html",relativePath:"web/browse.md",key:"v-3896b323",path:"/web/browse.html",headers:[{level:2,title:"GetFeaturedPlaylists",slug:"getfeaturedplaylists"},{level:2,title:"GetNewAlbumReleases",slug:"getnewalbumreleases"},{level:2,title:"GetCategories",slug:"getcategories"},{level:2,title:"GetCategory",slug:"getcategory"},{level:2,title:"GetCategoryPlaylists",slug:"getcategoryplaylists"}],lastUpdated:"11/11/2019, 7:27:39 AM"},{title:"Examples",frontmatter:{sidebar:!1},regularPath:"/web/examples.html",relativePath:"web/examples.md",key:"v-ae731ab6",path:"/web/examples.html",lastUpdated:"11/11/2019, 7:27:39 AM"},{title:"Follow",frontmatter:{},regularPath:"/web/follow.html",relativePath:"web/follow.md",key:"v-545731d5",path:"/web/follow.html",headers:[{level:2,title:"Follow",slug:"follow-2"},{level:2,title:"Unfollow",slug:"unfollow"},{level:2,title:"IsFollowing",slug:"isfollowing"},{level:2,title:"FollowPlaylist",slug:"followplaylist"},{level:2,title:"UnfollowPlaylist",slug:"unfollowplaylist"},{level:2,title:"IsFollowingPlaylist",slug:"isfollowingplaylist"}],lastUpdated:"11/11/2019, 7:27:39 AM"},{title:"Getting Started",frontmatter:{sidebarDepth:2},regularPath:"/web/getting_started.html",relativePath:"web/getting_started.md",key:"v-5cda54a1",path:"/web/getting_started.html",headers:[{level:2,title:"First steps",slug:"first-steps"},{level:3,title:"Imports",slug:"imports"},{level:3,title:"Basic-Usage",slug:"basic-usage"},{level:2,title:"Examples",slug:"examples"},{level:2,title:"Error-Handling",slug:"error-handling"},{level:2,title:"Sync vs Asynchronous",slug:"sync-vs-asynchronous"},{level:2,title:"API-Reference",slug:"api-reference"},{level:3,title:"Albums",slug:"albums"},{level:3,title:"Artists",slug:"artists"},{level:3,title:"Browse",slug:"browse"},{level:3,title:"Follow",slug:"follow"},{level:3,title:"Library",slug:"library"},{level:3,title:"Personalization",slug:"personalization"},{level:3,title:"Player",slug:"player"},{level:3,title:"Playlists",slug:"playlists"},{level:3,title:"Profiles",slug:"profiles"},{level:3,title:"Search",slug:"search"},{level:3,title:"Tracks",slug:"tracks"},{level:3,title:"Util",slug:"util"}],lastUpdated:"11/11/2019, 7:27:39 AM"},{title:"Library",frontmatter:{},regularPath:"/web/library.html",relativePath:"web/library.md",key:"v-24570241",path:"/web/library.html",headers:[{level:2,title:"SaveTracks",slug:"savetracks"},{level:2,title:"SaveTrack",slug:"savetrack"},{level:2,title:"GetSavedTracks",slug:"getsavedtracks"},{level:2,title:"RemoveSavedTracks",slug:"removesavedtracks"},{level:2,title:"CheckSavedTracks",slug:"checksavedtracks"},{level:2,title:"SaveAlbums",slug:"savealbums"},{level:2,title:"SaveAlbum",slug:"savealbum"},{level:2,title:"GetSavedAlbums",slug:"getsavedalbums"},{level:2,title:"RemoveSavedAlbums",slug:"removesavedalbums"},{level:2,title:"CheckSavedAlbums",slug:"checksavedalbums"}],lastUpdated:"11/11/2019, 7:27:39 AM"},{title:"Personalization",frontmatter:{},regularPath:"/web/personalization.html",relativePath:"web/personalization.md",key:"v-7499233e",path:"/web/personalization.html",headers:[{level:2,title:"GetUsersTopTracks",slug:"getuserstoptracks"},{level:2,title:"GetUsersTopArtists",slug:"getuserstopartists"},{level:2,title:"GetUsersRecentlyPlayedTracks",slug:"getusersrecentlyplayedtracks"}],lastUpdated:"11/11/2019, 7:27:39 AM"},{title:"Profiles",frontmatter:{},regularPath:"/web/profiles.html",relativePath:"web/profiles.md",key:"v-86daa2ba",path:"/web/profiles.html",headers:[{level:2,title:"GetPrivateProfile",slug:"getprivateprofile"},{level:2,title:"GetPublicProfile",slug:"getpublicprofile"}],lastUpdated:"11/11/2019, 7:27:39 AM"},{title:"Player",frontmatter:{},regularPath:"/web/player.html",relativePath:"web/player.md",key:"v-26737916",path:"/web/player.html",headers:[{level:2,title:"GetDevices",slug:"getdevices"},{level:2,title:"GetPlayback",slug:"getplayback"},{level:2,title:"GetPlayingTrack",slug:"getplayingtrack"},{level:2,title:"TransferPlayback",slug:"transferplayback"},{level:2,title:"ResumePlayback",slug:"resumeplayback"},{level:2,title:"PausePlayback",slug:"pauseplayback"},{level:2,title:"SkipPlaybackToNext",slug:"skipplaybacktonext"},{level:2,title:"SkipPlaybackToPrevious",slug:"skipplaybacktoprevious"},{level:2,title:"SeekPlayback",slug:"seekplayback"},{level:2,title:"SetRepeatMode",slug:"setrepeatmode"},{level:2,title:"SetVolume",slug:"setvolume"},{level:2,title:"SetShuffle",slug:"setshuffle"}],lastUpdated:"11/11/2019, 7:27:39 AM"},{title:"Search",frontmatter:{},regularPath:"/web/search.html",relativePath:"web/search.md",key:"v-fe729232",path:"/web/search.html",headers:[{level:2,title:"SearchItems",slug:"searchitems"},{level:2,title:"SearchItemsEscaped",slug:"searchitemsescaped"}],lastUpdated:"11/11/2019, 7:27:39 AM"},{title:"Proxy Settings",frontmatter:{sidebar:!1},regularPath:"/web/proxy.html",relativePath:"web/proxy.md",key:"v-700fa4e1",path:"/web/proxy.html",lastUpdated:"11/11/2019, 7:27:39 AM"},{title:"Tracks",frontmatter:{},regularPath:"/web/tracks.html",relativePath:"web/tracks.md",key:"v-2f539db2",path:"/web/tracks.html",headers:[{level:2,title:"GetSeveralTracks",slug:"getseveraltracks"},{level:2,title:"GetTrack",slug:"gettrack"},{level:2,title:"GetAudioAnalysis",slug:"getaudioanalysis"}],lastUpdated:"11/11/2019, 7:27:39 AM"},{title:"Utilities",frontmatter:{},regularPath:"/web/utils.html",relativePath:"web/utils.md",key:"v-1edba7fe",path:"/web/utils.html",headers:[{level:2,title:"Paging-Methods",slug:"paging-methods"}],lastUpdated:"11/11/2019, 7:27:39 AM"},{title:"Playlists",frontmatter:{},regularPath:"/web/playlists.html",relativePath:"web/playlists.md",key:"v-1e493801",path:"/web/playlists.html",headers:[{level:2,title:"GetUserPlaylists",slug:"getuserplaylists"},{level:2,title:"GetPlaylist",slug:"getplaylist"},{level:2,title:"GetPlaylistTracks",slug:"getplaylisttracks"},{level:2,title:"CreatePlaylist",slug:"createplaylist"},{level:2,title:"UpdatePlaylist",slug:"updateplaylist"},{level:2,title:"ReplacePlaylistTracks",slug:"replaceplaylisttracks"},{level:2,title:"RemovePlaylistTracks",slug:"removeplaylisttracks"},{level:2,title:"RemovePlaylistTrack",slug:"removeplaylisttrack"},{level:2,title:"AddPlaylistTracks",slug:"addplaylisttracks"},{level:2,title:"AddPlaylistTrack",slug:"addplaylisttrack"},{level:2,title:"ReorderPlaylist",slug:"reorderplaylist"}],lastUpdated:"11/11/2019, 7:27:39 AM"}],themeConfig:{repo:"JohnnyCrazy/SpotifyAPI-NET",repoLabel:"🚀 GitHub",docsDir:"SpotifyAPI.Docs/docs",editLinks:!0,editLinkText:"Help us improve this page!",sidebar:"auto",sidebarDepth:0,lastUpdated:"Last Updated",serviceWorker:{updatePopup:!0},nav:[{text:"Home",link:"/"},{text:"SpotifyAPI.Web",items:[{text:"Getting Started",link:"/web/getting_started"},{text:"Examples",link:"/web/examples"},{text:"Proxy",link:"/web/proxy"},{text:"- Albums",link:"/web/albums"},{text:"- Artists",link:"/web/artists"},{text:"- Browse",link:"/web/browse"},{text:"- Follow",link:"/web/follow"},{text:"- Library",link:"/web/library"},{text:"- Personalization",link:"/web/personalization"},{text:"- Player",link:"/web/player"},{text:"- Playlists",link:"/web/playlists"},{text:"- Profiles",link:"/web/profiles"},{text:"- Search",link:"/web/search"},{text:"- Tracks",link:"/web/tracks"},{text:"Utilities",link:"/web/utils"}]},{text:"SpotifyAPI.Auth",items:[{text:"Getting Started",link:"/auth/getting_started"},{text:"- ImplicitGrantAuth",link:"/auth/implicit_grant"},{text:"- TokenSwapAuth",link:"/auth/token_swap"},{text:"- AutorizationCodeAuth",link:"/auth/authorization_code"},{text:"- ClientCredentialsAuth",link:"/auth/client_credentials"}]}]}};n(5);No.component("Badge",()=>Promise.all([n.e(0),n.e(3)]).then(n.bind(null,207)));n(6);var es=[{},({Vue:t})=>{t.mixin({computed:{$dataBlock(){return this.$options.__data__block__}}})},{},{}],ns=[];class rs{constructor(){this.store=new No({data:{state:{}}})}$get(t){return this.store.state[t]}$set(t,e){No.set(this.store.state,t,e)}$emit(...t){this.store.$emit(...t)}$on(...t){this.store.$on(...t)}}class os extends rs{}Object.assign(os.prototype,{getPageAsyncComponent:Ua,getLayoutAsyncComponent:Da,getAsyncComponent:Na,getVueComponent:Fa});var is={install(t){const e=new os;t.$vuepress=e,t.prototype.$vuepress=e}};function as(t,e){return t.options.routes.filter(t=>t.path.toLowerCase()===e.toLowerCase()).length>0}var ss={props:{pageKey:String,slotKey:{type:String,default:"default"}},render(t){const e=this.pageKey||this.$parent.$page.key;return Ba("pageKey",e),No.component(e)||No.component(e,Ua(e)),No.component(e)?t(e):t("")}},ls={functional:!0,props:{slotKey:String,required:!0},render:(t,{props:e,slots:n})=>t("div",{class:[`content__${e.slotKey}`]},n()[e.slotKey])},cs=(n(7),Object(Ya.a)({},function(t,e){var n=e._c;return n("svg",{staticClass:"icon outbound",attrs:{xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",x:"0px",y:"0px",viewBox:"0 0 100 100",width:"15",height:"15"}},[n("path",{attrs:{fill:"currentColor",d:"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"}}),e._v(" "),n("polygon",{attrs:{fill:"currentColor",points:"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"}})])},[],!0,null,null,null).exports),us={functional:!0,render(t,{parent:e,children:n}){if(e._isMounted)return n;e.$once("hook:mounted",()=>{e.$forceUpdate()})}};No.config.productionTip=!1,No.use(ka),No.use(is),No.mixin(function(t,e,n=No){!function(t){t.locales&&Object.keys(t.locales).forEach(e=>{t.locales[e].path=e});Object.freeze(t)}(e),n.$vuepress.$set("siteData",e);const r=new(t(n.$vuepress.$get("siteData"))),o=Object.getOwnPropertyDescriptors(Object.getPrototypeOf(r)),i={};return Object.keys(o).reduce((t,e)=>(e.startsWith("$")&&(t[e]=o[e].get),t),i),{computed:i}}(t=>(class{setPage(t){this.__page=t}get $site(){return t}get $themeConfig(){return this.$site.themeConfig}get $frontmatter(){return this.$page.frontmatter}get $localeConfig(){const{locales:t={}}=this.$site;let e,n;for(const r in t)"/"===r?n=t[r]:0===this.$page.path.indexOf(r)&&(e=t[r]);return e||n||{}}get $siteTitle(){return this.$localeConfig.title||this.$site.title||""}get $title(){const t=this.$page,{metaTitle:e}=this.$page.frontmatter;if("string"==typeof e)return e;const n=this.$siteTitle,r=t.frontmatter.home?null:t.frontmatter.title||t.title;return n?r?r+" | "+n:n:r||"VuePress"}get $description(){const t=function(t){if(t){const e=t.filter(t=>"description"===t.name)[0];if(e)return e.content}}(this.$page.frontmatter.meta);return t||(this.$page.frontmatter.description||this.$localeConfig.description||this.$site.description||"")}get $lang(){return this.$page.frontmatter.lang||this.$localeConfig.lang||"en-US"}get $localePath(){return this.$localeConfig.path||"/"}get $themeLocaleConfig(){return(this.$site.themeConfig.locales||{})[this.$localePath]||{}}get $page(){return this.__page?this.__page:function(t,e){for(let n=0;nn||(t.hash?!No.$vuepress.$get("disableScrollBehavior")&&{selector:t.hash}:{x:0,y:0})});!function(t){t.beforeEach((e,n,r)=>{if(as(t,e.path))r();else if(/(\/|\.html)$/.test(e.path))if(/\/$/.test(e.path)){const n=e.path.replace(/\/$/,"")+".html";as(t,n)?r(n):r()}else r();else{const n=e.path+"/",o=e.path+".html";as(t,o)?r(o):as(t,n)?r(n):r()}})}(n);const r={};try{es.forEach(e=>{"function"==typeof e&&e({Vue:No,options:r,router:n,siteData:ts,isServer:t})})}catch(t){console.error(t)}return{app:new No(Object.assign(r,{router:n,render:t=>t("div",{attrs:{id:"app"}},[t("router-view",{ref:"layout"}),t("div",{class:"global-ui"},ns.map(e=>t(e)))])})),router:n}}(!1);window.__VUEPRESS__={version:"1.0.3",hash:"2173e7a"},ps.onReady(()=>{fs.$mount("#app")})}]); \ No newline at end of file diff --git a/auth/authorization_code.html b/auth/authorization_code.html index 43978543..242ab26b 100644 --- a/auth/authorization_code.html +++ b/auth/authorization_code.html @@ -7,7 +7,7 @@ - + @@ -42,7 +42,7 @@ A good thing about this method: You can always refresh your token, without havin auth.Start(); // Starts an internal HTTP Server auth.OpenBrowser(); } -
- +
+ diff --git a/auth/client_credentials.html b/auth/client_credentials.html index c3a509c1..1e3ed94e 100644 --- a/auth/client_credentials.html +++ b/auth/client_credentials.html @@ -7,7 +7,7 @@ - + @@ -24,7 +24,7 @@ If you want to use it securely, you would need to do it all server-side. TokenType = token.TokenType, AccessToken = token.AccessToken }; -
- +
+ diff --git a/auth/getting_started.html b/auth/getting_started.html index 62a03ff4..94d8c812 100644 --- a/auth/getting_started.html +++ b/auth/getting_started.html @@ -7,7 +7,7 @@ - + @@ -17,7 +17,7 @@ 🚀 GitHub

Getting Started

Auth-Methods

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 here.

Before you start, install SpotifyAPI.Web.Auth and create an application at Spotify: Your Applications

After you created your Application, you will have following important values:

Name Description
Client_Id This is your client_id, you don't have to hide it
Client_Secret Never use this in one of your client-side apps! Keep it secret!
Redirect URIs Some of auth flows require that you set the correct redirect URI

Now you can start with the user-authentication, Spotify provides 3 ways (4 if you consider different implementations):

Overview: -Overview

- +Overview

+ diff --git a/auth/implicit_grant.html b/auth/implicit_grant.html index 215c7237..176e17d1 100644 --- a/auth/implicit_grant.html +++ b/auth/implicit_grant.html @@ -7,7 +7,7 @@ - + @@ -37,7 +37,7 @@ You won't be able to refresh the token. If you want to use the internal Http ser auth.Start(); // Starts an internal HTTP Server auth.OpenBrowser(); } -
- +
+ diff --git a/auth/token_swap.html b/auth/token_swap.html index 8aaf71df..f23d78a4 100644 --- a/auth/token_swap.html +++ b/auth/token_swap.html @@ -7,7 +7,7 @@ - + @@ -67,7 +67,7 @@ auth.AuthReceived .OnAccessTokenExpired += async (sender, e) => spotify.AccessToken = (await auth.RefreshAuthAsync(lastToken.RefreshToken)).AccessToken; auth.Start(); auth.OpenBrowser(); -

Token Swap Endpoint

To keep your client secret completely secure and your client ID and redirect URI as secure as possible, use of a web server (such as a php website) is required.

To use this method, an external HTTP Server (that you may need to create) needs to be able to supply the following HTTP Endpoints to your application:

/swap - Swaps out an authorization_code with an access_token and refresh_token - The following parameters are required in the JSON POST Body:

  • grant_type (set to "authorization_code")
  • code (the authorization_code)
  • redirect_uri
    • Important The page that the redirect URI links to must return the authorization code json to your serverUri (default is 'http://localhost:4002') but to the folder 'auth', like this: 'http://localhost:4002/auth'.

/refresh - Refreshes an access_token - The following parameters are required in the JSON POST Body:

  • grant_type (set to "refresh_token")
  • refresh_token

The following open-source token swap endpoint code can be used for your website:

Remarks

It should be noted that GitHub Pages does not support hosting php scripts. Hosting php scripts through it will cause the php to render as plain HTML, potentially compromising your client secret while doing absolutely nothing.

Be sure you have whitelisted your redirect uri in the Spotify Developer Dashboard otherwise the authorization will always fail.

If you did not use the WebAPIFactory or you provided a serverUri different from its default, you must make sure your redirect uri's script at your endpoint will properly redirect to your serverUri (such as changing the areas which refer to localhost:4002 if you had changed serverUri from its default), otherwise it will never reach your new serverUri.

- +

Token Swap Endpoint

To keep your client secret completely secure and your client ID and redirect URI as secure as possible, use of a web server (such as a php website) is required.

To use this method, an external HTTP Server (that you may need to create) needs to be able to supply the following HTTP Endpoints to your application:

/swap - Swaps out an authorization_code with an access_token and refresh_token - The following parameters are required in the JSON POST Body:

  • grant_type (set to "authorization_code")
  • code (the authorization_code)
  • redirect_uri
    • Important The page that the redirect URI links to must return the authorization code json to your serverUri (default is 'http://localhost:4002') but to the folder 'auth', like this: 'http://localhost:4002/auth'.

/refresh - Refreshes an access_token - The following parameters are required in the JSON POST Body:

  • grant_type (set to "refresh_token")
  • refresh_token

The following open-source token swap endpoint code can be used for your website:

Remarks

It should be noted that GitHub Pages does not support hosting php scripts. Hosting php scripts through it will cause the php to render as plain HTML, potentially compromising your client secret while doing absolutely nothing.

Be sure you have whitelisted your redirect uri in the Spotify Developer Dashboard otherwise the authorization will always fail.

If you did not use the WebAPIFactory or you provided a serverUri different from its default, you must make sure your redirect uri's script at your endpoint will properly redirect to your serverUri (such as changing the areas which refer to localhost:4002 if you had changed serverUri from its default), otherwise it will never reach your new serverUri.

+ diff --git a/index.html b/index.html index 900d7de0..bebe57eb 100644 --- a/index.html +++ b/index.html @@ -7,7 +7,7 @@ - + @@ -18,7 +18,7 @@

SpotifyAPI-NET Docs

About

This project, written in C#/.NET, provides 2 libraries for an easier usage of the Spotify Web API

Spotify's Web API (link)

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 user’s authorization.

SpotifyAPI.Web

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.

SpotifyAPI.Web.Auth

A library providing C# implementations of the 3 supported Authentication modes, including ImplicitGrantAuth, AuthorizationCodeAuth and CredentialsAuth


Installing

  • Via NuGet Package:
Install-Package SpotifyAPI.Web
 Install-Package SpotifyAPI.Web.Auth
-
  • Download the latest binaries on the GitHub Release Page and add it to your Project
  • Clone the Repo and build the project yourself.

Getting Started

Projects

audio-band by @dsafa

Display and control songs from the Windows taskbar

rocksmith-custom-song-toolkit by @catara

MASS Manipulation of Rocksmith DLC Library

Spofy by @eltoncezar

A Spotify mini player and notifier for Windows

Toastify by @aleab

Toastify adds global hotkeys and toast notifications to Spotify

Forked from nachmore/toastify

Spotify Oculus by @CaptainMorgs

Unity project for interacting with Spotify in virtual reality for the Oculus Rift.

- +
  • Download the latest binaries on the GitHub Release Page and add it to your Project
  • Clone the Repo and build the project yourself.

Getting Started

Projects

audio-band by @dsafa

Display and control songs from the Windows taskbar

rocksmith-custom-song-toolkit by @catara

MASS Manipulation of Rocksmith DLC Library

Spofy by @eltoncezar

A Spotify mini player and notifier for Windows

Toastify by @aleab

Toastify adds global hotkeys and toast notifications to Spotify

Forked from nachmore/toastify

Spotify Oculus by @CaptainMorgs

Unity project for interacting with Spotify in virtual reality for the Oculus Rift.

+ diff --git a/web/albums.html b/web/albums.html index dc2f9f12..9f1e1b96 100644 --- a/web/albums.html +++ b/web/albums.html @@ -7,7 +7,7 @@ - + @@ -22,7 +22,7 @@ Console.Writ Console.WriteLine(album.Name + "| Popularity: " + album.Popularity); //Display name and Popularity

GetSeveralAlbums

Get Spotify catalog information for multiple albums identified by their Spotify IDs.

Parameters

Name Description Example
ids A list of the Spotify IDs for the albums. Maximum: 20 IDs. new List<String>() { "5O7V8l4SeXTymVp3IesT9C" }
[market] An ISO 3166-1 alpha-2 country code. Provide this parameter if you want to apply Track Relinking. "DE"

Returns a SeveralAlbums which Property "Albums" contains a list of FullAlbum

Usage

SeveralAlbums albums = _spotify.GetSeveralAlbums(new List<String>() { "5O7V8l4SeXTymVp3IesT9C" });
 Console.WriteLine(albums.Albums[0].Name);
-

- +
+ diff --git a/web/artists.html b/web/artists.html index 8d45a084..11dd123e 100644 --- a/web/artists.html +++ b/web/artists.html @@ -7,7 +7,7 @@ - + @@ -25,7 +25,7 @@ Console.Writ albums.Items.ForEach(album => Console.WriteLine(album.Name));

GetSeveralArtists

Get Spotify catalog information for several artists based on their Spotify IDs.

Parameters

Name Description Example
ids A list of the Spotify IDs for the artists. Maximum: 50 IDs. new List<String>() { "1KpCi9BOfviCVhmpI4G2sY" }

Returns a SeveralArtists object which contains the property List<FullArtist> Artists (FullArtist)

Usage

SeveralArtists artists = _spotify.GetSeveralArtists(new List<String>() {"1KpCi9BOfviCVhmpI4G2sY"});
 artists.Artists.ForEach(artist => Console.WriteLine(artist.Name));
-

- +
+ diff --git a/web/browse.html b/web/browse.html index abe44d98..fa085368 100644 --- a/web/browse.html +++ b/web/browse.html @@ -7,7 +7,7 @@ - + @@ -26,7 +26,7 @@ categoryList.Categories.WriteLine(cat.Name);

GetCategoryPlaylists

Get a list of Spotify playlists tagged with a particular category.

Parameters

Name Description Example
categoryId The Spotify category ID for the category. "party"
[country] A country: an ISO 3166-1 alpha-2 country code. "DE"
[limit] The maximum number of items to return. Default: 20. Minimum: 1. Maximum: 50. 20
[offset] The index of the first item to return. Default: 0 0

Returns a CategoryPlaylist object, which has the property Paging<SimplePlaylist> Playlists

Usage

CategoryPlaylist playlists = _spotify.GetCategoryPlaylists("party");
 playlists.Playlists.Items.ForEach(playlist => Console.WriteLine(playlist.Name));
-

- +
+ diff --git a/web/examples.html b/web/examples.html index a03f9461..3b42f305 100644 --- a/web/examples.html +++ b/web/examples.html @@ -7,7 +7,7 @@ - + @@ -15,7 +15,7 @@ 🚀 GitHub

Examples

This page is currently empty. Do you have useful examples? Please open a PR

- +

Examples

This page is currently empty. Do you have useful examples? Please open a PR

+ diff --git a/web/follow.html b/web/follow.html index e5685205..84b38a86 100644 --- a/web/follow.html +++ b/web/follow.html @@ -7,7 +7,7 @@ - + @@ -33,7 +33,7 @@ Console.Writ

IsFollowingPlaylist

Check to see if one or more Spotify users are following a specified playlist.

Parameters

Name Description Example
ownerId The Spotify user ID of the person who owns the playlist. "maxloermans"
playlistId The Spotify ID of the playlist. "3SIp2VAsKI03mReF0dFBmI"
ids or id A list of the artist or the user Spotify IDs or just a Spotify ID new List<String> { "1KpCi9BOfviCVhmpI4G2sY" } or "1KpCi9BOfviCVhmpI4G2sY"

Returns a ListResponse<Boolean> which contains the property List<Boolean> List

Usage

//Am I following the playlist?
 ListResponse<Boolean> response = _spotify.IsFollowing("maxloermans", "3SIp2VAsKI03mReF0dFBmI", "1122095781");
 Console.WriteLine(response.List[0] ? "Yis!" : "No :(");
-

- +
+ diff --git a/web/getting_started.html b/web/getting_started.html index ce026b7d..6310e2dc 100644 --- a/web/getting_started.html +++ b/web/getting_started.html @@ -7,7 +7,7 @@ - + @@ -50,7 +50,7 @@ _spotify = newvar asyncProfile = await _spotify.GetPrivateProfileAsync(); var syncProfile = _spotify.GetPrivateProfile(); } -

Note that the synchronous call will block the current Thread!


API-Reference

Albums

Artists

Browse

Follow

Library

Personalization

Player

Playlists

Profiles

Tracks

Util

- +

Note that the synchronous call will block the current Thread!


API-Reference

Albums

Artists

Browse

Follow

Library

Personalization

Player

Playlists

Profiles

Tracks

Util

+ diff --git a/web/library.html b/web/library.html index bf2244eb..a0188e58 100644 --- a/web/library.html +++ b/web/library.html @@ -7,7 +7,7 @@ - + @@ -43,7 +43,7 @@ savedAlbums.Items CheckSavedAlbums

Check if one or more albums is already saved in the current Spotify user’s “Your Music” library.

Parameters

Name Description Example
ids A list of the Spotify IDs. new List<String> { "1cq06d0kTUnFmJHixz1RaF" }

Returns a ListResponse<bool> which contains a property, List<bool> List

Usage

ListResponse<bool> albumsSaved = _spotify.CheckSavedAlbums(new List<String> { "1cq06d0kTUnFmJHixz1RaF" });
 if(albumsSaved.List[0])
     Console.WriteLine("The album is in your library!");
-

- +
+ diff --git a/web/personalization.html b/web/personalization.html index 5287f743..5181e4a7 100644 --- a/web/personalization.html +++ b/web/personalization.html @@ -7,7 +7,7 @@ - + @@ -22,7 +22,7 @@ Console.WriteLine(tracks.Total.ToString()) //Display total album track count artists.Items.ForEach(item => Console.WriteLine(item.Name)); //Display all fetched Artist-Names (max 20)

GetUsersRecentlyPlayedTracks

Get tracks from the current user’s recent play history.

Parameters

Name Description Example
[limit] The maximum number of items to return. Default: 20. Minimum: 1. Maximum: 50. 20
[after] Returns all items after (but not including) this cursor position. DateTime.Now.AddDays(-1)
[before] Returns all items before (but not including) this cursor position. DateTime.Now.AddDays(-1)

Returns a PlayHistory wrapped inside a CursorPaging-object

Usage

CursorPaging<PlayHistory> histories = _spotify.GetUsersRecentlyPlayedTracks();
 histories.Items.ForEach(item => Console.WriteLine(item.Track.Name));
-

- +
+ diff --git a/web/player.html b/web/player.html index 032d2eee..752efc8e 100644 --- a/web/player.html +++ b/web/player.html @@ -7,7 +7,7 @@ - + @@ -34,7 +34,7 @@ Returning to the start of the current track should be performed using the https:

SetRepeatMode

Set the repeat mode for the user’s playback. Options are repeat-track, repeat-context, and off.

Parameters

Name Description Example
state track, context or off. RepeatState.Track
[deviceId] The id of the device this command is targeting. If not supplied, the user's currently active device is the target. "XXXX-XXXX-XXXX-XXXX"

Usage

ErrorResponse error = _spotify.SetRepeatMode(RepeatState.Track);
 

SetVolume

Set the volume for the user’s current playback device.

Parameters

Name Description Example
volumePercent Integer. The volume to set. Must be a value from 0 to 100 inclusive. 50
[deviceId] The id of the device this command is targeting. If not supplied, the user's currently active device is the target. "XXXX-XXXX-XXXX-XXXX"

Usage

ErrorResponse error = _spotify.SetVolume(50);
 

SetShuffle

Toggle shuffle on or off for user’s playback.

Parameters

Name Description Example
shuffle True or False false
[deviceId] The id of the device this command is targeting. If not supplied, the user's currently active device is the target. "XXXX-XXXX-XXXX-XXXX"

Usage

ErrorResponse error = _spotify.SetShuffle(false);
-
- +
+ diff --git a/web/playlists.html b/web/playlists.html index e662895a..eaaac260 100644 --- a/web/playlists.html +++ b/web/playlists.html @@ -7,7 +7,7 @@ - + @@ -55,7 +55,7 @@ playlist.Items ReorderPlaylist

Reorder a track or a group of tracks in a playlist. More Info: Reorder-Playlist

Parameters

Name Description Example
userId The user's Spotify user ID. "1122095781"
playlistId The Spotify ID for the playlist. "1TtEejT1y4D1WmcOnLfha2"
rangeStart The position of the first track to be reordered. 2
insertBefore The position where the tracks should be inserted. 0
[rangeLength] The amount of tracks to be reordered. Defaults to 1 if not set. 2
[snapshotId] The playlist's snapshot ID against which you want to make the changes. ``

Returns a Snapshot-Object which contains the property String SnapshotId

Usage

Snapshot snapshot = _spotify.ReorderPlaylist("1122095781", "1TtEejT1y4D1WmcOnLfha2", 2, 0, 2);
 Console.WriteLine("New SnapshotId: " + snapshot.SnapshotId);
-

- +
+ diff --git a/web/profiles.html b/web/profiles.html index 284e17be..b09c9e68 100644 --- a/web/profiles.html +++ b/web/profiles.html @@ -7,7 +7,7 @@ - + @@ -17,7 +17,7 @@ 🚀 GitHub

Profiles

GetPrivateProfile

Get detailed profile information about the current user (including the current user’s username).

Parameters

Name Description Example

Returns a PrivateProfile

Usage

PrivateUser user = _spotify.GetPrivateProfile();
 Console.WriteLine(user.DisplayName);
-

GetPublicProfile

Get public profile information about a Spotify user.

Parameters

Name Description Example
userId The user's Spotify user ID. EXAMPLE

Returns a PublicProfile

Usage


- +

GetPublicProfile

Get public profile information about a Spotify user.

Parameters

Name Description Example
userId The user's Spotify user ID. EXAMPLE

Returns a PublicProfile

Usage


+ diff --git a/web/proxy.html b/web/proxy.html index a6b5ba4e..b7b27895 100644 --- a/web/proxy.html +++ b/web/proxy.html @@ -7,7 +7,7 @@ - + @@ -23,7 +23,7 @@ }; SpotifyWebAPI api = new SpotifyWebAPI(proxyConfig); -
- +
+ diff --git a/web/search.html b/web/search.html index 77b594ce..dcca061d 100644 --- a/web/search.html +++ b/web/search.html @@ -7,7 +7,7 @@ - + @@ -17,7 +17,7 @@ 🚀 GitHub

Search

SearchItems

Get Spotify catalog information about artists, albums, tracks or playlists that match a keyword string.

You may want to use SearchItemsEscaped if you're processing user-input without validation

Parameters

Name Description Example
q The search query's keywords (and optional field filters and operators), for example q=roadhouse+blues. "roadhouse+blues"
type A list of item types to search across. SearchType.Album
[limit] The maximum number of items to return. Default: 20. Minimum: 1. Maximum: 50. 20
[offset] The index of the first result to return. Default: 0 0
[market] An ISO 3166-1 alpha-2 country code or the string from_token. "de"

Returns a SearchItem which contains the properties Paging<FullArtist> Artists,Paging<FullTrack> Tracks, Paging<SimpleAlbum> Albums, Paging<SimplePlaylist> Playlists. They are filled based on your search-type.

Usage

SearchItem item = _spotify.SearchItems("roadhouse+blues", SearchType.Album | SearchType.Playlist);
 Console.WriteLine(item.Albums.Total); //How many results are there in total? NOTE: item.Tracks = item.Artists = null
-

SearchItemsEscaped

Get Spotify catalog information about artists, albums, tracks or playlists that match a keyword string.

Works like SearchItems, but URL escapes all characters

- +

SearchItemsEscaped

Get Spotify catalog information about artists, albums, tracks or playlists that match a keyword string.

Works like SearchItems, but URL escapes all characters

+ diff --git a/web/tracks.html b/web/tracks.html index eeea04bf..2802deae 100644 --- a/web/tracks.html +++ b/web/tracks.html @@ -7,7 +7,7 @@ - + @@ -21,7 +21,7 @@ severalTracks.Tracks.WriteLine(track.Name);

GetAudioAnalysis

Get a detailed audio analysis for a single track identified by its unique Spotify ID.

Parameters

Name Description Example
id The Spotify ID for the track. "6Y1CLPwYe7zvI8PJiWVz6T"

Returns a AudioAnalysis. This object is currently lacking Spotify documentation but archived EchoNest documentation is relevant.

Usage

AudioAnalysis analysis = _spotify.GetAudioAnalysis("6Y1CLPwYe7zvI8PJiWVz6T");
 Console.WriteLine(analysis.Meta.DetailedStatus);
-
- +
+ diff --git a/web/utils.html b/web/utils.html index 09846af9..7958a1b5 100644 --- a/web/utils.html +++ b/web/utils.html @@ -7,7 +7,7 @@ - + @@ -24,7 +24,7 @@ Both are an easy way to receive the next/previous page of a Paging-Object.

< break; playlistTracks = _spotify.GetNextPage(playlistTracks); } -
- +
+