Ruby veya PHP veya Kakao erişme Mac uygulamaları

3 Cevap php

Ben tercihen Ruby farklı Mac OS X uygulamaları bir kaç erişmek istiyorum, ama PHP için razı olur. Uygulamalar Elgato'nun Turbo.264 ve Apple'ın iTunes vardır. Hem AppleScript Kütüphaneler ki bana AppleScript dan ne yapmak istediğinizi yapmak için izin verecek tanımlanan var, ama ben AppleScript bunu yapmak istemiyorum. Ruby veya PHP bunu yapamıyorsanız, belki nesnel C / Kakao bunu ve ben Ruby diyebiliriz sarıcı çeşit oluşturabilirsiniz.

Bu bile mümkün mü? Yöntemler AppleScript mevcut ise diğer dillerde mevcut olması gerektiği gibi görünüyor, ben sadece bir şey bulmak mümkün olmamıştır.

3 Cevap

(http://rubyosa.rubyforge.org) RubyOSA deneyin ve daha sonra bunu yapabilirsiniz:

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

Sen AppleScript destekleyen herhangi bir Mac OS X uygulaması konuşabilirsiniz

Yargılanan appscript (http://appscript.sourceforge.net/rb-appscript/index.html)?

Sitesinden örnek:

Bunun yerine AppleScript,

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

Sen yazmak Ruby:

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

Mac OS X 10.5 (güncel sürüm) Scripting Bridge, Kakao uygulamalardan AppleScript işlevselliği erişim sağlayan bir çerçeve içerir. Sen de access it from RubyCocoa and PyObjC. Temel olarak, bu gibi çalışır:

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"