将棋ウォーズの対局履歴ページは、悔しい負け方をした対局の一人感想戦をしたり、棋譜データを収集したりするのにとても便利ですよね。
ただ、この履歴ページには制限があって、特定の期間内しか対局データが表示されなくなっているようです。(仕様は不明確ですが、例えば自分の履歴ページの場合直近20日間程度の対局データのみ表示されています。)
でも履歴ページ上に表示されなくなったとしても、実は各対局の パーマリンク は有効なままなので、URL さえちゃんと分かっていれば過去の対局ページにはアクセスできるんですよね。
というわけで、過去の対局ページ URL を保存しておく簡単なツールを PHP で作ってみました。
概要
作ったツールはこちらです。
大まかに次のような機能からできています。
- 対局履歴ページをスクレイピングして、取得した対局データを CSV ファイルに保存します。
- 保存された CSV データから一覧ページを表示します。
ちなみに、今回スクレイピングには Goutte を使ってみましたが、いやこれ超便利ですねー。
使い方
さて使い方ですが、大したプログラムでもないので特別に難しいところはありません。
まず、GitHub から git コマンドでソースをチェックアウトします。
$ git clone git@github.com:ko31/swh.git
※または zip ファイルをダウンロードして解凍するのでも大丈夫です。
次に、history.csv、lasttime.dat の2ファイルに書き込み権限を与えておきます。
(例)
$ cd swh
$ chmod 666 history.csv
$ chmod 666 lasttime.dat
get.php を編集して、$user を自身の将棋ウォーズユーザー名に変更します。
// ユーザー名
$user = 'ko31';
これで準備は OK です!
あとは、get.php を php コマンドで実行するか、ブラウザからアクセスしてみて、history.csv に対局履歴データが保存されれば成功です。
これを手動で実行するなり、cron などスケジューラを使うなりして get.php を定期的に実行していけば、継続的に対局履歴データを蓄積することができるわけです。
なお、view.php にブラウザでアクセスすると history.csv に保存されたデータを一覧表示することもできます。
使い方は以上です。
まとめ
思い立ってからとりあえず作ってみたのでだいぶ汚いソースですが、自分と同様にまず履歴を保存しておきたいと用途には使えるかと思います。気が向いたら近いうちにまたコードを手直ししたいところです。
なお、将棋ウォーズの対局履歴ページの仕様は公開されているわけではないので、あくまで自分のユーザーページでのみ動作を確認したプログラムとなります。他のユーザーによっては正常動作しないこともあるかもしれませんが、ご了承ください。
2015/04/28追記
改良版の下記ツールもあります。よろしければ合わせてご覧ください!