プリカ等のポイント数をMackerelでグラフ化するためのPerlスクリプト (現時点でDoutor, Tully's, Rakutenに対応)

ドトール専用のものは退役

昨日2017/10/18の記事で紹介した、ドトールバリューカードのポイント数を、サーバ管理・監視ツールのMackerelに投稿するために作った自作Perlスクリプト「dvc2mackerel.pl」、いきなりですが更新終了とし、退役させます。

どうせなら各種カード対応型を作る

なぜかというと、今日仕事の後にタリーズでまったりお茶していた際、1) タリーズカードにも対応させたくなり、2) それならば他の様々なカードにも対応できるよう、プログラムのコアは共通化して処理系を拡張しやすい形で作り直すべき!と閃いたためです。

今回産まれた、各種カード対応型のPerlスクリプトの名前は「point2mackerel.pl」。GitHubページ https://github.com/mah-jp/point2mackerel で公開しはじめましたので、利用したい方はGitHubページを参照してもらえますと幸いです。

現時点での対応カードと使用方法

このpoint2mackerel.plが対応しているカードは、現時点では次の通りです。

MODE文字列 カード名 備考
doutor ドトールバリューカード (Doutor Value Card) http://doutor.jp/
tullys タリーズカード (Tully’s Card) https://www.tullys.co.jp/cpn/tullyscard/ ※所有カードが複数枚ある場合の動作は未確認
rakuten 楽天ポイントカード (Rakuten Point Card) https://pointcard.rakuten.co.jp/ ※総保有ポイントのみ対応

point2mackerel.plの使用方法

  1. git clone https://github.com/mah-jp/point2mackerel でファイルを取得します。
  2. point2mackerel.ini を編集し、必要な分のカードのアカウント情報を記入します。(未記入のカードがあっても下記のMODEで指定しなければ問題ありません)
  3. テストとして point2mackerel.pl MODE を実行し、指定したカードのポイント数が標準出力できていることを確認します。

    $ ./point2mackerel.pl doutor
    1869
    
  4. 引数に「-j」を指定すると標準出力がJSON文字列の形式に切り替わります。

    $ ./point2mackerel.pl -j doutor
    [ {"name": "Point.Doutor", "time": 1508429746, "value": 1869} ]
    
  5. そこで、たとえば次のようなcronを設定すると、毎時00分と30分に、Mackerelにポイントのデータが投稿されるようになります。

    0,30 * * * * curl https://api.mackerelio.com/api/v0/services/+++++YOUR-SERVICE-NAME+++++/tsdb -H 'X-Api-Key: +++++YOUR-API-KEY+++++' -H 'Content-Type: application/json' -X POST -d "$(/path/to/point2mackerel.pl -i /path/to/point2mackerel.ini -j +++++MODE+++++)"
    

各種プリペイドカード公式サイトでのログイン遷移の挙動や、HTMLソースをうまく読み取ることができれば、意外に簡単に対応カードを増やせそう。次は何カードを追加しよう? (何カードだったらウケるだろう……) と、発展ネタを考えられるのは楽しいですね。