連続して画面キャプチャーする

 Web関係の仕事をしていて雑誌や書籍に画面キャプチャーして編集者に送ったりしないといけないことがあります。リファレンス系の雑誌では、場合によってはサンプル1つごとにキャプチャーしたりしないといけないこともあります。また、Webサイトをいくつか紹介したり、たくさんキャプチャーしたりしないといけないことがあります。
 そんな場合には連続して指定されたURLのページがキャプチャーできると便利です。また、定期的に特定のサイトのスナップを撮っておく事もできます。

 まず、以下のスクリプトをエディタで入力し改行コードをUNIX (LF)にしwebcap.shのように拡張子をshにします。

#!/bin/sh
Num=1
for url in `cat ~/list.txt`
do
open -a /Applications/Safari.app $url
sleep 5
screencapture -x $Num.pdf
Num=$(($Num+1))
done

 次にターミナルを起動して以下のように入力します。

chmod 700 保存したファイル名

このようにパーミッションを設定します。次に以下のようにキャプチャーしたいURLを列記したファイルを作成し、ホームフォルダにlist.txtというファイル名で保存します。

http://www.yahoo.co.jp/
http://www.openspc2.org/
http://www.google.co.jp/

 これも改行コードはUNIX (LF)にして保存してください。
 終わったら、ターミナルからスクリプトを実行します。(ここではwebcap.shという名前とします)

./webcap.sh

 Safariが起動し、指定ページが読み込まれ表示されます。5秒経過すると全画面キャプチャーされます。保存するファイルは連番のPDFになります。表示されてから何秒後にキャプチャーするかは

sleep 5

の5の値を変えて下さい。1とすると1秒になります。10だと10秒です。

 まあ、上記のスクリプトを実行すると分かりますが、いまいち実用的でないという感じです。実際には表示されたページのあるウィンドウをキャプチャーしたいところです。また、場合によっては手動でフォームなどに文字を入力したり、何か操作する必要が出てくる場合もあります。そのような場合には、手動でキャプチャーするウィンドウを選択できると便利です。
 それが以下のスクリプトです。

#!/bin/sh
Num=1
for url in `cat ~/list.txt`
do
open -a /Applications/Safari.app $url
sleep 5
screencapture -iW $Num.pdf
Num=$(($Num+1))
done

 先ほどと同様にエディタ等で入力し保存してください。パーミッションの変更も忘れずに行います。
 スクリプトを実行すると指定されたURLのページが表示されます。5秒間の猶予があるので、その間にいろいろ準備します。キャプチャー時間になるとカーソルがカメラになるのでキャプチャーしたいウィンドウをクリックします。キャプチャーすると自動的に保存され次のページが表示されます。これが、list.txtで示されたURL分だけ繰り返されます。

 実際にはHTMLファイルだけでなくPDFなどブラウザで開くことができ、ヘルパーアプリケーションが設定されていれば、そのアプリケーションでのキャプチャーもできるはずです。
 URLが異なると次々とウィンドウが開いてしまいます。閉じたい場合にはAppleScriptで処理しないと駄目じゃないかと思います。その場合にはAppleScriptを呼び出すosascriptを利用すると良いでしょう。



[サンプルをダウンロード]