@@ -7,34 +7,74 @@ import (
7
7
"github.com/everdev/mack"
8
8
)
9
9
10
- const isRunningCmd = `
11
- if it is running then
12
- return true
13
- else
14
- return false
15
- end if
16
- `
17
- const artistAndAlbumCmd = `
18
- set ctrack to ""
19
- set ctrack to ctrack & (current track's artist) & "-"
20
- set ctrack to ctrack & (current track's album)
21
- `
22
-
23
- // Runs AppleScript "tell" and returns string shaped Artist-Album
24
- func runAppleScript () (string , error ) {
10
+ // Runs AppleScript "tell" and returns a Track{artist, album}
11
+ func runAppleScript () (Track , error ) {
12
+ err := isRunning ()
13
+ if err != nil {
14
+ return Track {}, err
15
+ }
16
+
17
+ artist , err := artist ()
18
+ if err != nil {
19
+ return Track {}, err
20
+ }
21
+
22
+ album , err := album ()
23
+ if err != nil {
24
+ return Track {}, err
25
+ }
26
+
27
+ track := newTrack (artist , album )
28
+ return track , nil
29
+ }
30
+
31
+ func isRunning () error {
32
+ const isRunningCmd = `
33
+ if it is running then
34
+ return true
35
+ else
36
+ return false
37
+ end if
38
+ `
39
+
25
40
isRunning , err := mack .Tell ("Spotify" , isRunningCmd )
26
41
if err != nil {
27
- return "" , errors .New ("Could not exectute AppleScript properly" )
42
+ return errors .New ("Could not exectute AppleScript properly" )
28
43
}
44
+
29
45
if isRunning == "false" {
30
- return "" , errors .New ("Spotify is not running, please open the app" )
46
+ return errors .New ("Spotify is not running, please open the app" )
47
+ }
48
+
49
+ return nil
50
+ }
51
+
52
+ func artist () (string , error ) {
53
+ const artistCmd = `
54
+ set ctrack to ""
55
+ set ctrack to ctrack & (current track's artist)
56
+ `
57
+
58
+ artist , err := mack .Tell ("Spotify" , artistCmd )
59
+ if err != nil {
60
+ e := fmt .Sprintf ("Could not exectute AppleScript properly: %s" , err )
61
+ return "" , errors .New (e )
31
62
}
32
63
33
- output , err := mack .Tell ("Spotify" , artistAndAlbumCmd )
64
+ return artist , nil
65
+ }
66
+
67
+ func album () (string , error ) {
68
+ const albumCmd = `
69
+ set ctrack to ""
70
+ set ctrack to ctrack & (current track's album)
71
+ `
72
+
73
+ album , err := mack .Tell ("Spotify" , albumCmd )
34
74
if err != nil {
35
75
e := fmt .Sprintf ("Could not exectute AppleScript properly: %s" , err )
36
76
return "" , errors .New (e )
37
77
}
38
78
39
- return output , nil
79
+ return album , nil
40
80
}
0 commit comments