Opera でニコニコ動画プレイリスト
ニコニコ動画でプレイリストが使える Greasemonkey スクリプト が Opera で動かない という報告を頂いたので、Opera に対応させようと試行錯誤してみたところ、形を変えてなんとか対応させる事ができました。
ダウンロード: playlistopera.js (Opera 用)
インストールの仕方は User JavaScript の説明 などをご覧ください。
使い方
スクリプトをインストールすると、ニコニコ動画の右上にある「マイページ」「動画のアップロード」などのリンクの隣に、「プレイリスト」というリンクが追加されます。
このリンクをクリックすると、別ウィンドウとしてプレイリストが開きます。
このプレイリストウィンドウは、開く元となったニコニコ動画のウィンドウ(親ウィンドウ)と連動しています。例えば、プレイリストウィンドウで「ページ中の動画を追加」ボタンを押すと、親ウィンドウで開いているページの中にある動画をプレイリストに追加します。
(2007/11/02 23:00 時点のマイリスト登録数ランキング)
ただし、プレイリストはプレイリストウィンドウの中でだけ保存されています。プレイリストウィンドウを閉じたり、「プレイリスト」リンクを押して開きなおしてしまうと、内容がクリアされてしまうので、ご注意ください。(Opera の制限によるものです)
作り方
記憶領域=ウィンドウ
Greasemonkey ではスクリプトごとに GM_get/setValue で任意の情報をブラウザに保存しておくことができますが、Opera の User JavaScript では使えないため、代替策を考える必要がありました。今回は、プレイリストをウィンドウとして独立させることで、ウィンドウを記憶領域として代用したことになります。
開かれたウィンドウでは window.opener を使う事で、親ウィンドウ(この場合ニコニコ動画本体)を参照する事ができます。
同じドメインのページを使う
Opera に限らず多くのブラウザではセキュリティ上、あるドメインのページから異なるドメインのページの内容を参照する事ができないようになっています。例えば、先ほどの window.opener を使っても、開いた元が異なるドメインを持っていると参照できません。XmlHttpRequest によるリクエストも、異なるドメインに対しては行なえません。
その制限を回避するために、プレイリストウィンドウは、まず同じドメイン(www.nicovideo.jp)のページを開いてから、そのページ内をプレイリストに書き換えています。これにより、本体のページにも自由にアクセスできるようにしました。