球春到来!
今年もプロ野球が開幕し、連日熱い試合が各地で繰り広げられています。贔屓チームの調子は如何でしょうか。自分は長年のスワローズファンですが、最近は贔屓の試合結果以外にも気になることがあります。
そう、それはバファローズポンタです。
目次
バファローズポンタとは
皆さんご存知、ポイントがポンポン貯まるでおなじみ、狸のキャラクター“ポンタ”!
彼がオリックス・バファローズとスポンサー契約をした事により誕生したマスコットがバファローズ・ポンタです。詳しい説明は以下を参照下さい。
これだけ聞くと「何がおもろいねん?」と思うかもしれませんね。わかります。
バファローズ・ポンタにはTwitterの公式アカウントがあり、
①試合前の応援ツイートと画像
②試合後の結果ツイートと画像
基本的に上記①,②をプロ野球シーズンのオリックス・バファローズの試合の日に呟いてくれます。
このツイートに添付される画像が中々にキュートかつ秀逸なものが多く存在します。(特に負けた時の画像)
ネット上で話題になったりするので、一度は目にした事があるかもしれません。まだ見たことがない人は是非とも、Twitterアカウントをチェック!
友人とのLINEのやり取り
私もこのバファローズ・ポンタは相当気に入っていますが、私のとある友人もすっかりファンになってしまい、バファローズ・ポンタのツイートが更新されると以下のようにお知らせしてくれます。
まじでしょうもないやりとりですね。
しかし、手動で追いかけるのには限界があり、シーズンを通すと見逃してしまう事も多々あります。
なによりこんなことに人生のリソースを割くのは心底虚しいです。
ブログのネタついでに、これらを自動化しようと目論みました。
尚、通知サービスなんて死ぬほどあるとは思いますが、暇つぶしにCentOS7で一連の作業を自動化しようと思います。
ポンタのつぶやきを追跡する
まずはポンタのつぶやきを監視し、画像が投稿されたら画像を取得するようにします。
今回は「berryjack」というTwitter画像、一括ダウンロードシェルスクリプトを使います。
Twitterの画像を一括ダウンロードするシェルスクリプト「berryjack」を書いた。 – dyama's page
まずはCentOS7にこちらを用意します。nkfはberryjackを使う前にインストールしておきます。
# cd /usr/local/src # yum localinstall -y http://mirror.centos.org/centos/6/os/x86_64/Packages/nkf-2.0.8b-6.2.el6.x86_64.rpm # git clone https://github.com/dyama/berryjack.git # cd berryjack/ # mkdir -p ponta
早速berryjackを使ってみます。berryjackディレクトリ内に作ったpontaディレクトリをダウンロード場所に指定し、ポンタのTwitterID「bs_ponta」を引数で渡してあげると…
# ./berryjack -d /usr/local/berryjack/ponta/ bs_ponta # ls ./ponta/ |wc -l 315
ポンタの過去数年間のつぶやき画像が取得されます。次回実行時からは、つぶやきが更新された場合のみ新規画像をダウンロードするようになります。
LINEへの通知
これも今回調べてみて初めて知ったのですが、LINEをコマンドラインから使用出来る「LINE Notify」なるものがありました。
まずはLine NotifyにLINEのIDでログインします。
ログインしたら、画面下部にある、「アクセストークンの発行」を選択します。
続いてLINE Notifyで通知するグループを選択します。
アクセストークンが発行されます。表示されたアクセストークンは、コマンドラインからLINEに投稿する際に使うのでコピーしておいて下さい。
試しにコマンドラインからなんか投稿してみます。
# curl -X POST https://notify-api.line.me/api/notify -H 'Authorization: Bearer <取得したLINE Token>' -F 'message=test' -F "imageFile=@/usr/local/berryjack/ponta/ChL1uQvUkAA-v9d.jpg"
LINEの画面を見てみると…
ちゃんとポンタの画像がLINE Notifyから投稿されています。
ディレクトリの監視
berryjackは新規の画像が投稿されない限り、画像のダウンロードは実施されないので、とりあえず画像がダウンロードされるディレクトリ(/usr/local/berryjack/ponta)が更新されたタイミングでPOSTするようなシェルスクリプトを容易しておきます。
以下サイトを参考に作成してみました。
参考サイトはファイルですが、lsのオプションに-dでディレクトリの時間を取得出来ます。そんで60秒間隔でディレクトリの更新時間を確認し、更新されていれば、curlするという形に変更しました。
# vim ponta.sh #!/bin/sh mon=/usr/local/berryjack/ponta api='https://notify-api.line.me/api/notify' token='<取得したトークン>' INTERVAL=60 last=`ls -d --full-time "$mon" | awk '{print $6"-"$7}'` while true; do sleep $INTERVAL current=`ls -d --full-time "$mon" | awk '{print $6"-"$7}'` if [ $last != $current ] ; then echo "updated: $current" last=$current newponta=`ls -1t "$mon" | head -1` curl -X POST "$api" -H "Authorization: Bearer $token" -F "message=$current" -F "imageFile=@$mon/$newponta" fi done
後はシェルスクリプトに権限を付与し、バックグラウンドで実行させておきます。
#chmod 755 ponta.sh #nohup ./ponta.sh &
後はcronでberryjackを5~10分感覚くらいでcron実行しておきます。
# crontab -l */5 * * * * /usr/local/berryjack/berryjack -d /usr/local/berryjack/ponta/ bs_ponta
これで本日の試合開始&終了時にLINEに投稿されれば成功ですが、結果は…
無事、試合開始前と後に画像が投稿されていました。バッチリ!