Browse code
Add scripting bridge example
Ed Langley authored on 10/10/2018 09:50:15
Showing 1 changed files
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)]@))) |