Hatena::ブログ(Diary)

Alone Like a Rhinoceros Horn

2010-10-14

2010-08-04

ニコニコ動画の検索結果フィルタをアップデート

アップデートしました。

ニコニコ動画の検索結果HTML の変更の影響で、

  • ○列表示の認識失敗
  • 検索結果中の動画件数カウント失敗
  • テーブルを詰め直す際に削除されるべきでない動画まで削除
  • 表示動画と削除動画の件数の辻褄が合わない

といった諸々の問題が発生していたので、これらをすべて修復しました。

2010-07-11

ニコニコ動画の検索結果フィルタをアップデート

アップデートしました。

今回のアップデートの主眼は機能の追加/削除ではなく、スクリプトに設定画面を提供してくれるライブラリを置き換えたことです。具体的には、これまで使っていた GM_config を自前のライブラリ*1で置き換えました。

これにより、「設定画面がたまに出ない」問題が解消されました。設定画面を出そうと思っても出なくてイラッとすることはもうありません。ぜひ試してみて下さい。

*1:github にて近日中に公開予定

2010-01-09

nrf更新履歴

更新履歴が長くなってきたので古いものをこちらに移動

更新履歴

0.1.8_2010-06-27

  • 検索結果ページの変更に対応
  • 有料動画フィルタを追加
  • user_id の設定されていない動画でも投稿者ブロックボタンが表示される問題を修正

0.1.7_2010-06-11

  • 非同期通信を必要とするフィルタ
    video_id の接頭辞が sm/nm以外の動画を対象にできなかった問題を修正

0.1.6_2010-06-11

0.1.5_2010-06-05

  • 検索結果ページの変更に対応*2

0.1.4_2010-06-02

0.1.3_2010-03-25

  • 検索結果ページの変更にあわせ、削除件数の表示位置を修正

0.1.2_2010-03-01

  • 「投稿者」フィルタを削除*5
  • XHR で取得した情報をキャッシュするかどうかを設定できるようにした
  • 再生数/コメント数/マイリスト数が 0 の動画をしきい値フィルタが削除できなかった問題を修正*6

0.1.1_2010-02-01

  • 変数の宣言漏れ(2ヶ所、ループ変数)を修正

0.1.0_2010-01-25

  • コードを全面的に書き直し*7
  • 「最新コメント」フィルタ(4列表示時)を追加
  • 「説明文」(全文)フィルタを追加
  • 「投稿者」フィルタを追加
  • 「視聴できません」フィルタを追加
  • XHR で取得した情報をキャッシュ
  • 独自に自動更新機能を持つのをやめ、Wescript の利用を推奨することに

0.0.9_2010-01-15

0.0.8_2010-01-12

  • AutoPagerize による追加ページのロード時、
    既にロードした部分も含めた全体を再度フィルタリング/詰め直していた問題を修正

0.0.7_2010-01-10

0.0.6_2010-01-10

  • 小規模リファクタリング、機能の追加なし
    ※0.0.5 からのアップデートの必要はありません。

0.0.5_2010-01-07

  • 公開

*1:v0.10 における投稿者のニックネームによるフィルタをそのまま復活させたのではなく、getthumbinfo が返す user_id を使うように修正した。

*2:列数を選択可能な table の段組みに戻った。指定できる列数として新たに「1列」が加わり、動画の表示列数を「1/2/4」から選択できるようになった。

*3:これまでの table による段組みが廃され、liner な配置になった。段組みの大枠である table 自体がなくなったため大幅なコード修正を強いられた。

*4:prefs.js の肥大化を抑止することが目的。現状、キャッシュはシリアライズされた無圧縮の文字列のため、1000件のオーダーでは prefs.js が大きくなり過ぎる。

*5:違反動画の通報ページから投稿者のニックネームを取得するという方法がダーティである点に加え、getthumbinfo を使う他の属性と二系統の xhr が必要になり、悪手であるので削除することにした。

*6:Ruby脳のせいで 0 が偽と評価されることをうっかり忘れていた(;^ω^)

*7:オブジェクト指向風味で書き直した。

*8:設定は about:config に保持されています。

2010-01-08

ニコニコ動画の検索結果をフィルタリングする Greasemonkeyスクリプト

重要なお知らせ

Nicovideo Results Filter の開発は終了しました。

現在のバージョン(0.2.7_2010-11-21)が動作しなくなった時点でこのエントリ内のダウンロード用リンクは削除されます。以後、当スクリプトの更新は行われません。(追記:2011-01-11)

Nicovideo Results Filter は開発を終了し、現在は一切メンテナンスされておりません。このエントリ内のダウンロード用リンクはあくまで「改造して使う人用」です。インストールしても現在(2011年10月22日時点)ニコニコ動画では正常に動作しない可能性があります。(動作未確認)

スクリプトは MIT License にて公開していますので、自由に改変、再配布していただいて結構ですが、(当然のことながら)当方では一切責任を負いませんのであしからず。(追記:2011-10-22)

インストール用リンクを削除(追記:2011-11-19)


ニコニコ動画の検索結果を眺めていて、

  1. 動画のタイトル、説明文に NGワードを含む動画
  2. 最新コメントに「釣り」とか書かれている動画
  3. 再生数/コメント数/マイリスト数の少ない動画

などを検索結果から削除したいと思い*1ニコニコ動画の検索結果をフィルタリングする Greasemonkeyスクリプトを書きました。Greasemonkey については以下のリンクを参照↓)

インストール

お使いのブラウザが Firefox であれば、以下のリンクをクリックすることでインストールできます。(※ただし、前もって上記リンクから Greasemonkeyアドオンをインストールしておく必要があります)

  • nicovideo_results_filter.user.js (0.2.7_2010-11-21)

注意:インストールに際しては以下の「機能」をよく読んで下さい。

注意:ブラウザに古いバージョンがキャッシュされていると上記リンクをクリックしても最新バージョンがインストールされない場合があります。そのような場合はブラウザのキャッシュを削除してから再度インストールして下さい。

機能

合計 10 のフィルタがあり、個別に ON/OFF できます。

「タイトル」/「説明文」/「タグ」フィルタ

動画の「タイトル」/「説明文」/「タグ」が NGパターンにマッチする動画を検索結果から削除します。興味がない、嫌い、などの理由により検索結果に表示されて欲しくないものを削除するためのフィルタ群です。

「最新コメント」フィルタ

動画の「最新コメント」が NGパターンにマッチする動画を検索結果から削除します。釣り動画の最新コメントにはしばしば「釣り」という単語が含まれていますので、このフィルタの NGパターンに「釣り」などと設定しておくと釣り動画をある程度排除できます。

「投稿者」フィルタ

特定の投稿者の動画を検索結果から削除します。不愉快な動画ばかり投稿する困った投稿者を抹殺するためのフィルタです。

このフィルタを ON にすると、動画のタイトルの頭に投稿者ブロックボタン( f:id:h1mesuke:20100612134852p:image )が表示されるようになりますので、それをクリックすることによってその動画の投稿者を NGユーザーに登録することができます。

しきい値フィルタ

動画の「再生数」/「コメント数」/「マイリスト数」がしきい値未満の動画を検索結果から削除します。再生数やコメント数をある程度獲得した人気の動画だけチェックしたい場合などに有効です。

フィルタのしきい値は個別に設定できます。

「視聴できません」フィルタ

投稿者あるいは運営によって削除されてしまった動画を検索結果から削除します。

有料動画フィルタ

有料動画を検索結果から削除します。

AutoPagerize に対応

AutoPagerize と併用できます。

自動更新機能

スクリプトアップデートチェックを自動化したい場合は、インストールした Greasemonkeyスクリプトの自動更新を行ってくれるアドオン Wescript の利用を推奨します。

設定方法

各種フィルタの ON/OFF、NGパターンの登録/削除などは、ページ最上部の「メニュー」から設定画面を呼び出して行って下さい。*2

f:id:h1mesuke:20101013135733p:image

▼設定画面

f:id:h1mesuke:20100711014026p:image

f:id:h1mesuke:20100711014027p:image

NGパターンは1行に1つずつ登録して下さい。投稿者ID以外の NGパターンは正規表現として解釈されます。(両端を「/」で囲む必要はありません。また、半角アルファベットの大文字と小文字は区別されません)

NGパターンはサンプルも兼ねていくつか初期設定が登録してありますが、何が削除されて欲しいかは人によって異なるので必ず各自で編集して使って下さい。

初期設定では、「タイトル」フィルタ、「視聴できません」フィルタ、有料動画フィルタが ON になっています。これだけでも十分効果がありますが、さらに厳しい条件で検索結果をフィルタリングしたい場合は、必要に応じてその他のフィルタも ON にしてみるといいでしょう。

動作の確認

Firefox のエラーコンソールにフィルタリングされた動画のタイトルとその理由を出力するようになっています。フィルタが期待した通りに動作しているか確認したい場合は「ツール > エラーコンソール」の出力をチェックしてみて下さい。

非同期通信の発生条件

一部のフィルタは動画の詳細情報を取得するためにニコニコ動画のサーバーへ問い合わせを行います。その場合、通信の待ち時間が発生するため、検索結果表示からフィルタリング完了までのレスポンスが若干低下します。以下にその条件を示します。

フィルタ非同期通信
タイトル不要
説明文△必要 (4列表示時)
最新コメント△必要 (1/4列表示時)
タグ必要
投稿者必要
再生数
コメント数
マイリスト数
不要

基本的に、検索結果に含まれていない情報が必要となる場合には非同期通信が必要になります。非同期通信によって取得した情報は一定数キャッシュするようになっていますので、同じ動画に対する問い合わせが連続して何度も発生することはありません。

更新履歴

0.2.7_2010-11-21

0.2.6_2010-10-31

0.2.5_2010-10-14

  • ページ最上部のメニューから設定画面を開けるようにした

0.2.4_2010-10-12

0.2.3_2010-10-08

  • 初回インストール後、設定画面にて最初に設定を保存するまでスクリプトが動作しない問題を修正

0.2.2_2010-09-29

  • 検索結果ページの変更に対応
  • 投稿者フィルタが正常に動作しなかった問題を修正

0.2.1_2010-08-08

  • 検索結果ページの HTML変更により、動画件数のカウントに失敗していた問題を修正
  • フィルタリングされた動画のマスク機能を無効に*3

0.2.0_2010-07-11

  • GM_config を自作ライブラリ USConfig *4 で置き換え
  • それにより設定画面がたまに出ない問題が解決


更新履歴が長くなってきたため、これより古い部分は別ページに移動しました。

ToDo
進捗ToDo実装
検討中キャッシュの圧縮0.2.x
検討中投稿後の日数によるフィルタ0.2.x
検討中再生時間によるフィルタ0.2.x
完了設定画面へのアクセス改善0.2.5
完了自作ライブラリによる gm_config の置き換え0.2.0
完了たまに設定画面が開かない問題を解決0.2.0
完了有料動画フィルタ0.1.8
完了タグフィルタ0.1.6
完了投稿者フィルタ復活0.1.6
検討中4列表示時の「最新コメント」/「投稿者」フィルタの両立0.1.x
完了XHRキャッシュ0.1.0
決定自動更新機能をなくし、wescript で代替0.1.0
完了「視聴できません」フィルタ0.1.0
完了投稿者フィルタ0.1.0
完了説明文フィルタ(全文)0.1.0
完了最新コメントフィルタ(4列表示時)0.1.0
不具合の報告等

不具合報告や感想などありましたらコメント欄の方へどうぞ。特に、ニコ動の HTML変更を受けてスクリプトが動作しなくなった場合などは、コメ欄の方へ一報を入れていただけると、作者の対応が(少し)早くなる可能性があります。

Twitter もやってますんで、そちらへのリプライも歓迎です。

*1:ことの発端は自分の好きな作品の「ミリ知ら」シリーズにイラッときたことであった。

*2:「ツール > Greasemonkey > ユーザスクリプトコマンド > Nicovideo Results Filter」 または ウィンドウ最下部の「f:id:h1mesuke:20100110104650p:imageを右クリック > ユーザスクリプトコマンド > Nicovideo Results Filter」でも開くことができます。

*3:検索結果の HTML変更を受け、マスク用 div要素の位置を揃えるのが難しくなったため。

*4:github にて公開準備中