ただ、読んでいただけた方にはわかると思いますが、結構手順が長いです。ブログを書くのも相当時間がかかりました。Automatorはある程度決まったことを行うのは便利ですが、細かいところを弄ろうとすると冗長な感じがします。
そこで、今回は、手順が短くなることを期待してスクリプトベースで、花粉マップを更新したいと思います。スクリプトは、シェルスクリプトとAppleScriptを考えています。
花粉マップを表示するフォルダは、Automatorの時と同じくtest、花粉マップをダウンロードするフォルダは、test/kafunにします。
例によって、流れは以下のとおりです。
- 花粉マップ画像をダウンロード
- AppleScriptで花粉マップ画像をフォルダの背景に設定
- 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 件のコメント:
コメントを投稿