itok's Lab

昔の開発ネタを記録として残してます

CD情報取得(AppleScriptとCocoa)

いろんな要素がからんでいるんですが、CocoaからAppleScriptを呼びだして、iTunesを利用することにより、CDドライブに挿入されている音楽CDの情報(CDDB情報)を抜き出します。

まず、単体で動くAppleScriptはこんな感じ。

tell application "iTunes"
    set aCD to first source whose kind is audio CD
    set aPlaylist to playlist 1 of aCD
    set str to name of aPlaylist & " | " & artist of aPlaylist
    return str
end tell

これを実行すれば、結果として、アルバムタイトルと、アーティストを取得することができるでしょう。

で、次に行うのは、それをCocoaから呼び出して、結果を取得します。

1: NSAppleScript* as = [[NSAppleScript alloc] initWithSource:script];
2: NSAppleEventDescriptor* desc = [as executeAndReturnError:&dic];
3: NSString* result = [desc stringValue];
  1. AppleScriptの文字列を指定してNSAppleScriptのインスタンスを生成
  2. AppleScriptを実行し、返り値をNSAppleEventDescriptorで取得
  3. NSAppleEventDescriptorをNSStringに変換

これで、AppleScriptの実行結果をNSStringの文字列resultとして受け取ることができました。あとは、Script側で返り値のフォーマットを工夫すれば、文字列をNSArrayにしたり、PropertyListの形式にしたりすることができるかと思います。