git.fiddlerwoaroof.com
Browse code

Add scripting bridge example

Ed Langley authored on 10/10/2018 09:50:15
Showing 1 changed files
1 1
new file mode 100644
... ...
@@ -0,0 +1,23 @@
1
+(defpackage :objc.scripting-bridge
2
+  (:use :cl :cffi)
3
+  (:export ))
4
+(in-package :objc.scripting-bridge)
5
+(named-readtables:in-readtable :objc-readtable)
6
+
7
+(serapeum:eval-always
8
+  (define-foreign-library scripting-bridge
9
+    (:darwin (:framework "ScriptingBridge"))))
10
+
11
+(use-foreign-library scripting-bridge)
12
+
13
+(defun get-itunes-app ()
14
+  [#@SBApplication @(applicationWithBundleIdentifier:) :pointer @"com.apple.iTunes"])
15
+
16
+(defun get-current-track-info (itunes)
17
+  (let* ((current-track [itunes @(currentTrack)]))
18
+    (format t "~&Track: ~A (~v,1,0,'⋆<~>)~%Album: ~a (~v,1,0,'*<~>)~%Artist: ~a~%"
19
+            [current-track @(name)]@
20
+            (/ [current-track @(rating)]# 20)
21
+            [current-track @(album)]@
22
+            (/ [current-track @(albumRating)]# 10)
23
+            [current-track @(artist)]@)))