]> git.r.bdr.sh - rbdr/lyricli/blobdiff - Sources/spotify_source.swift
Added Spotify source support (#2)
[rbdr/lyricli] / Sources / spotify_source.swift
diff --git a/Sources/spotify_source.swift b/Sources/spotify_source.swift
new file mode 100644 (file)
index 0000000..2e56c8e
--- /dev/null
@@ -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
+    }
+
+}
+