本文只是草稿
一、OSX 开发中的appleScript支持
在OS X开发中,我们可以使用苹果脚本的,主要是由NSAppleScript的支持,例如退出一个程序,我们可以如下代码实现:
NSString* script = [NSString stringWithFormat: @"tell application \"%@\" to quit", appName]; NSAppleScript* as = [[[NSAppleScript alloc] initWithSource: script] autorelease]; [as executeAndReturnError: nil];
Scripting Bridge技术的目的是在javasc,Ruby, Python,以及 Objective-C等语言中向脚本支持的应用发送apple event。
举例子,我们要获取iTunes当前播放的音乐名称
Applescript中,直接在苹果脚本编辑器中写入以下代码,运行即可:
tell application "iTunes" to get the name of the current track
#!/usr/bin/ruby require "osx/cocoa" include OSX OSX.require_framework 'ScriptingBridge' iTunes = OSX::SBApplication.applicationWithBundleIdentifier_("com.apple.iTunes") puts iTunes.currentTrack.name
#!/usr/bin/python from Foundation import * from ScriptingBridge import * iTunes = SBApplication.applicationWithBundleIdentifier_("com.apple.iTunes") print iTunes.currentTrack().name()
#import <Foundation/Foundation.h> #import <ScriptingBridge/ScriptingBridge.h> #import "iTunes.h" int main() { iTunesApplication *iTunes = [SBApplication applicationWithBundleIdentifier:@"com.apple.iTunes"]; NSLog(iTunes.currentTrack.name); }
注意到上面的例子中,我们导入了“iTunes.h”这个头文件,现在我们来生成该文件。
mac:~ mamong$ sudo ln -s /Applications/Xcode5.app/Contents/Developer/usr/bin/sdef /usr/bin/sdef mac:~ mamong$ sudo ln -s /Applications/Xcode5.app/Contents/Developer/usr/bin/sdp /usr/bin/sdp mac:~ mamong$ sdef /Applications/iTunes.app | sdp -fh --basename iTunes
四、iTunes里有什么
简单的观察一下,iTunes 的脚本编程 API 组织是这样的:在 iTunesApplication 下,可以找到多个来源 (iTunesSource),来源有许多种,比如 music library,比如 CD,比如 iPod 等等,而每个来源里,又按照播放列表 (iTunesPlaylist) 来组织,而每个播放列表中,显而易见地有多个曲目 (iTunesTrack),在上面这个例子里,我们要找的第一个来源 (sources()[0]) 的第一个播放列表 (playlists()[0]),正是你的 iTunes Music Library。援引自http://blog.jjgod.org/2007/11/10/python-itunes-scripting/