Sha256: 4954085d9d8a88bb2a669ea338b98cdbd06f2a86eb0553de93427f0c92c105a1
Contents?: true
Size: 1.13 KB
Versions: 1
Compression:
Stored size: 1.13 KB
Contents
require 'osx/cocoa' class ITunesObserver VERSION = '0.0.2' def initialize(&callback) observer = Observer.alloc.init observer.observe(&callback) end def run(stop_after = nil) if stop_after OSX::NSRunLoop.currentRunLoop.runUntilDate(Time.now + stop_after) else OSX::NSRunLoop.currentRunLoop.run end end # based on http://blog.8-p.info/articles/2006/12/24/rubycocoa-skype-itunes class Observer < OSX::NSObject def onPlayerInfo(info) if info.userInfo['Player State'] == 'Playing' result = Result.new(info.userInfo) @callback.call(result) end end def observe(&callback) @callback = callback center = OSX::NSDistributedNotificationCenter.defaultCenter center.addObserver_selector_name_object_(self, 'onPlayerInfo:', 'com.apple.iTunes.playerInfo', 'com.apple.iTunes.player') end end class Result def initialize(attributes) @attributes = attributes end def [](key) case value = @attributes[key] when OSX::NSCFString value.to_s else value end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
itunes-observer-0.0.2 | lib/itunes_observer.rb |