はてなAPI for Java
id:Yoshiori さんの「Java API for Hatena」を参考に、グラフのデータを取得するクラスをとりあえずざくっと作ってみた(Log4Jがエラー吐いてるのはとりあえず無視・・・)
どうやらちゃんと取れてるみたい。あとはこれをグラフに書き出したりテーブルにしたりするのがいるかなー
Todo:
Map
Memo:
ウェブのデータの値入力画面で”ひらがな”を入力すると値が”0.00”にFixUp。やっぱDouble決めうちか?
コード(一部抜粋)(HatenaGraphはデータ取得用メソッドがなかったので一部改変):
HatenaGraph graph = new HatenaGraph(id, pass); InputStream in = graph.get("体重",HatenaGraph.GraphGetDataType.YAML); for (Map<Date, Double> map : Yaml.loadStreamOfType(in,HashMap.class)) { for (Map.Entry<Date, Double> entry : map.entrySet()) { System.out.println("[k,v]:" + entry.getKey() + ","+ entry.getValue()); } }
データGet用メソッド
/** * グラフ名と取得したデータ形式の種類、およびユーザ名を指定してデータを取得します。 * * @param graphName グラフ名 * @param type データ形式 * @param dataUserName ユーザ名 * @return データ */ public InputStream get(String graphName, GraphGetDataType type, String dataUserName) { HttpClient client = new HttpClient(); GetMethod get = null; try { String query = "http://graph.hatena.ne.jp/api/data?graphname=" + URLEncoder.encode(graphName, "UTF-8") + "&username=" + URLEncoder.encode(dataUserName, "UTF-8") + "&type=" + URLEncoder.encode(type.toString(), "UTF-8"); get = new GetMethod(query); get.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8"); System.out.println("user:" + this.userName + " pass:"+ this.passWord); System.out.println("query:" + query); get.addRequestHeader("X-WSSE", WSSE.getWsseHeaderValue(this.userName, this.passWord)); int result = client.executeMethod(get); InputStream in = get.getResponseBodyAsStream(); return in; } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (HttpException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return null; }
結果:
log4j:WARN No appenders could be found for logger (org.apache.commons.httpclient.HttpClient). log4j:WARN Please initialize the log4j system properly. query:http://graph.hatena.ne.jp/api/data?graphname=%E4%BD%93%E9%87%8D&username=sww&type=yaml [k,v]:2007-10-23,68.0 [k,v]:2007-10-24,68.0 [k,v]:2007-10-25,69.1 [k,v]:2007-10-26,67.4 [k,v]:2007-10-27,67.6 [k,v]:2007-10-28,69.5 [k,v]:2007-10-29,69.1