2009-08-15 6 views
3

Je voudrais accéder à quelques applications Mac OS X de préférence Ruby, mais je me contenterais de PHP. Les applications sont turbo264 d'Elgato et iTunes d'Apple. Les deux ont des bibliothèques Applescript définies qui me permettraient de faire ce que je veux faire à partir de Applescript, mais je ne veux pas le faire dans Applescript. Si je ne peux pas le faire en Ruby ou PHP, peut-être que je peux le faire dans l'objectif C/Cocoa et créer une sorte de wrapper que je pourrais appeler à partir de Ruby.Accéder aux applications Mac depuis Ruby ou PHP ou Cocoa

Est-ce même possible? Il semble que si les méthodes sont disponibles dans Applescript, elles devraient être disponibles dans d'autres langues, je n'ai tout simplement pas pu trouver quoi que ce soit.

Répondre

4

Essayez RubyOSA (http://rubyosa.rubyforge.org) et vous pouvez faites ceci:

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}" 

Vous pouvez parler à une application Mac OS X qui prend en charge AppleScript

3

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

L'exemple du site:

Au lieu de AppleScript:

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

Vous écrivez à Ruby:

app('TextEdit').documents['ReadMe'].paragraphs[1].get 
+0

Je suis curieux de savoir pourquoi cette réponse a reçu 3 voix tandis que le RubyOSA n'en a reçu qu'un seul. Les réponses semblent très similaires en recommandant simplement un outil différent - y a-t-il quelque chose de mieux sur rb-applescript? – Scott

+0

Je pense que c'est essentiellement cette réponse qui vient en premier, et ils sont plus ou moins égaux. Si plusieurs réponses sont équivalentes, les gens n'en choisiront souvent qu'un comme représentant. Personnellement, je n'ai jamais trouvé de grande différence entre Appscript et RubyOSA. – Chuck

3

Mac OS X 10.5 (la version actuelle) comprend le Scripting Bridge, un cadre qui vous permet d'accéder aux fonctionnalités AppleScript à partir des applications Cocoa. Vous pouvez également access it from RubyCocoa and PyObjC. Fondamentalement, cela fonctionne comme ceci:

require 'osx/cocoa' 
require_framework 'ScriptingBridge' 
include OSX 

iTunes = SBApplication.applicationWithBundleIdentifier 'com.apple.iTunes' 
iTunes.activate 
puts "Play #{iTunes.currentTrack.name}?" 
iTunes.playpause if gets.strip == "Yes" 
Questions connexes