forked from JohnnyCrazy/SpotifyAPI-NET
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSpotifyAPI.cs
More file actions
128 lines (108 loc) · 4 KB
/
SpotifyAPI.cs
File metadata and controls
128 lines (108 loc) · 4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
using System;
using System.Collections.Generic;
using Newtonsoft.Json;
using System.Text.RegularExpressions;
using System.Diagnostics;
namespace SpotifyAPI.SpotifyLocalAPI
{
public class SpotifyLocalAPIClass
{
SpotifyMusicHandler mh;
RemoteHandler rh;
SpotifyEventHandler eh;
static bool betaMode;
public SpotifyLocalAPIClass(bool betaMode = false)
{
rh = RemoteHandler.GetInstance();
mh = new SpotifyMusicHandler();
eh = new SpotifyEventHandler(this, mh);
SpotifyLocalAPIClass.betaMode = betaMode;
}
/// <summary>
/// Connects with Spotify. Needs to be called before all other SpotifyAPI functions
/// </summary>
/// <returns>Returns true, if it was successful, false if not</returns>
public Boolean Connect()
{
return rh.Init();
}
/// <summary>
/// Returns the MusicHandler
/// </summary>
/// <returns>Returns the MusicHandler</returns>
public SpotifyMusicHandler GetMusicHandler()
{
return mh;
}
/// <summary>
/// Returns the EventHanlder
/// </summary>
/// <returns>Returns the EventHanlder</returns>
public SpotifyEventHandler GetEventHandler()
{
return eh;
}
/// <summary>
/// Checks if Spotify is running
/// </summary>
/// <returns>True, if it's running, false if not</returns>
public static Boolean IsSpotifyRunning()
{
var procName = (betaMode) ? "spotifybeta" : "spotify";
if (Process.GetProcessesByName(procName).Length < 1)
return false;
return true;
}
/// <summary>
/// Checks if Spotify's WebHelper is running (Needed for API Calls)
/// </summary>
/// <returns>True, if it's running, false if not</returns>
public static Boolean IsSpotifyWebHelperRunning()
{
var procName = (betaMode) ? "spotifybetawebhelper" : "spotifywebhelper";
if (Process.GetProcessesByName(procName).Length < 1)
return false;
return true;
}
/// <summary>
/// Runs Spotify
/// </summary>
public void RunSpotify()
{
var pathToExe = (betaMode) ? @"\spotifybeta\spotifybeta.exe" : @"\spotify\spotify.exe";
if (!IsSpotifyRunning())
Process.Start(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + pathToExe);
}
/// <summary>
/// Runs Spotify's WebHelper
/// </summary>
public void RunSpotifyWebHelper()
{
var pathToExe = (betaMode) ? @"\spotifybeta\spotifybetawebhelper.exe" : @"\spotify\data\spotifywebhelper.exe";
if (!IsSpotifyWebHelperRunning())
Process.Start(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + pathToExe);
}
/// <summary>
/// Checks for a valid SpotifyURL (Still not finished)
/// </summary>
/// <param name="url">The Spotify URI starting with "spotify:"</param>
/// <returns>True if the URI is valid, false if not</returns>
public static Boolean IsValidSpotifyURI(String uri)
{
String[] types = new String[] { "track", "album", "local", "artist" };
String[] split = uri.Split(':');
if (split.Length < 3)
return false;
return split[0] == "spotify" && Array.IndexOf(types, split[1]) > -1 && split[2].Length == 22;
}
/// <summary>
/// Updates and Fetches all current information about the current track etc.
/// </summary>
public void Update()
{
if (!SpotifyLocalAPIClass.IsSpotifyWebHelperRunning() || !SpotifyLocalAPIClass.IsSpotifyRunning())
return;
mh.Update(rh.Update());
}
}
}