ニコニコ動画をHackするときに使えそうな変数まとめ
書いた人: noriaki 2007,10月15日(月) 12:00
- 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_VERSOINが2007-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"


