動画データを取得してみた

ニコニコ動画Javaでゴニョゴニョする計画 第1.5弾。
ニコニコ動画WebAPIを使って動画情報を取得するってソース。
これJarにしたりしたら使って貰えたりするのかな?


といっても現在作成中なのでdraft版をうpってみる。

package nicoAPIRapper;

import java.io.BufferedInputStream;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;

public class HttpConnect {

  public void getVideoInfo(String videoId){
    //URL
    String url_str = "http://www.nicovideo.jp/api/getthumbinfo/sm4005866";

    try{
      URL url = new URL(url_str);

      System.out.println("URL: " + url_str);

      HttpURLConnection http = (HttpURLConnection)url.openConnection();

      // GETで繋ぐ
      http.setRequestMethod("GET");

      // 接続
      http.connect();

      // 表示
      BufferedInputStream bis 
      = new BufferedInputStream( http.getInputStream());
      int data;
      while ( (data = bis.read()) != -1 ){
        System.out.write(data);
      }
      
      // 応答コード
      System.out.println("【レスポンスコード】 " + http.getResponseCode()
          + " " + http.getResponseMessage() );


    }catch( IOException e ){
      e.getStackTrace();
    }
  }
}

ニコニコ動画(RC1)で実装されていたAPIニコニコ動画(夏)で実装されているAPI
では返ってくる内容が異なる模様。
そもそもRC1と夏で実装されているAPIがちがうっぽい。*1
あんまり詳しい情報が出てこないとおもったらニコ百科に載ってた罠。(こちら

さて実行結果

URL: http://www.nicovideo.jp/api/getthumbinfo/sm4005866
<?xml version="1.0" encoding="UTF-8"?>
<nicovideo_thumb_response status="ok">
<thumb>
<video_id>sm4005866</video_id>
<title>縲信AD縲第凾繧偵°縺代k蟆大・ウ 繧ャ繝シ繝阪ャ繝医?H.264縲?/title>
<description>莉・蜑攻P縺励※縺?◆MAD繧辿.264縺ァ繧ィ繝ウ繧ウ繝シ繝峨@縲`AD閾ェ菴薙b蠕ョ隱ソ謨エ繧偵@縺ヲ蜀攻P縺励※縺ソ縺セ縺励◆?√?H.264繧ィ繝ウ繧ウ縺ッ蛻昴a縺ヲ縺ェ縺ョ縺ァ縲∬ゥヲ陦碁険隱、縺ョ邨先棡縲√〒縺阪k縺九℃繧企ォ倡判雉ェ縺ォUP縺励◆縺、繧ゅj縺ァ縺?^^;</description>
<thumbnail_url>http://tn-skr1.smilevideo.jp/smile?i=4005866</thumbnail_url>
<first_retrieve>2008-07-19T09:54:07+09:00</first_retrieve>
<length>5:22</length>
<view_counter>64036</view_counter>
<comment_num>6782</comment_num>
<mylist_counter>3533</mylist_counter>
<last_res_body>縺?o縺ゅ≠縺ゅ≠縺ゅ≠縺ゅ≠ 縲瑚ィ?▲縺ヲ縺ェ縺?▲縺ヲ縺ー繝シ 縲取悴譚・縺ァ蠕?▲縺ヲ... </last_res_body>
<watch_url>http://www.nicovideo.jp/watch/sm4005866</watch_url>
<thumb_type>video</thumb_type>
<tags>
<tag>繧「繝九Γ</tag>
<tag>譎ゅr縺九¢繧句ー大・ウ</tag>
<tag>繧ャ繝シ繝阪ャ繝?/tag>
<tag>霍ィ雜頑凾遨コ逧?クュ蟷エ</tag>
<tag>AMV</tag>
<tag>The_Girl_Who_Leapt_Through_Time</tag>
<tag>Time_waits_for_no_one</tag>
</tags>
</thumb>
</nicovideo_thumb_response>【レスポンスコード】 200 OK

ちょwwwwwばけらったwwwwwwwww

       ____ 
     /      \ 
   /  _ノ  ヽ、_  \ 
  /  o゚⌒   ⌒゚o  \  UTF-8だから文字化けしてるんだお・・・
  |     (__人__)    |   
  \     ` ⌒´     / 
       ____ 
     /⌒  ⌒\ 
   /( ●)  (●)\ 
  /::::::⌒(__人__)⌒::::: \   だからそのまま解説するお 
  |     |r┬-|     | 
  \      `ー'´     /

D

この動画の動画データを取得してみた。*2

  • nicovideo_thumb_response@status*3

動画情報が正しく取得できた→true
削除動画など取得できない場合→false
エラーのときは以下の感じで帰ってきます。

URL: http://www.nicovideo.jp/api/getthumbinfo/sm999999999999
<?xml version="1.0" encoding="UTF-8"?>
<nicovideo_thumb_response status="fail">
<error>
<code>NOT_FOUND</code>
<description>not found or invalid</description>
</error>
</nicovideo_thumb_response>【レスポンスコード】 200 OK
  • nicovideo_thumb_response/thumb/video

動画ID

  • nicovideo_thumb_response/thumb/title

動画タイトル

  • nicovideo_thumb_response/thumb/description

動画説明文(上のほうに動画うp主が書いている内容)

  • nicovideo_thumb_response/thumb/thumbnail_url

動画サムネイルのURL

  • nicovideo_thumb_response/thumb/first_retrieve

動画投稿日時
形式:yyyy-MM-ddThh:MM:ss+09:00
時間部分はGMT表記 日本時間変換用に+9:00がついてる。
(実際の動画投稿時間と微妙に違う値が入ってる模様)

  • nicovideo_thumb_response/thumb/length

動画時間

  • nicovideo_thumb_response/thumb/view_counter

再生回数

  • nicovideo_thumb_response/thumb/comment_num

コメント数

  • nicovideo_thumb_response/thumb/mylist_counter

マイスト登録数

  • nicovideo_thumb_response/thumb/last_res_body

最新コメント

  • nicovideo_thumb_response/thumb/watch_url

動画URL

  • nicovideo_thumb_response/thumb/thumb_type

動画ならvideo
マイメモリーならmymemory

  • nicovideo_thumb_response/thumb/tags

タグの一覧

  • nicovideo_thumb_response/thumb/tags/tag

タグの本体

とりあえずUTF-8に変換かけて処理するようなパーサーを実装してみる予定。

*1:夏はXMLを返すけど SP1は文字列返してた 古い動画だと両方できるぽい

*2:ときかけ最高すぎだろJK

*3:tagの階層は/で書いてます @以下がattribute