Wednesday, December 26, 2007

RubyOSA

RubyOSA を使うとRubyからAppleScriptを操作できる。
例えば以下のスクリプトでiTunesの中の曲をリストできるので、 Rubyから検索したり自動再生したりできる。
require 'rubygems'
require 'rbosa'

OSA::app('iTunes').sources[0].library_playlists[0].tracks.each { |s|
  puts "#{s.name} / #{s.album} / #{s.artist}"
}
この方式だとAppleScript臭が皆無になるのが嬉しいかも。

Sunday, December 23, 2007

RubyでMacの辞書アプリケーションを呼ぶ

アプリケーションのサービスを利用するとMacのアプリケーションの機能を Rubyから呼び出すことができる。 例えば辞書アプリを以下のように呼び出すことができて便利。
require 'osx/cocoa'

p = OSX::NSPasteboard.generalPasteboard                                                                                                                                       
p.declareTypes_owner([OSX::NSStringPboardType],self)                                                                                                                          
p.setString_forType("単語",OSX::NSStringPboardType)                                                                                                                           

OSX::NSPerformService("Look Up in Dictionary", p)

iTunesをRubyで制御する

RubyCocoa経由でAppleScriptを呼ぶことによって RubyからiTunesなどを制御できるようだ。 屋上屋を重ねる感じだが、とりあえず仕方がないのかも。
require 'osx/cocoa'

script = OSX::NSAppleScript.alloc.initWithSource(%{
tell application "iTunes"                                                                                                                                                                                   
  play                                                                                                                                                                                                      
end tell                                                                                                                                                                                                    
})
errinfo = OSX::OCObject.new
result = script.executeAndReturnError(errinfo)