ニコニコ動画プレイヤーの status がおかしい
ニコ動でリピート on にして聞きまくってるときに :nicopause が効かないので調べてみたら、リピート後の satus が再生中でも 'end' になってるという現象。
// env: Firefox 3.0.3 + Firebug var p = document.getElementById('flvplayer'); // result: "200810280130" p.GetVariable('PLAYER_VERSION'); // result: "end" p.ext_getStatus();
nicontroller.js 側だと status が 'playing' のときに pause 、 'playing' 以外のときに play させているので動かなかったということだね。で、何とかしようかと思ったんだけどどうにもならなかったんだよね。てか setTimeout 使って自前で再生されてるかチェックする以下のコードでも 'playing' とは判定するんだけど、 ext_play 関数側で status チェックをかけているのか toggle できない。だと toggle できた。 true と false の位置まちがってた。はずかしいいいいいいい。
var p = document.getElementById('flvplayer'); if (p.ext_getStatus() === 'end') { var base = p.ext_getPlayheadTime(); setTimeout(function () { if (base !== p.ext_getPlayheadTime()) { console.log('playing'); console.log(p.ext_getPlayheadTime()); p.ext_play(false); } else { console.log('pause'); console.log(p.ext_getPlayheadTime()); p.ext_play(true); } }, 100); }
というわけでシークバーを動かせば status がセットし直されるみたいなのでちょっと面倒だけど :nicoseek[! N] -> :nicopause としてくださいな。nicontroller.js を update 。てかニコ動への報告パスってあるのかな ?
- http://coderepos.org/share/changeset/22529
- http://coderepos.org/share/browser/lang/javascript/vimperator-plugins/trunk/nicontroller.js
ちなみにリピートしてるのは以下の曲。とはいっても通算で 10 時間程度なのでそんなに聞いてるとはいえない。