OSDN Git Service

過去ログ取得に必要なキー取得メソッド追加
authoryukihane <yukihane.feather@gmail.com>
Thu, 11 Aug 2011 04:24:53 +0000 (13:24 +0900)
committeryukihane <yukihane.feather@gmail.com>
Thu, 11 Aug 2011 04:24:53 +0000 (13:24 +0900)
src/nicobrowser/NicoHttpClient.java

index 79ee25f..b206227 100644 (file)
@@ -261,6 +261,42 @@ public class NicoHttpClient {
     }
 
     /**
+     * 過去ログ取得用のキーを取得します.
+     * @param vi {@link #getVideoInfo(java.lang.String) }で取得したオブジェクト.
+     * @return 過去ログ取得用キー
+     * @throws IOException 取得に失敗した場合.
+     */
+    public String getWayBackKey(VideoInfo vi) throws IOException {
+        final String url = "http://flapi.nicovideo.jp/api/getwaybackkey?thread=" + vi.getThreadId();
+        final HttpGet get = new HttpGet(url);
+        HttpResponse response = http.execute(get);
+        String res;
+        try {
+            final int statusCode = response.getStatusLine().getStatusCode();
+            if (statusCode != HttpStatus.SC_OK) {
+                throw new IOException("waybackkey get error " + statusCode);
+            }
+
+            final BufferedReader br = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
+            res = br.readLine();
+            logger.debug("wayback get result text: " + res);
+        } finally {
+            response.getEntity().consumeContent();
+        }
+
+        final String keyWayBackKey = "waybackkey=";
+        final String[] keyValues = res.split("&");
+        for (String s : keyValues) {
+            final String[] kv = s.split("=");
+            if (keyWayBackKey.equals(kv[0])) {
+                return kv[1];
+            }
+        }
+
+        throw new IOException("wayback key get fail: " + res);
+    }
+
+    /**
      * rankingの場合、本当のタイトルの前に"第XX位:"の文字列が
      * 挿入されているため, それを削る.
      * @param list 対象のリスト.