AppleScript で iPhone 用に動画を変換する作業を自動化する(ただし,面倒なところは Ruby に任せる)
最近,MacBook Pro にためてきた動画を iPhone でも見られるようにしたくなりました.しかし,iPhone で再生できるのは .m4v 形式なので,この形式に動画を変換する必要があります.幸い,Mac OS X に付属の QuickTime Player 7 を使えば iPhone 用 .m4v を作成できるので,ファイルを一つ一つ開いてマウスでカチカチやっていけば,いずれは全部 .m4v になります.しかし,この方法ではきっと 13 ファイル目くらいで心が折れるので,AppleScript を使って作業を自動化することにしました.
AppleScript とは
AppleScript とは Apple 製のスクリプト言語で,Mac のアプリケーションをスクリプトから操作するために利用されます.AppleScript は Mac OS X の一部として提供されるので,面倒なインストールは不要です.AppleScript を使えば面倒な作業を自動化することができます.
AppleScript を勉強してみる
AppleScrip が何か分かったところで AppleScript を勉強してみます.
アプリケーションへのコマンドの送り方
AppleScript でアプリケーションを操作するには,アプリケーションに相当するオブジェクトにコマンドを送ります.アプリケーションにコマンドを送るには,
tell application アプリケーション名
一つめのコマンド
二つめのコマンド
...
end tell
と,tell 文を使います.iTunes で "My Top Rated" というプレイリストを再生して 5 秒後に停止するスクリプトを例に挙げると,
tell application "iTunes" play the playlist named "My Top Rated" delay 5 stop end tell
となります.
AppleScript の勉強をあきらめてみる
と,ここまで AppleScript の基本を勉強したところで,AppleScript の修得をやめます.AppleScript は単にコマンドを発行するだけではなく,制御構造をもったプログラミング言語なのです.しかし,私にとって制御構造を書くのなら Ruby のほうが楽なので,AppleScript はアプリケーション操作のコマンドを発行するためだけに使い,他の部分は Ruby で書きます.
osascript(1)
コマンドラインから AppleScript を実行するには osascript(1) を利用します.Ruby から AppleScript を実行する方法としては RubyCocoa を使う方法もあるのですが,簡単なのでこちらを使います.osascript には標準入力から AppleScript を渡します.
できたプログラム
以上の知識を利用してプログラムを書いてみました.例によって gist ではりつけます.
このプログラムを使うには,コマンドラインから,
$ /usr/bin/ruby movie_importer.rb foo.mpg bar.mp4 ...
などとします.
おわりに
iPhone 用に動画を変換する作業を AppleScript で自動化しようとしましたが,途中で面倒くさくなって Ruby も使いました.本当は AppleScript を使わなくても RubyCocoa の QTKit 経由で Ruby だけもで同じことができるのですが,お手軽な方法で目的を達成したので,これで終わりとします.
参考
- Doug's AppleScripts for iTunes » AppleScript Basics
- AppleScript Editor の [Window] メニューから [Library] を選択して表示される API リファレンス
- QuickTime Player 7 のコマンドを調べるのに使いました