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を利用すると良いでしょう。