ディズニーストアのツムツムの在庫を自動で確認するTwitterのbotを作った

作ってみた。

こんな感じのTwitterアカウント。

説明

以前も書いたけど、ツムツムが楽しい。そうなってくると、リアルツムツム、つまりぬいぐるみのツムツムが欲しくなるのは当然の流れ。

すでにいくつか持ってるんだけど、欲しいのに品切れで買えないツムがいくつかある。

ここで「在庫なし」ってなってるのが結構あるのがわかると思う。そして、わりと頻繁に在庫は増えるらしい。しかしすぐまた売り切れたりする。在庫だけじゃなく、新しく発売されるものもある。

仕方ないので、暇さえあればこのページで在庫をチェックしてたんだけど、それもだんだん面倒になってきて、自動化したいってことで、Twitterbotとして作ってみた。

在庫状況に変化があると自動的にツイートするよ。ここで「在庫あり」とか「新登場」っていうのを見たらすぐに買いに行けばおk。

まあこの情報は通販の在庫だけど、自分の体感としては店舗の在庫もこれに近い感じな気がしている。入荷のタイミングが近いというか。

興味ある人は、このアカウントをフォローするなどしてご利用ください。情報の正確性は保証しないけど。

仕組み

とりあえずコードはGitHubに置いた。

コマンドラインで動かすRubyスクリプト。実質プログラムは1ファイルしかないし、非常に短いので、まあ見ればわかると思う。

ディズニーストアのサイトの仕組み的に、JavaScriptAPIを呼び出して、商品1つずつの在庫状況を動的に取得してた。SKU(商品番号のようなもの)を渡すと在庫数を返すAPIがあるということ。なので、それをそのまま使う形で作った。

最初にページのHTMLを元にSKUの一覧を抽出して、ひとつずつAPIを呼び出して在庫を調べ、前回チェック時と比較して、変化があればツイートする。

ページのHTMLも、APIが返してくるXMLもシンプルだったので、ちゃんと真面目にパースするのではなく、正規表現で抜き出す感じでいけたので簡単だった。

これは単なるスクリプトなので、botとして自動で運用するには、cronか何かで定期的に実行する仕組みが必要。今回のbotアカウントは、自分が契約しているさくらインターネットのサーバーでこのスクリプトを15分ごとに動かすようにしている。

また、ツイートするURLは設定ファイル config.rb で自由に決められるようなっていて、とりあえずGitHubに置いたコードのデフォルト状態ではディズニーストアのサイトの商品ページにしてあるけど、実際に動かしてる今回のbotアカウントでは、自分で用意した専用サイト(http://tsum.nacookan.com/)に飛ぶように変更している。Twitterに一度投稿しちゃうと修正ができないので、いきなり外部のストアに飛ぶのではなく、いったん自分が管理するURLに飛ばすようにすれば、そこの情報はいつでも直せるという感じ。