mirror of
https://github.com/Sarsoo/Spotify.NET.git
synced 2024-12-24 23:16:28 +00:00
Merge pull request #19 from salfab/feature/implement_contexts
Implement contexts.
This commit is contained in:
commit
2cc4f573f4
@ -16,7 +16,7 @@ namespace SpotifyAPI.SpotifyLocalAPI
|
|||||||
public String oauthKey { get; private set; }
|
public String oauthKey { get; private set; }
|
||||||
public String cfidKey { get; private set; }
|
public String cfidKey { get; private set; }
|
||||||
|
|
||||||
public String host = "127.0.0.1";
|
public String host = "SpotifyAPI.spotilocal.com";
|
||||||
|
|
||||||
private class ExtendedWebClientInstance : ExtendedWebClient
|
private class ExtendedWebClientInstance : ExtendedWebClient
|
||||||
{
|
{
|
||||||
@ -59,9 +59,10 @@ namespace SpotifyAPI.SpotifyLocalAPI
|
|||||||
await QueryAsync("remote/pause.json?pause=false", true, true, -1);
|
await QueryAsync("remote/pause.json?pause=false", true, true, -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
internal async void SendPlayRequest(String url)
|
internal async void SendPlayRequest(String url, String context = "")
|
||||||
{
|
{
|
||||||
await QueryAsync("remote/play.json?uri=" + url, true, true, -1);
|
// TODO: instead of having an empty context, one way to fix the bug with the playback time beyond the length of a song would be to provide a 1-song context, and it would be fixed.
|
||||||
|
await QueryAsync(string.Format("remote/play.json?uri={0}&context={1}", url, context), true, true, -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
internal async void SendQueueRequest(String url)
|
internal async void SendQueueRequest(String url)
|
||||||
@ -174,7 +175,9 @@ namespace SpotifyAPI.SpotifyLocalAPI
|
|||||||
parameters += "&returnon=login%2Clogout%2Cplay%2Cpause%2Cerror%2Cap";
|
parameters += "&returnon=login%2Clogout%2Cplay%2Cpause%2Cerror%2Cap";
|
||||||
}
|
}
|
||||||
|
|
||||||
string a = "http://" + host + ":4380/" + request + parameters;
|
|
||||||
|
|
||||||
|
string a = "http://" + host + ":4380/" + request + parameters ;
|
||||||
string response = "";
|
string response = "";
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -54,12 +54,16 @@ namespace SpotifyAPI.SpotifyLocalAPI
|
|||||||
return sr.volume;
|
return sr.volume;
|
||||||
}
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Plays a Spotify URI
|
/// Plays a Spotify URI within an optional context.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="uri">The Spotify URI. Can be checked with <seealso cref="SpotifyLocalAPIClass.IsValidSpotifyURI"/></param>
|
/// <param name="uri">The Spotify URI. Can be checked with <seealso cref="SpotifyLocalAPIClass.IsValidSpotifyURI"/></param>
|
||||||
public void PlayURL(String uri)
|
/// <param name="context">The context in which to play the specified <paramref name="uri"/>. </param>
|
||||||
|
/// <remarks>
|
||||||
|
/// Contexts are basically a queue in spotify. a song can be played within a context, meaning that hitting next / previous would lead to another song. Contexts are leveraged by widgets as described in the "Multiple tracks player" section of the following documentation page: https://developer.spotify.com/technologies/widgets/spotify-play-button/
|
||||||
|
/// </remarks>
|
||||||
|
public void PlayURL(String uri, String context = "")
|
||||||
{
|
{
|
||||||
rh.SendPlayRequest(uri);
|
rh.SendPlayRequest(uri, context);
|
||||||
}
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Adds a Spotify URI to the Queue
|
/// Adds a Spotify URI to the Queue
|
||||||
|
95
SpotifyLocalAPIExample/Form1.Designer.cs
generated
95
SpotifyLocalAPIExample/Form1.Designer.cs
generated
@ -29,6 +29,9 @@
|
|||||||
private void InitializeComponent()
|
private void InitializeComponent()
|
||||||
{
|
{
|
||||||
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
||||||
|
this.linkLabel3 = new System.Windows.Forms.LinkLabel();
|
||||||
|
this.linkLabel2 = new System.Windows.Forms.LinkLabel();
|
||||||
|
this.linkLabel1 = new System.Windows.Forms.LinkLabel();
|
||||||
this.progressBar1 = new System.Windows.Forms.ProgressBar();
|
this.progressBar1 = new System.Windows.Forms.ProgressBar();
|
||||||
this.label4 = new System.Windows.Forms.Label();
|
this.label4 = new System.Windows.Forms.Label();
|
||||||
this.label5 = new System.Windows.Forms.Label();
|
this.label5 = new System.Windows.Forms.Label();
|
||||||
@ -39,6 +42,7 @@
|
|||||||
this.label6 = new System.Windows.Forms.Label();
|
this.label6 = new System.Windows.Forms.Label();
|
||||||
this.label7 = new System.Windows.Forms.Label();
|
this.label7 = new System.Windows.Forms.Label();
|
||||||
this.groupBox2 = new System.Windows.Forms.GroupBox();
|
this.groupBox2 = new System.Windows.Forms.GroupBox();
|
||||||
|
this.tbContext = new System.Windows.Forms.TextBox();
|
||||||
this.button5 = new System.Windows.Forms.Button();
|
this.button5 = new System.Windows.Forms.Button();
|
||||||
this.textBox1 = new System.Windows.Forms.TextBox();
|
this.textBox1 = new System.Windows.Forms.TextBox();
|
||||||
this.checkBox1 = new System.Windows.Forms.CheckBox();
|
this.checkBox1 = new System.Windows.Forms.CheckBox();
|
||||||
@ -51,9 +55,6 @@
|
|||||||
this.label9 = new System.Windows.Forms.Label();
|
this.label9 = new System.Windows.Forms.Label();
|
||||||
this.label8 = new System.Windows.Forms.Label();
|
this.label8 = new System.Windows.Forms.Label();
|
||||||
this.pictureBox2 = new System.Windows.Forms.PictureBox();
|
this.pictureBox2 = new System.Windows.Forms.PictureBox();
|
||||||
this.linkLabel1 = new System.Windows.Forms.LinkLabel();
|
|
||||||
this.linkLabel2 = new System.Windows.Forms.LinkLabel();
|
|
||||||
this.linkLabel3 = new System.Windows.Forms.LinkLabel();
|
|
||||||
this.groupBox1.SuspendLayout();
|
this.groupBox1.SuspendLayout();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
|
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
|
||||||
this.groupBox2.SuspendLayout();
|
this.groupBox2.SuspendLayout();
|
||||||
@ -72,13 +73,43 @@
|
|||||||
this.groupBox1.Controls.Add(this.currentName);
|
this.groupBox1.Controls.Add(this.currentName);
|
||||||
this.groupBox1.Controls.Add(this.currentAlbum);
|
this.groupBox1.Controls.Add(this.currentAlbum);
|
||||||
this.groupBox1.Controls.Add(this.pictureBox1);
|
this.groupBox1.Controls.Add(this.pictureBox1);
|
||||||
this.groupBox1.Location = new System.Drawing.Point(12, 209);
|
this.groupBox1.Location = new System.Drawing.Point(12, 244);
|
||||||
this.groupBox1.Name = "groupBox1";
|
this.groupBox1.Name = "groupBox1";
|
||||||
this.groupBox1.Size = new System.Drawing.Size(279, 313);
|
this.groupBox1.Size = new System.Drawing.Size(279, 313);
|
||||||
this.groupBox1.TabIndex = 0;
|
this.groupBox1.TabIndex = 0;
|
||||||
this.groupBox1.TabStop = false;
|
this.groupBox1.TabStop = false;
|
||||||
this.groupBox1.Text = "Current Track";
|
this.groupBox1.Text = "Current Track";
|
||||||
//
|
//
|
||||||
|
// linkLabel3
|
||||||
|
//
|
||||||
|
this.linkLabel3.AutoSize = true;
|
||||||
|
this.linkLabel3.Location = new System.Drawing.Point(50, 228);
|
||||||
|
this.linkLabel3.Name = "linkLabel3";
|
||||||
|
this.linkLabel3.Size = new System.Drawing.Size(55, 13);
|
||||||
|
this.linkLabel3.TabIndex = 12;
|
||||||
|
this.linkLabel3.TabStop = true;
|
||||||
|
this.linkLabel3.Text = "linkLabel3";
|
||||||
|
//
|
||||||
|
// linkLabel2
|
||||||
|
//
|
||||||
|
this.linkLabel2.AutoSize = true;
|
||||||
|
this.linkLabel2.Location = new System.Drawing.Point(50, 205);
|
||||||
|
this.linkLabel2.Name = "linkLabel2";
|
||||||
|
this.linkLabel2.Size = new System.Drawing.Size(55, 13);
|
||||||
|
this.linkLabel2.TabIndex = 11;
|
||||||
|
this.linkLabel2.TabStop = true;
|
||||||
|
this.linkLabel2.Text = "linkLabel2";
|
||||||
|
//
|
||||||
|
// linkLabel1
|
||||||
|
//
|
||||||
|
this.linkLabel1.AutoSize = true;
|
||||||
|
this.linkLabel1.Location = new System.Drawing.Point(50, 182);
|
||||||
|
this.linkLabel1.Name = "linkLabel1";
|
||||||
|
this.linkLabel1.Size = new System.Drawing.Size(55, 13);
|
||||||
|
this.linkLabel1.TabIndex = 10;
|
||||||
|
this.linkLabel1.TabStop = true;
|
||||||
|
this.linkLabel1.Text = "linkLabel1";
|
||||||
|
//
|
||||||
// progressBar1
|
// progressBar1
|
||||||
//
|
//
|
||||||
this.progressBar1.Location = new System.Drawing.Point(10, 280);
|
this.progressBar1.Location = new System.Drawing.Point(10, 280);
|
||||||
@ -159,6 +190,7 @@
|
|||||||
//
|
//
|
||||||
// groupBox2
|
// groupBox2
|
||||||
//
|
//
|
||||||
|
this.groupBox2.Controls.Add(this.tbContext);
|
||||||
this.groupBox2.Controls.Add(this.button5);
|
this.groupBox2.Controls.Add(this.button5);
|
||||||
this.groupBox2.Controls.Add(this.textBox1);
|
this.groupBox2.Controls.Add(this.textBox1);
|
||||||
this.groupBox2.Controls.Add(this.label7);
|
this.groupBox2.Controls.Add(this.label7);
|
||||||
@ -174,10 +206,19 @@
|
|||||||
this.groupBox2.Controls.Add(this.label8);
|
this.groupBox2.Controls.Add(this.label8);
|
||||||
this.groupBox2.Location = new System.Drawing.Point(12, 12);
|
this.groupBox2.Location = new System.Drawing.Point(12, 12);
|
||||||
this.groupBox2.Name = "groupBox2";
|
this.groupBox2.Name = "groupBox2";
|
||||||
this.groupBox2.Size = new System.Drawing.Size(338, 191);
|
this.groupBox2.Size = new System.Drawing.Size(338, 226);
|
||||||
this.groupBox2.TabIndex = 11;
|
this.groupBox2.TabIndex = 11;
|
||||||
this.groupBox2.TabStop = false;
|
this.groupBox2.TabStop = false;
|
||||||
this.groupBox2.Text = "Spotify";
|
this.groupBox2.Text = "Spotify";
|
||||||
|
//
|
||||||
|
// tbContext
|
||||||
|
//
|
||||||
|
this.tbContext.Location = new System.Drawing.Point(7, 165);
|
||||||
|
this.tbContext.Name = "tbContext";
|
||||||
|
this.tbContext.Size = new System.Drawing.Size(317, 20);
|
||||||
|
this.tbContext.TabIndex = 15;
|
||||||
|
this.tbContext.Text = "spotify:trackset:PREFEREDTITLE:1kICwqOzkICjv8qnQpr9Go,4myBMnNWZlgvVelYeTu55w,3JNc" +
|
||||||
|
"8Kvl4q1oSWH6084W2m,1YrnDTqvcnUKxAIeXyaEmU,1QFh8OH1e78dGd3VyJZCAC";
|
||||||
//
|
//
|
||||||
// button5
|
// button5
|
||||||
//
|
//
|
||||||
@ -193,10 +234,11 @@
|
|||||||
//
|
//
|
||||||
// textBox1
|
// textBox1
|
||||||
//
|
//
|
||||||
this.textBox1.Location = new System.Drawing.Point(6, 136);
|
this.textBox1.Location = new System.Drawing.Point(6, 137);
|
||||||
this.textBox1.Name = "textBox1";
|
this.textBox1.Name = "textBox1";
|
||||||
this.textBox1.Size = new System.Drawing.Size(237, 20);
|
this.textBox1.Size = new System.Drawing.Size(237, 20);
|
||||||
this.textBox1.TabIndex = 13;
|
this.textBox1.TabIndex = 13;
|
||||||
|
this.textBox1.Text = "https://open.spotify.com/track/4myBMnNWZlgvVelYeTu55w";
|
||||||
//
|
//
|
||||||
// checkBox1
|
// checkBox1
|
||||||
//
|
//
|
||||||
@ -211,7 +253,7 @@
|
|||||||
//
|
//
|
||||||
// button4
|
// button4
|
||||||
//
|
//
|
||||||
this.button4.Location = new System.Drawing.Point(249, 162);
|
this.button4.Location = new System.Drawing.Point(249, 191);
|
||||||
this.button4.Name = "button4";
|
this.button4.Name = "button4";
|
||||||
this.button4.Size = new System.Drawing.Size(75, 23);
|
this.button4.Size = new System.Drawing.Size(75, 23);
|
||||||
this.button4.TabIndex = 11;
|
this.button4.TabIndex = 11;
|
||||||
@ -221,7 +263,7 @@
|
|||||||
//
|
//
|
||||||
// button3
|
// button3
|
||||||
//
|
//
|
||||||
this.button3.Location = new System.Drawing.Point(168, 162);
|
this.button3.Location = new System.Drawing.Point(168, 191);
|
||||||
this.button3.Name = "button3";
|
this.button3.Name = "button3";
|
||||||
this.button3.Size = new System.Drawing.Size(75, 23);
|
this.button3.Size = new System.Drawing.Size(75, 23);
|
||||||
this.button3.TabIndex = 10;
|
this.button3.TabIndex = 10;
|
||||||
@ -231,7 +273,7 @@
|
|||||||
//
|
//
|
||||||
// button2
|
// button2
|
||||||
//
|
//
|
||||||
this.button2.Location = new System.Drawing.Point(87, 162);
|
this.button2.Location = new System.Drawing.Point(87, 191);
|
||||||
this.button2.Name = "button2";
|
this.button2.Name = "button2";
|
||||||
this.button2.Size = new System.Drawing.Size(75, 23);
|
this.button2.Size = new System.Drawing.Size(75, 23);
|
||||||
this.button2.TabIndex = 9;
|
this.button2.TabIndex = 9;
|
||||||
@ -241,7 +283,7 @@
|
|||||||
//
|
//
|
||||||
// button1
|
// button1
|
||||||
//
|
//
|
||||||
this.button1.Location = new System.Drawing.Point(6, 162);
|
this.button1.Location = new System.Drawing.Point(6, 191);
|
||||||
this.button1.Name = "button1";
|
this.button1.Name = "button1";
|
||||||
this.button1.Size = new System.Drawing.Size(75, 23);
|
this.button1.Size = new System.Drawing.Size(75, 23);
|
||||||
this.button1.TabIndex = 8;
|
this.button1.TabIndex = 8;
|
||||||
@ -295,41 +337,11 @@
|
|||||||
this.pictureBox2.TabIndex = 12;
|
this.pictureBox2.TabIndex = 12;
|
||||||
this.pictureBox2.TabStop = false;
|
this.pictureBox2.TabStop = false;
|
||||||
//
|
//
|
||||||
// linkLabel1
|
|
||||||
//
|
|
||||||
this.linkLabel1.AutoSize = true;
|
|
||||||
this.linkLabel1.Location = new System.Drawing.Point(50, 182);
|
|
||||||
this.linkLabel1.Name = "linkLabel1";
|
|
||||||
this.linkLabel1.Size = new System.Drawing.Size(55, 13);
|
|
||||||
this.linkLabel1.TabIndex = 10;
|
|
||||||
this.linkLabel1.TabStop = true;
|
|
||||||
this.linkLabel1.Text = "linkLabel1";
|
|
||||||
//
|
|
||||||
// linkLabel2
|
|
||||||
//
|
|
||||||
this.linkLabel2.AutoSize = true;
|
|
||||||
this.linkLabel2.Location = new System.Drawing.Point(50, 205);
|
|
||||||
this.linkLabel2.Name = "linkLabel2";
|
|
||||||
this.linkLabel2.Size = new System.Drawing.Size(55, 13);
|
|
||||||
this.linkLabel2.TabIndex = 11;
|
|
||||||
this.linkLabel2.TabStop = true;
|
|
||||||
this.linkLabel2.Text = "linkLabel2";
|
|
||||||
//
|
|
||||||
// linkLabel3
|
|
||||||
//
|
|
||||||
this.linkLabel3.AutoSize = true;
|
|
||||||
this.linkLabel3.Location = new System.Drawing.Point(50, 228);
|
|
||||||
this.linkLabel3.Name = "linkLabel3";
|
|
||||||
this.linkLabel3.Size = new System.Drawing.Size(55, 13);
|
|
||||||
this.linkLabel3.TabIndex = 12;
|
|
||||||
this.linkLabel3.TabStop = true;
|
|
||||||
this.linkLabel3.Text = "linkLabel3";
|
|
||||||
//
|
|
||||||
// Form1
|
// Form1
|
||||||
//
|
//
|
||||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
this.ClientSize = new System.Drawing.Size(1002, 664);
|
this.ClientSize = new System.Drawing.Size(1002, 663);
|
||||||
this.Controls.Add(this.pictureBox2);
|
this.Controls.Add(this.pictureBox2);
|
||||||
this.Controls.Add(this.groupBox2);
|
this.Controls.Add(this.groupBox2);
|
||||||
this.Controls.Add(this.groupBox1);
|
this.Controls.Add(this.groupBox1);
|
||||||
@ -376,6 +388,7 @@
|
|||||||
private System.Windows.Forms.LinkLabel linkLabel3;
|
private System.Windows.Forms.LinkLabel linkLabel3;
|
||||||
private System.Windows.Forms.LinkLabel linkLabel2;
|
private System.Windows.Forms.LinkLabel linkLabel2;
|
||||||
private System.Windows.Forms.LinkLabel linkLabel1;
|
private System.Windows.Forms.LinkLabel linkLabel1;
|
||||||
|
private System.Windows.Forms.TextBox tbContext;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -139,7 +139,7 @@ namespace SpotifyAPI_Example
|
|||||||
{
|
{
|
||||||
//Not working yet
|
//Not working yet
|
||||||
//if (SpotifyAPI.IsValidSpotifyURI(textBox1.Text))
|
//if (SpotifyAPI.IsValidSpotifyURI(textBox1.Text))
|
||||||
mh.PlayURL(textBox1.Text);
|
mh.PlayURL(textBox1.Text, tbContext.Text);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void checkBox1_CheckedChanged(object sender, EventArgs e)
|
private void checkBox1_CheckedChanged(object sender, EventArgs e)
|
||||||
|
Loading…
Reference in New Issue
Block a user