ジャンルを選択し、好みの作業用BGMを流し付けるソフトを作ろうと思った。
作った所で、J◯SRACが怖いので公開することはできないけど。
今回は、ログインとキーワード・タグ双方の検索結果取得までやってみた。

検索APIについては
ニコニコ動画に動画検索APIができたらしいので取り急ぎScalaで

調べてみたら、C#で同じようなことをやっているサイトが一応あった。
C#で検索結果を取得
ただ、このサイトでは文字列処理でJSONの解析を行なっている。
.NET Framework3.5からは、標準でDataContractJsonSerializerというJSON解析用のライブラリが提供されているので用いた。

ニコニコ動画にログイン

ニコニコ動画は検索するためにはログインしてCookieをもつ必要がある。
C#でのログインは、いくらでもサンプルがあるのでぱぱっと。

Stream Post(string url,Hashtable param,Encoding enc,out CookieContainer cc)
はPostの汎用メソッド。
string url:ログインページのURL
Hashtable param:param["パラメータ名"] = パラメータのハッシュテーブル
Encoding enc:POSTの文字コード
out CookieContainer cc:Cookie

ニコニコ動画の検索

キーワード検索の場合

http://ext.nicovideo.jp/api/search/search/検索キーワード?mode=watch&order=d&page=1&sort=n

タグ検索の場合

http://ext.nicovideo.jp/api/search/tag/検索タグ?mode=watch&order=d&page=1&sort=n

でGETすればJSONが返される。
pageで検索結果のページ数の選択。
sortでソート対象
orderで並び順 を指定できる。
例えば
再生数が多い順:sort=v&order=d
再生数が少ない順:sort=v&order=a
マイリストが多い順:sort=m&order=d
マイリストが少ない順:sort=m&order=a
といった具合だ。ココらへんは実際の検索時URIをみれば良いだろう。
今回は単純な検索だけを行う。

取得するJSONは双方次のような形である。

“list”の中に個々の動画の情報が入れられる。
id:動画ID
thumbnail_url:動画URL
description_short:動画説明文の一部
といった具合だ。
“count”には検索結果の数
“page”は検索結果のページ番号
“status”には成功すると”ok”、失敗すると”fail”が入る。

DataContractJsonSerializerで扱うにはこのデータ構造を.Netオブジェクトで表現しなければならない。
次のように書ける。

これを用いて実際に検索結果を取得したのが次になる。

Getする際にCookieがないと検索に失敗してstatusに”fail”が入る。
キーワード検索とタグ検索の違いはURLだけだ。
Getした文字列をByte配列にして、シリアライザーに突っ込んでいる。

実際に適当なフォームを作ってやってみた。

nicosearch


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

  プロフィール  PR:無料HP  安い 合宿免許  給与滞納  職業実践専門課程  カー用品の専門店  スタッドレスタイヤ 激安  タイヤ ストリーム 激安  東京 専門学校 就職  エンジンパーツ 中古部品  民泊 収入  業務用食材  株プロフェット 評判  タイヤ取付予約  シアリス 効果