面白いGreasemonkeyスクリプト用ライブラリを見つけたので紹介。

Greasemonkeyスクリプトからニコニコ動画のFlashプレーヤーを操作するライブラリ(バージョンアップ) – We Ain’t Seen Nothin’ Yet.

Flash内部のActionScriptの変数は、SetVariable、GetVariableメソッドを使用することで、そのFlashを含むWebページのJavaScriptから読み書きできるのだけれど、その機能を使ってニコニコ動画のFlashで出来た動画プレーヤーを操作しようというもの。

ニコ動のプレーヤーを外部から操作するというのはニコニコ動画をHackするときに使えそうな変数まとめというエントリの頃から注目していたのだけれど、このようにライブラリの形に纏めた形で提供してもらえるというのは非常に有り難いことだ。

さて、早速このライブラリを使用して、今年のエイプリルフールに運営が悪ふざけでやった「コメント逆流事件」を再現してみる。このスクリプトをインストールすると、ニコ動のコメントが逆流するようになる。

// ==UserScript==
// @name           ReturnToAprilFoolsDay
// @namespace      http://www.sharplab.net/
// @include        http://www.nicovideo.jp/watch/*
// @require        http://svn.coderepos.org/share/lang/javascript/userscripts/GM_Libs/noriaki/NicoNicoPlayerWrapper/NNPW-20080824.1.js
// ==/UserScript==
var player = new NicoNicoPlayer();
player.onReady(function(video_info) {
	this.val("isReverse","true");
});

ニコ動の動画プレーヤーはisReverseという変数を内部に持っているのだが、それにtrueをセットすることで流れるコメの向きを反対に出来ることを利用したスクリプト。エイプリルフールを過ぎたらこの変数もなくなるのかな、と思っていたのだけれども、「@逆」とかいうニコスクリプトのために残されたようだ。

ところでこれらニコ動の動画プレーヤーを操作するGreasemonkeyスクリプトだが、時折「Security Manager vetoed action」というエラーで実行に失敗することがある。どうもSetVariableメソッドによる内部の変数の操作がFirefoxのセキュリティ・ポリシーに反していて拒否される、ということのようなのだが、実行できる場合もあり、再現条件がはっきりしない。Firefox2の頃は全く問題がなかったので、Firefox3での変更だと思うのだが…。謎。