ミスミメンテbotをつくった(簡易版)
つくったもの
- メンテ予告をつぶやいてくれるtweetbotを作った.
- 今のところ,メンテの有無にかかわらず,1日1回つぶやく仕様.
ミスミメンテとは
https://jp.misumi-ec.com/jp.misumi-ec.com
- 機械部品とかが買えるサイト.何かとお世話になる機会が多い.
- 時々メンテをしていて,作業しようと思ってメンテだと悲しくなる.
- トップページの上部で予告はされるので確認すればよいのだが,忘れがち.
仕様・しくみ
使用言語とか
- python3
- ちなみにpython2で作り始めたところ,文字列まわりの扱いが悲しいことになった(使いたいものが使えず文字化けが解決できなかった).
メンテ判定
- トップページ上部のお知らせ欄にメンテナンスの文字があるかを調べ,その行の日時の文字列(=予定日時)を抽出.
- お知らせ欄のXPathはchromeのデベロッパーツールから調べた.
- お知らせ欄全体ではなくメンテナンスの行の日時を抽出しているのは災害等による輸送遅延なども書かれる場合がある為
ツイート
- 使い慣れているiftttのwebhookを使った.
- プログラム側から引数を与えることはできるが,ツイート内容の細かい設定はifttt側で行う.
- 利点
- プログラム上では1行でツイートできる
- 欠点
- ソースコードとappletの両方を管理しないといけないのが面倒.辻褄があっていないとバグる.
- ツイートの種類を増やそうとするとappletが増えていくのが面倒
- ツイート内容の自由度が低い
- ただただ気楽に使えるのが良さ.
定期実行
- 「アプリの構築、提供、監視、スケールに役立つクラウドプラットフォーム」らしい
- 今回初めて触った,詳しくない...
- tweetbotの作り方を調べたり聞いたりするとわりとこれが使われている.
- 基本無料
- スケジューラのアドオンを使うと無料で定期実行できる
- アドオンを使うにはクレジットカード(デビットカードでもいけた)の登録が必要ぽい
ソースコード
- よい書き方じゃないかもなので注意
url.py gist.github.com
runtime.txt
- python-3.x.xの数字は公式ドキュメントに書いてあるものにする
- 2系か3系かだけそろえれば以降の数字は手元のバージョンではなく公式ドキュメントの方に合わせる
- 今回は3.7.2
python-3.7.2
- requirements.txt
- Getting Started on Heroku with Python | Heroku Dev Centerをベースにした
- サンプルに最後2行を書き足したら動いた
django gunicorn django-heroku lxml requests
- Procfile
web: gunicorn misumi-tweet.url --log-file -
今後改善したいこと
- ifttt使わず直接tweet
- 設定を一元管理したい
- ツイート内容のバリエーション増やしたい
- メンテ中のツイートにメンテ終了時刻を表示
- 当然メンテ中はアクセスできない(=時刻を取得できない)のでメンテ前にメモっておく仕組みが必要そう