トップ 最新

ただのにっき

2016-10-31(月) [長年日記]

jpholidaypコマンドを使って平日だけ弁当を自動注文するようにした

職場で運用してる(自作の)たまご屋弁当の注文サービス、毎朝出社する前に自宅から注文していくようにしてるんだけど、今月は何度か忘れてしまって、こういう簡単な習慣すらも忘却してしまうのが老いなのか……とがっくりきているわけですが(←ただのうっかり者だろう)。

RTMに繰り返しタスクを入れておくのも良いが、せっかくサーバサイドをRestful APIで作ってあるんだから、自動化すればいいんである。

課題は2つ。

  • 営業日のみ注文したい(土日と祝祭日は避ける)
  • 弁当が不要な日には手動でキャンセルしたい

ふたつめの課題は単純で、注文したことを通知すればいい。以前作ったpushmeコマンドを使ってPushBulletに送りつけるようにした。意図しない注文がされたらすぐにキャンセルすれば良い。問題なければ無視するだけ。

ひとつめの課題は、日本の不規則な祝祭日を考慮するのが面倒なんだけど、k1LoW/holiday_jpというデータを使ったemasaka/jpholidaypというコマンド(要Python)があったのでありがたく利用*1

こんな感じのコマンドを毎朝実行するcronで回せばよくなった*2:

#!/bin/sh
if jpholidayp; then
   echo "週末なので弁当は注文しませんでした。" | pushme bento
else
   charge={curl -s -d "date=`date +%Y%m%d`" https://example.jp/hoge`
   echo "弁当を注文しました。残金${charge}円です。" | pushme bento
fi

あー、気が楽になった(←サービスがエラーになった場合を考慮してないぞ!!)。

*1 同じような(というか関係者が同じ?)holiday-jp/holiday_jpというプロジェクトもあってどっちも更新されてるっぽいのが気になるんだけど……。

*2 jpholidaypコマンドはcrontabの中で使うことを想定してるっぽいけど、run-partsを使って楽をしているのでコマンドの中で使った。