From d1a147d40ae00fd1f9f48a0b5e2f8a798849fd3d Mon Sep 17 00:00:00 2001 From: Essau Ramirez Date: Sat, 25 Nov 2017 13:22:29 -0600 Subject: Added Spotify source support (#2) * Added Spotify source support. Fixes #1 * Handle empty track being returned from itunes --- Sources/spotify_source.swift | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 Sources/spotify_source.swift (limited to 'Sources/spotify_source.swift') 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 + } + +} + -- cgit