ニコニコ動画をHackするときに使えそうな変数まとめ

書いた人: noriaki 2007,10月15日(月) 12:00

Grabbr Image

Photographer
yuiseki
License
Creative Commons (by)
Tool for photo selecting
Gigazinize Tools - Image

最近,ニコニコ動画のコメント熱狂度を可視化するGreasemonkeyスクリプトをアップデートしまくってる私ですが,今日は,ニコニコ動画の動画再生用Flash(NICO NICO PLAYER,以下プレーヤー)から取得できる変数についてまとめてみます.

ニコニコ動画のプレーヤーは,JavaScriptから操作できるようになっており,以下のような方法でプレーヤー内部の変数を取得することができます.

$('flvplayer').GetVariable('PLAYER_VERSOIN');

ちなみに,上記はプレーヤーのバージョンが分かります.

実際に試すには,Firebugを使える環境であれば,FireBugのコンソールに以下のように入力します.

console.debug($('flvplayer').GetVariable('PLAYER_VERSOIN'));

Firebugは使ってないという方や,firefox以外のブラウザをお使いの方は,ロケーションバー(URLを入れるところ)に以下のように入力してみてください.

javascript:alert($('flvplayer').GetVariable('PLAYER_VERSOIN'));

以下では,その他の取得できる変数や,プレーヤーのコメント欄に文字を挿入する方法などについてまとめています.

プレーヤーから取得できる変数

このまとめは,PLAYER_VERSOIN2007-10-12 20:45のものについて調べました.18日に控えるニコニコスクリプト(通称:NICOS)導入後にはプレーヤーのバージョンが上がり,使えなくなるものや新たに使えるようになるものも出るかもしれません.

プレーヤーから取得可能な変数とその内容
変数名 変数の内容
PLAYER_VERSOIN 再生用プレーヤーのバージョン(日時)
ready 動画再生の準備ができているかどうか
ContentLength 動画の長さ(秒)
ReplayFlag 繰り返し再生モードになっているかどうか
pause_flag 一時停止しているかどうか?(常にfalseかも)
linkURL 動画情報ページのURL
UserID ユーザID
CurrentThreadID 動画のスレッドID
premiumNo プレミアム会員かどうか(プレミアム:1,通常:0
o 動画の情報
B ニコニコ動画APIのエンドポイントURI
selectTab プレーヤーで現在選択されているタブ番号
(最新コメント:0,システム:4など)
last_resno プレーヤー上部に表示しているコメント数
moved_time 動画の再生経過時間(秒:小数点以下3桁)
ThreadCreateDate 動画の投稿日時
PostChatMessage 視聴している動画に自分が投稿した最後のコメント内容
コメントしていないときはundefined
PostChatVPos 視聴している動画に自分が投稿した最後のコメント時間(秒)
PostChatMail 視聴している動画に自分が投稿した最後のコメントコマンド
LastVpos プレーヤーの状態が更新された時点での動画再生経過時間

なお,firefoxからは.(ドット)を含む変数は取得することができません.つまり,オブジェクトのプロパティは取得することができません.

APIを使う

ニコニコ動画には非公開ながらAPIがあります.ニコニコ動画のコメント熱狂度を可視化するGreasemonkeyスクリプトはこのAPIを利用して作っていますが,上記の変数を利用するとAPIを利用しなくても様々な値が取れることが分かります.

例えば,Perlでニコニコ動画のflvとコメントxmlをダウンロードするというページでは,flvファイルのパスやコメントを表すスレッドのIDなどを取得するために以下のAPIにアクセスしています.

http://www.nicovideo.jp/api/getflv?v=ビデオID

プレーヤーから取得できる変数を利用すれば,このAPIにアクセスしなくても以下のJavaScriptで同様の結果が得られます.

$('flvplayer').GetVariable('o');

また,CurrentThreadIDや,UserIDなどもAPIにアクセスすることなく取得できるので,Greasemonkeyスクリプトの速度アップやニコニコ動画への負荷を軽減することができるのではないでしょうか.

拙作のニコニコ動画のコメント熱狂度を可視化するGreasemonkeyスクリプト最新版では,moved_timeを監視して,動画の今見ている部分のコメント数を表示するようにしています.

プレーヤーに値をセットする

プレーヤーから変数を取得する方法を示しましたが,反対にプレーヤーの変数に値をセットすることも一部のものでは可能です.

$('flvplayer').SetVariable("inputArea.ChatInput1.text", 'hoge');

これは,コメント欄にhogeという文字を挿入します.

また,以下のスクリプトではコメントコマンド欄にshita greenをセットしています.

$('flvplayer').SetVariable("inputArea.MailInput.text", 'shita green');

まとめ

今回は,ニコニコ動画の動画再生用Flashプレーヤーから様々な値を取得する方法と,主な取得できる値をご紹介しました.

これらの方法は,ニコニコ運営の人にたぶん怒られたりしない方法だと思いますが,利用する際はご自身の責任でお願いします.

また,ここには載せていませんが,ニコニコ動画へ負荷をかけることもできてしまいます.たくさんの人がニコニコできるようにニコニコ動画への負荷には気をつけてご利用ください.

他にもこんな値が使えそうだとか,この方法を使ってGreasemonkeyスクリプトを作ってみたなど,お気軽にコメント・トラックバック・ブックマークコメントなどでご意見・ご感想をいただければ幸いです.

参考ページ

ニコニコ動画でプレイリストが使える Greasemonkey スクリプト - こたにき
http://d.hatena.ne.jp/kotas/20070925/playlist
ニコニコ動画を分析してみる: 小沢動画編 - Myrmecoleon in Paradoxical Library. はてな新館
http://d.hatena.ne.jp/myrmecoleon/20070727/1185555781
Perlでニコニコ動画のflvとコメントxmlをダウンロードする (Yusukebe::Tech)
http://yusukebe.com/tech/archives/20070803/124356.html
NicoCommandButton ニコニコ動画コマンド入力ボタンのできるまで - アンビバノンノン
http://d.hatena.ne.jp/togeinu/20071007/1191733887
フィルタ、リスト公開/nicovideo(iroifo.js) - Proxomitron等に関するWiki
http://abc.s65.xrea.com/prox/wiki/フィルタ、リスト公開/nicovideo/#iroiro"

このエントリをdel.icio.usにブックマークしているユーザ数このエントリをdel.icio.usに追加する
このエントリをはてなブックマークしているユーザ数このエントリをはてなブックマークに追加する
 | Tags

このエントリはアーカイブされています。
コメントする場合は、お手数ですが「このページのURL」を記載した上で、新しいエントリにお願いします。