blob: 2e56c8e273f2186f3243a6163b8a6cbcb5a19c5c (
plain)
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
|
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
}
}
|