ニコニコ動画のランキング内でソートできるGreasemonkeyスクリプトに絞り込み機能をつけてみた

お知らせ

2008/10/24 ランキングのレイアウト変更に伴い、スクリプトを一部修正しました。インストールはこちらから。

これはなに?

以前紹介したニコニコ動画のランキング内でソートするGreasemonkeyスクリプトに絞り込み機能をつけて欲しいという要望があったのでつけてみたものです。
タイトルで絞り込みを行います。要望ではタグを参照して除外するのがメインだったのですが、タグはランキングのエントリに載っておらず、毎回動画かAPIにアクセスしないといけないので今回は見送りました。ので要望を満たせていないと思います。すいません。

なまえ 2008/09/21 14:32 
初めまして!とても便利そうなので利用させてもらいます!
ところで、ニコニコのランキングから、
タイトルやタグに特定の文字が含まれた場合に除外する様には出来ないでしょうか?
例えば「-ゲーム」でゲーム関連の動画を抜いたランキングを表示したりとか・・・
もし興味を持たれましたら是非スクリプト組んで下さい!

インストール

こちらからどうぞ。

======

機能説明

ソート機能

前回同様、順位が小さい、数字が大きい、でソートします。また、タイトルをソートの項目に追加しました。文字列的に大きい順でソートされます。昇順降順は要望があれば。

絞り込み機能

いわゆるgrepです。ソートメニュー横のテキストボックスにキーワードを入れて右横のgrepボタンを押してください。キーワードにマッチするエントリーだけが表示されます。入力→Enterでgrepするようにはなっていません(やりかた教えてください)。
スペースで区切って複数のキーワードで絞り込めます。絞り込み方法は&で、前のキーワードから順に評価されます。
キーワードの先頭に-(ハイフン)をつけると、そのキーワードにマッチするものを除外します。
実装としてはsplit(/\s/)で区切って、それぞれ順にタイトルにmatchさせます。つまり正規表現が使えます。逆に言えば正規表現として扱われるものはそのままキーワードに使えません。
ソースコードはドキュメントということで擬似コードを載せておきます。

// 擬似コード
function grep(){
	queries = input_box.value.split(/\s/);
	for(i in ranking_entries){
		var display = true;
		var title = getTitle(ranking_entries[i]);
		for(j in queries){
			if(queries[j].length==0) continue;
			if(queries[j][0]=='-'){
				display &= (title.match(queries[j].substr(1))) ? false : true;
			} else {
				display &= (title.match(queries[j])) ? true : false;
			}
		}
		ranking_entries[i].style.display = (display) ? 'table-row' : 'none';
	}
}

使用例とスクリーンショット

選択

「東方」と入力すれば「東方」をタイトルに含んだエントリーだけ表示します。


除外

「-東方」と入力すれば「東方」をタイトルに含んだエントリーを除外して表示します。


選択+除外

「東方 -学園」と入力すれば「東方」をタイトルに含んだエントリーの中から、「学園」をタイトルに含んだエントリーを除外して表示します。


または選択

正規表現を用いて「東方|ミク」と入力すれば「東方」または「ミク」をタイトルに含んだエントリーだけ表示します。


選択+ソート

もちろん絞り込みを行ったままソートすることも可能です。


正規表現

正規表現が使えるのでこのようなこともできます。