動画データを取得してみた
ニコニコ動画を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┬-| | \ `ー'´ /
この動画の動画データを取得してみた。*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に変換かけて処理するようなパーサーを実装してみる予定。