Remove Ads in feed on LDR! (2)

LDR Ad-Entry BlockerというGreasemonkey scriptですが、しばらく使ってみて気になることがでてきた。
同じフィードの中で同じ条件の広告記事に対して、最初のほうは効果が効いているのに、後のほうは効いていない、ということがあるのだ。
ソースを見ても、僕のあたまでは解決できそうに無い。

で、改めて探してみた。

LDR - Prefav

しげふむメモ:LDRをもっと読みやすくするLDR Prefavで紹介されてた。

ソースを見てみると、フィルタ関数がいっぱい登録されてる。各フィードに対して登録されている関数を適用していくようだ。
でも、「PR:」などに個別に対応するフィルタ関数しか無い様だ。
そこで「PR:」の処理を行っている"RSS Ads - Remove Trend Match, solve Feed Metrix"というフィルタ関数を参考にして、「AD:、PR:、[AD]、[PR]、【AD】、【PR】」がタイトルの先頭にある記事を削除するフィルタ関数を作ってみた。

"Remove Ad" : function(f) {
    filter(f.items, function(i) i.title.match(/^[\[【](AD|PR|AD|PR)[\]】]|^\s*(AD|PR|AD|PR)\s*[::]/i) == null);
},

パターンは前回、LDR Ad-Entry Blockerをデバッグしたときのものを利用した。
フィルタ関数がいっぱいあると遅くなるような気がしたので上記以外はばっさり削除して試してみたところ、きれいに広告記事が削除されてすっきりした。