Hatena::ブログ(Diary)

こたにき

自作 Greasemonkey スクリプト一覧

2007-09-25

ニコニコ動画でプレイリストが使える Greasemonkey スクリプト

「作業用BGMに動画を使いたいけど、メドレー系ばかりじゃなく短い動画も連続で見たい!」

僕は作業する時に、ニコニコ動画を BGM にする事が多いです。(作業用BGMタグをみるに、同じような人が結構いるみたい?)

それで、動画を選んでから作業を始めるわけなんですが、動画をひとつ見終えると、作業を中断して次の動画を選ぶ必要があって面倒なので、自然とくりかえし再生しやすく再生時間が長いメドレー系を選びがちです。でも、これだけ動画があるニコニコ動画なので、短い動画もみたいんです><

そんな人のために、ニコニコ動画でプレイリストを使えるようにする Greasemonkey スクリプトを作りました。(Greasemonkey スクリプトの使い方

インストールniconicoplaylist.user.js更新履歴

※ 自動再生がプレミアム会員限定になってしまったので、プレミアム会員でないと自動的に連続再生できなくなっています…… orz

つかいかた

インストールして、ニコニコ動画のページを開くと、左上にこっそりと四角がはみでています。

f:id:kotas:20070925103735p:image

これにさわると、プレイリストウィンドウがポコッとでてきます。

f:id:kotas:20070925103732p:image

「ページ中の動画を追加」ボタンを押せば、開いているページの中の動画リンクを全てプレイリストに追加できます。たとえば、ランキングのページで押すと、以下のように1位から順番に全て追加されます。(2007/09/25 10:00 のマイリスト登録数ランキング)

f:id:kotas:20070925103723p:image

あとは「再生」ボタンを押せば、プレイリストの先頭から連続再生がはじまります。再生された動画はプレイリストから削除されていきます。(なのでリストというよりキューかな?)

ランキングページだけでなく、たとえば検索結果をまとめて再生したり、きまぐれ検索でランダム再生したりできます。

ちなみに、途中で連続再生をやめたい場合は「全て削除」を押して、プレイリストをクリアしてください。

つくりかた

今回はちょっとずる(開発者特権の行使)をしてプレイヤーのソースを読み、使えそうな変数Flash の GetVariable で監視することにした。本当は、FLVPlayer の statechange イベントをキャプチャしたいところだけど、内側からExternalInterface で呼び出してもらわない限り、外側からイベントはキャプチャできないので、今回は却下。

GetVariable でプレイヤーの state がとれないかと思ってためしたけど、どうもオブジェクトプロパティはとれない模様なので、あきらめた。

プレイヤーの Flash は僕がいじっているわけではないので、ActionScript を斜め読みしてめぼしい変数を探した。

ContentLength は動画の総秒数、LastVpos は状態が更新された時点での動画再生位置が入っているようだったので、それを利用。ただ、再生が終了した時点で停止した時、LastVpos と ContentLength が一致するわけではないようだったので、多少の誤差(5秒まで)を許容するようにした。

ただ、将来に渡ってこの方法が使える保障はないので注意。将来的にはプレイヤーの Flash からイベントを外側に通知する仕組みを作りたいのこころ。

複数のプレイリストが作れるように実装はしたものの、ちょっと使ってみたところ、あんまり使わなそうだったので却下。でも、そののりしろは残しておく。

動画のリンク収集は、document.getElementsByTagName で A 要素を集めて、リンク先が "watch/***" かつ、クラス名が "video" のものだけを集めると、サムネイルなどのリンクは取り除ける。サムネイルをつけようかと思ったけど、プレイリストの見た目にそぐわなかったので見送り。

こういう風に道筋を思い起こして書いていくと、「なにを作るか」「どうやって作るか」も重要だけど、「なにを捨てるか」「なにをあきらめるか」も同じように重要だということがよくわかる。

chintaro3chintaro3 2007/09/27 00:29 ひじょーにほしい機能なんだけど、みんながこれ使ったら運営に支障出るよね・・・要望も出した方がよいかも

kotaskotas 2007/09/27 09:02 そうなんです。プレイリストって、見てなくても再生しっぱなしになるので、帯域の無駄遣いといえばその通りです。なので、恐らく公式にやることはないと思います。
このプレイリストも使われすぎないように、普段は隠れていて「意識しないと使えないインターフェース」になっています。

ニコニコ動画をもっと便利に使って欲しいけど、使われすぎても困るというジレンマ。

kawakawa 2007/10/13 09:51 どうしても動かないので、質問させていただきますorz
上の画像である小さい四角もでません。。
他のuser.jsは動いているので、原因がわからなくて。
Operaは9.23です。
Greasemonkey スクリプトは普通のOperaのuser.jsとは違うのでしょうか?
Operaのuser.jsと同じところに入れていますが、他に設定する事はありますか?
わからないので教えていただけると助かります。

kotaskotas 2007/10/16 03:21 お返事遅れてしまってごめんなさい。
基本的に、このスクリプトは Greasemonkey 向けですので、Opera のユーザースクリプトとして利用する事はできません。
調べてみましたが、Opera の user.js では Greasemonkey のように大きいデータを保存できないため、プレイリストを保存する事が難しく、移植もできないようでした。(クッキーを使おうにも、ニコニコ動画では既に「最近見た動画」に結構な量のクッキーが使われているため、恐らく厳しいと思います)
お役に立てず申し訳ないです... orz

kawakawa 2007/10/17 03:26 いえいえ、遅れても大丈夫です。レスありがとうございます。
いいスクリプトだなーって思ったので、使ってみたいなーと思いまして。
Operaでは使えないみたいですが、どのブラウザだと使えますかね?
一応聞いておきたいので、暇なときにでもレスおねがいします。

kotaskotas 2007/10/18 18:59 Greasemonkey アドオンをインストールした Firefox か、
Mac なら Creammonkey をインストールすれば Safari でも使えます。

Firefox
http://www.mozilla-japan.org/products/firefox/

Greasemonkey
https://addons.mozilla.org/ja/firefox/addon/748

Creammonkey
http://creammonkey.sourceforge.net/

kawakawa 2007/10/25 02:23 レスありがとうございます。
winなので、firefoxを見てみます。ありがとうございました!

ottanottan 2007/11/05 01:10 便利に使わせてもいただいてるのですが、フルスクリーンで再生してくれる機能があるとうれしいです。
BGVとして流したいときも結構あるので。
とりあえず、スクリプトの最後の方に決めうちで適当にスクロールさせる処理追加して使わせてもらっています。
document.getElementById(’flvplayer’).addEventListener(”onload”,w.scrollTo(0,350),true);

店長店長 2008/01/15 00:05 これってプレイ順を変更できるようにはならないんでしょうかね?
一気に登録すると希望の登録順にならないので・・・

Sore_0Sore_0 2008/01/30 02:51 はじめまして。
こちらからアイデアとコードを借りて作ったものが、多少はまともに動くようになってきたので、遅くなりましたがお礼とご報告にきました。
(まだ問題を多く抱えてはいるのですが。。。)

http://d.hatena.ne.jp/Sore_0/20080127/1201444608

kotasさんのコードからは色々と勉強させてもらいました。ありがとうございました。

つくねつくね 2008/10/05 16:18 これはlunascapeには対応できないですかね?

無名無名 2009/10/03 22:46 自動再生の件ですが、「NicoWatch Tools」というGreasemonkeyスクリプトに一般会員でも使える「自動再生」機能があります。
これと併用すれば一般会員でもなんとか連続再生できるようです。

他スクリプトの話でしたので、気に障られたらすみません。

ゆやんゆやん 2009/12/19 17:12 ページ中の動画を追加が使えなくなってしまいました。

ばばむーばばむー 2009/12/19 21:24 同じく、ページ中の動画を追加が使えないです
運営側から対策がされたのでしょうか

ゆめとゆめと 2009/12/26 07:16 プレミアム会員なのですが
自動再生が利かないです><

きききき 2010/03/16 22:31 lunascapeでも問題無く動きました。
素敵なスクリプトありがとうございました。

通りすがり通りすがり 2010/07/17 12:45 素敵なスクリプトありがとうございます!いつも使っています!^^
一つ要望があるんですが一つの動画の再生が終わるとちゃんと次のページに飛ぶんですけど自動再生されません・・・
プレミアム会員になったらできるみたいですけど何とかスクリプトのほうで自動再生できませんか??

通りすがり通りすがり 2010/08/02 10:37 ニコニコ動画 自動再生+α for Greasemonkey
http://userscripts.org/scripts/show/35194

nanashinanashi 2010/08/14 09:02 検索結果をまとめて動画に追加ができなくなってる気がします

(’A`)(’A`) 2011/02/15 00:49 台湾版でうまく実装できれば連続再生も可能になりそう・・・

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/kotas/20070925/playlist
Connection: close