aboutsummaryrefslogtreecommitdiff
path: root/Sources/spotify_source.swift
diff options
context:
space:
mode:
authorEssau Ramirez <sauramirez@users.noreply.github.com>2017-11-25 13:22:29 -0600
committerRubén Beltrán del Río <ben@nsovocal.com>2017-11-25 13:22:29 -0600
commitd1a147d40ae00fd1f9f48a0b5e2f8a798849fd3d (patch)
treed03dc09446d71ab10b51671c2b1ee781d5373353 /Sources/spotify_source.swift
parent772c8a7d231044bbdc50392f3192ea34f0b23288 (diff)
Added Spotify source support (#2)
* Added Spotify source support. Fixes #1 * Handle empty track being returned from itunes
Diffstat (limited to 'Sources/spotify_source.swift')
-rw-r--r--Sources/spotify_source.swift41
1 files changed, 41 insertions, 0 deletions
diff --git a/Sources/spotify_source.swift b/Sources/spotify_source.swift
new file mode 100644
index 0000000..2e56c8e
--- /dev/null
+++ b/Sources/spotify_source.swift
@@ -0,0 +1,41 @@
+import ScriptingBridge
+
+// Protocol to obtain the track from Spotify
+@objc protocol SpotifyTrack {
+ @objc optional var name: String {get}
+ @objc optional var artist: String {get}
+}
+
+// Protocol to interact with Spotify
+@objc protocol SpotifyApplication {
+ @objc optional var currentTrack: SpotifyTrack? {get}
+}
+
+extension SBApplication : SpotifyApplication {}
+
+// Source that reads track artist and name from current Spotify track
+class SpotifySource: Source {
+
+ // Calls the spotify API and returns the current track
+ var currentTrack: Track? {
+
+ if let spotify: SpotifyApplication = SBApplication(bundleIdentifier: "com.spotify.client") {
+
+ // Attempt to fetch the title from a song
+ if let currentTrack = spotify.currentTrack {
+ if let track = currentTrack {
+ if let name = track.name {
+ if let artist = track.artist {
+
+ return Track(withName: name, andArtist: artist)
+ }
+ }
+ }
+ }
+ }
+
+ return nil
+ }
+
+}
+