OSDN Git Service

タグ検索機能追加。
authoryuki <yuki@bdf3b611-c98c-6041-8292-703d9c9adbe7>
Thu, 3 Jun 2010 05:29:30 +0000 (05:29 +0000)
committeryuki <yuki@bdf3b611-c98c-6041-8292-703d9c9adbe7>
Thu, 3 Jun 2010 05:29:30 +0000 (05:29 +0000)
差胸いる情報のストリームを取得するメソッドを追加。

git-svn-id: http://192.168.11.7/svn/repository/NicoBrowser/branches/dev20100601_search@334 bdf3b611-c98c-6041-8292-703d9c9adbe7

src/nicobrowser/NicoHttpClient.java
src/nicobrowser/search/SearchKind.java [new file with mode: 0644]
test/nicobrowser/NicoHttpClientTest.java

index 8a908f8..974c44c 100644 (file)
@@ -39,6 +39,7 @@ import javax.xml.parsers.DocumentBuilder;
 import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.ParserConfigurationException;
 import nicobrowser.entity.NicoContent.Status;
+import nicobrowser.search.SearchKind;
 import nicobrowser.search.SearchResult;
 import nicobrowser.util.Result;
 import nicobrowser.util.Util;
@@ -82,7 +83,7 @@ public class NicoHttpClient {
     private static final String MOVIE_THUMBNAIL_PAGE_HEADER =
             "http://www.nicovideo.jp/api/getthumbinfo/";
     private static final String GET_FLV_INFO = "http://www.nicovideo.jp/api/getflv/";
-    private static final String SEARCH_HEAD = "http://www.nicovideo.jp/search/";
+    private static final String SEARCH_HEAD = "http://www.nicovideo.jp/";
     private static final String ADD_MYLIST_PAGE = "http://www.nicovideo.jp/mylist_add/video/";
     private static final String GET_THREAD_KEY_PAGE = "http://www.nicovideo.jp/api/getthreadkey?thread=";
 
@@ -156,13 +157,14 @@ public class NicoHttpClient {
      * @page 検索結果ページのうち, 結果を返すページ.
      * @return 検索結果.
      */
-    public SearchResult search(SearchKind kind, String word, SortKind sort, SortOrder order, int page) throws IOException {
+    public SearchResult search(SearchKind kind, String word, SortKind sort, SortOrder order, int page) throws
+            IOException {
         log.debug("検索:" + word);
 
         InputStream is = null;
         ArrayList<NicoContent> conts = new ArrayList<NicoContent>();
-        String url = SEARCH_HEAD + word + "?page=" + Integer.toString(page) + "&sort=" + sort.getKey() + "&order=" + order.
-                getKey();
+        String url = SEARCH_HEAD + kind.getKey() + "/" + word + "?page=" + Integer.toString(page) + "&sort=" + sort.
+                getKey() + "&order=" + order.getKey();
 
         try {
             HttpGet get = new HttpGet(url);
@@ -271,6 +273,22 @@ public class NicoHttpClient {
     }
 
     /**
+     * コンテンツ概略のストリームを取得する.
+     * @param movieNo
+     * @return コンテンツ概略. 取得元でcloseすること.
+     * @throws IOException
+     */
+    public InputStream getThumbInfo(String movieNo) throws IOException {
+        String url = MOVIE_THUMBNAIL_PAGE_HEADER + movieNo;
+        log.debug("動画サムネイルURL: " + url);
+
+        HttpGet get = new HttpGet(url);
+        HttpResponse response = http.execute(get);
+        return response.getEntity().getContent();
+
+    }
+
+    /**
      * 動画番号を指定したコンテンツ情報の取得.
      * @param movieNo 動画番号.
      * @return コンテンツ情報.
@@ -278,16 +296,9 @@ public class NicoHttpClient {
     public NicoContent loadMyMovie(String movieNo) {
         NicoContent cont = null;
         InputStream re = null;
-        List<SyndEntryImpl> list = null;
-        String url = MOVIE_THUMBNAIL_PAGE_HEADER + movieNo;
-        log.debug("動画サムネイルURL: " + url);
-
-        HttpGet get;
 
         try {
-            get = new HttpGet(url);
-            HttpResponse response = http.execute(get);
-            re = response.getEntity().getContent();
+            re = getThumbInfo(movieNo);
             // ドキュメントビルダーファクトリを生成
             DocumentBuilderFactory dbfactory = DocumentBuilderFactory.newInstance();
             // ドキュメントビルダーを生成
diff --git a/src/nicobrowser/search/SearchKind.java b/src/nicobrowser/search/SearchKind.java
new file mode 100644 (file)
index 0000000..41becb7
--- /dev/null
@@ -0,0 +1,16 @@
+/* $Id$ */
+package nicobrowser.search;
+
+public enum SearchKind {
+
+    KeyWord("search"), Tag("tag");
+    private final String key;
+
+    private SearchKind(String key) {
+        this.key = key;
+    }
+
+    public String getKey() {
+        return key;
+    }
+}
index d573312..b01a0b9 100644 (file)
@@ -15,6 +15,7 @@ import javax.persistence.EntityManagerFactory;
 import javax.persistence.EntityTransaction;
 import javax.persistence.Persistence;
 import nicobrowser.entity.NicoContent.Status;
+import nicobrowser.search.SearchKind;
 import nicobrowser.search.SortKind;
 import nicobrowser.search.SortOrder;
 import nicobrowser.search.SearchResult;
@@ -227,7 +228,7 @@ public class NicoHttpClientTest {
         System.out.println("search");
         instance.login(OK_MAIL, OK_PASS);
 
-        SearchResult result = instance.search("初音ミク", SortKind.PlayTimes, SortOrder.Descending, 1);
+        SearchResult result = instance.search(SearchKind.KeyWord, "初音ミク", SortKind.PlayTimes, SortOrder.Descending, 1);
         ArrayList<NicoContent> conts = result.getContents();
         System.out.println("検索結果件数: " + conts.size());
         assertEquals("1ページの上限20件がヒット", 20, conts.size());