Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Accessing Mac applications from Ruby or PHP or Cocoa

I would like to access a couple of different Mac OS X applications from preferably Ruby, but I would settle for PHP. The applications are Elgato's turbo.264 and Apple's iTunes. Both have Applescript Libraries defined that would allow me to do what I want to do from Applescript, but I don't want to do this in Applescript. If I can't do this in Ruby or PHP, perhaps I can do it in objective C / Cocoa and create some kind of wrapper that I could call from Ruby.

Is this even possible? It seems like if the methods are available in Applescript they should be available in other languages, I have just not been able to find anything.

like image 354
Scott Avatar asked May 14 '26 04:05

Scott


2 Answers

Try RubyOSA (http://rubyosa.rubyforge.org) and then you can do this:

require 'rbosa'
itunes = OSA.app('iTunes')

track = itunes.current_track
p track                     # <OSA::Itunes::FileTrack:0x1495e20>
p track.name                # "Over The Rainbow" 
p track.artist              # "Keith Jarrett" 
p track.duration            # 362.368988037109 
p track.date_added.to_s     # "2006-06-30" 
p track.enabled?            # true

# Play the selected track.
itunes.play                    

# Fade the volume.
100.times { |i| itunes.sound_volume = i; sleep 0.1 }  

# Set iChat's status message to the current track.
OSA.app('iChat').status_message = "Playing: #{track.name}"

You can talk to any Mac OS X app that supports AppleScript

like image 101
Rod Schmidt Avatar answered May 16 '26 18:05

Rod Schmidt


Tried appscript (http://appscript.sourceforge.net/rb-appscript/index.html)?

The example from the site:

Instead of AppleScript:

tell application "TextEdit"
    get paragraph 1 of document "ReadMe"
end tell

You write in Ruby:

app('TextEdit').documents['ReadMe'].paragraphs[1].get
like image 41
also Avatar answered May 16 '26 19:05

also



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!