ニコニコ動画の外部プレイヤーをJavaScriptで操作する。
ニコニコ動画はブログとかに外部プレイヤーとして貼り付けることができます。
実は貼り付けた外部プレイヤーは一度、再生させて動画を取り込むとJavaScriptで操作することができます。

■実験結果
b0232065_14424462.png


http://needtec.sakura.ne.jp/niconicoplay/niconicosample.html





■実装方法
1. 外部プレイヤーを貼り付けます。

<script type="text/javascript" src="http://ext.nicovideo.jp/thumb_watch/sm8114033?w=490&h=307"></script>


実は以下のURLにアクセスするっとわかりますが、JavaScriptのコードになっています。
http://ext.nicovideo.jp/thumb_watch/sm8114033?w=490&h=307


2. onNicoPlayerReadyイベントで再生するプレイヤーのIDを取得する
動画を再生してプレイヤーの準備が整うとonNicoPlayerReadyイベントが呼ばれます。
このイベントは引数に文字列idをもっているので、これをもとにplayerのオブジェクトを取得します


var player;
function onNicoPlayerReady(id) {
console.log("onNicoPlayerReady:" + id);
//
player = document.getElementById(id);
// 以降、playerオブジェクトに対して操作が行なえるようになる
}


3. 以下のページを参考にplayerオブジェクトにAPIを発行してみる。
ニコニコ動画のプレーヤーをJavaScriptから操作するAPI一覧
http://d.hatena.ne.jp/kiyo_hoge/20100819/1282240857


■Tips
・HTTP経由じゃないと、動画が再生されないようだ。

・とにかく一回は再生しないとAPIを使用できない。

・ローカルコメント以外は送信できない。
そのローカルコメントも、再読み込みすると消える

・コメントの取得方法はext_getThreadsでスレッドの一覧を取得した後に、そのコールバック関数で取得するスレッドIDを使用してext_getCommentsを使用する。

window.getComment = function() {
// コールバック関数を指定してスレッドを取得
player.ext_getThreads('getThreads');
}
/**
* スレッドを取得した際のコールバック
*/
function getThreads(threads)
{
console.log("getThreads :" + arguments.length);
console.log(threads.length);
for ( var i = 0 ; i < threads.length ;i++ ){
console.log(threads[i].type);
try {
// スレッドのIDと取得数を指定してコメント取得
var msg = player.ext_getComments(threads[i].id,1000);
} catch (ex)
{
console.log(ex)
}
console.log(msg);
}
}

このコメントは画面に流れているコメントを取得しているようだ。

・スレッドにはmain,Local,nicosという種類が確認できた。
mainは通常のコメント、Localはext_sendLocalMessageで送ったメッセージ、nicosはボタンとかアンケートで使うニコニコスクリプト

・イベントの発生順は以下のとおり
1.onNicoPlayerReady(id) プレイヤーの準備が整う
2.setPlayerStatus(status) プレイヤーのステータスを変えた
3.onNicoPlayerStatus(id, status) プレイヤーのステータスが変更通知

・ステータスは次のとおり
playing ... 動画再生したとき、シークした後も
seeking ... シークバーを動かした後
paused ... 動画の再生の一時停止
end ... 再生終了
[PR]
by mima_ita | 2013-11-18 14:47 | 実験
<< ニコニコ動画の外部プレイヤーに... TracのチケットからMsPr... >>



実験ですお
検索
カテゴリ
最新の記事
.NET4.5におけるasy..
at 2014-07-02 00:46
.NETでTwitterを検..
at 2014-06-29 00:49
Redmineのプラグインで..
at 2014-06-28 03:29
IO.popenのwrite..
at 2014-06-28 03:25
RedmineのWikiでU..
at 2014-06-28 03:16
以前の記事
最新のトラックバック
その他のジャンル
ブログパーツ