2013年3月3日日曜日

フォルダの背景の花粉情報予測マップ画像表示の自動化 (スクリプト編)

前の記事でフォルダの背景に花粉情報予測マップ/地図の表示を毎日、自動でできるようにしました。
ただ、読んでいただけた方にはわかると思いますが、結構手順が長いです。ブログを書くのも相当時間がかかりました。Automatorはある程度決まったことを行うのは便利ですが、細かいところを弄ろうとすると冗長な感じがします。

そこで、今回は、手順が短くなることを期待してスクリプトベースで、花粉マップを更新したいと思います。スクリプトは、シェルスクリプトとAppleScriptを考えています。

花粉マップを表示するフォルダは、Automatorの時と同じくtest、花粉マップをダウンロードするフォルダは、test/kafunにします。

例によって、流れは以下のとおりです。
  1. 花粉マップ画像をダウンロード
  2. AppleScriptで花粉マップ画像をフォルダの背景に設定
  3. crontabで自動実行をスケジュール

1. curlコマンドで花粉マップ画像をダウンロード

できるだけMac OS Xにはじめから入っているコマンドで実行したいと思います。花粉マップ画像のダウンロードはcurlコマンドを用います。フォルダ(ディレクトリ)をダウンロードする場所に移り、古い花粉マップを別名で保存しておき、ダウンロードします。
次のようになります。

cd /Volumes/Disk1/DL/test/kafun
mv -f pollen_mesh_large.jpg pollen_mesh_large.jpg.old
curl -sO http://season.tenki.jp/component/images/pollen_mesh_large.jpg


2. AppleScriptで花粉マップ画像をフォルダの背景に設定

AppleScriptは以下のようになります。


tell application "Finder"

set theFolder to "/Volumes/Disk1/DL/test" as POSIX file

set theFile to "/Volumes/Disk1/DL/test/kafun/pollen_mesh_large.jpg" as POSIX file

open folder theFolder
set background picture of the icon view options of window 1 to theFile
end tell


上記のApplescriptをシェルからosascriptコマンドで実行します。理由は、1.と2.のスクリプトを一つのファイルにしたいためです。

1.と2.のスクリプトをまとめて整形したものが以下です。AppleScriptの2回目のset background pictureは前回の記事と同じで、対象のフォルダを開きっぱなしにしておくと設定がすぐに反映されなかったためです。


#!/bin/sh

TARGET="/Volumes/Disk1/DL/test"
DLURL="http://season.tenki.jp/component/images/pollen_mesh_large.jpg"
DLFolder="/Volumes/Disk1/DL/test/kafun"
IMG=`basename "$DLURL"`
IMGPath="$DLFolder/$IMG"

cd "$DLFolder"
if [ -e "$IMG" ]; then
    mv -f "$IMG" "$IMG.old"
fi
curl -sO "$DLURL"

cat <<EOF | osascript >/dev/null
tell application "Finder"
    set theFolder to "$TARGET" as POSIX file
    set theFile to "$IMGPath" as POSIX file
    open folder theFolder
    set background picture of the icon view options of window 1 to theFile
    set background picture of the icon view options of window 1 to theFile
end tell
EOF


以上を、ここでは、/Volumes/Disk1/DL/test/kafun/kafunbg.shとして保存します。
また、以下のコマンドで実行権を付けます。

$ chmod a+w /Volumes/Disk1/DL/test/kafun/kafunbg.sh


3. crontabで自動実行をスケジュール

2.で作成したシェルスクリプトが実行されるのを確認します。
特に問題ないようでしたら、自動実行できるようにします。
最近はlaunchdで自動実行するのがいいようですが、ここではcrontabを使います。
growlnotifyをiCalのアラーム代わりに使ってみるの(3)も参考にしてください。

crontab -lで現在の設定を確認した後、以下のコマンドで、シェルスクリプトを追加してください。


$ crontab -e

デフォルトのエディタ(通常はvim)で、crontabの定義画面が起動します。

朝6時55分に実行する場合は、以下のようになります。

55 6 * * * /Volumes/Disk1/DL/test/kafun/kafunbg.sh

既に他の定義がしてある場合は、最後の行にでも追加するといいと思います。
そのうち、launchdでの説明も書きたいですが、ちょっと時間がかかりそうです。

0 件のコメント:

コメントを投稿