ダーツに嵌ってレーティングをチェックしては一喜一憂してます。しかしこのレーティング、LiveのHPでは月単位でしか増減がわからない。
これではやる気もそがれてしまうので。。。LiveのHPからデータを取得してはてなグラフで可視化してみました。
ゴール
自分の所属するグループ全員のRatingの遷移をはてなグラフにしたい。
ダーツライブHPからデータ抜き出し。
まずはライブのHPからデータを抜き出さなければなりません。
これは普通にHttpURLConnectionクラスを使用して会員ページにログインしグループメインからランキングのHPを取得します。
ランキング部分のHTMLは以下見たいになってるのでここから名前とレートを取得する。
最初はhtmlparserで情報を取ろうとしたんだけどタグに名前が付いていなかったりめんどくさかったので力技で抜き出しました。
1 7.61 pts ぺんたさ そしたら後はとうろくするだけ!
はてなグラフに登録する。
はてなはWSSE認証なのでちょっと工夫が必要。サイトにRubyとPerlのサンプルしか載っていないし、Javaはマイナーなんだね。
しかしこれはあくまで「それJava」なのでJavaで頑張る。
ここを参考に実装。プロキシサーバーの設定が無かったので「executeMethod」内にプロキシの設定が出来るように追加してあげる。
HostConfigurationクラスにProxyの設定場所があるのでそこに設定して一緒に渡して上げればよい。method.addRequestHeader("X-WSSE", this.getWsseHeaderValue(username, password)); HostConfiguration hostConfiguration = new HostConfiguration(); hostConfiguration.setProxy("proxy", 8080); super.executeMethod(hostConfiguration, method);これさえできればはてなに登録する部分はこんななにシンプルに。
package jp.co.pentasa; import org.apache.commons.httpclient.NameValuePair; public class はてなグラフぱぶりっしゃー { public void publishRatingData(String userName, String rate) throws Exception { String urlStr = "http://graph.hatena.ne.jp/api/data"; NameValuePair nv = new NameValuePair("graphname", userName + "のRating"); //NameValuePair nv1 = new NameValuePair("date","2008-03-06"); //日付を設定する場合 NameValuePair nv2 = new NameValuePair("value",rate); NameValuePair[] nvA = {nv,nv2}; WsseHttpClient cli = new WsseHttpClient(); cli.post(urlStr, nvA ,"userName","userPass"); } }できたー
過去データは反映できないので手入力してみてみると。こんなかんじ。
後はこれをタスクスケジューラー登録して毎日10時に動かすだけ♪
have a nice darts!!