Greasy Fork

userstyles forum spamfilter

hides spam posts at forum.userstyles.org

当前为 2014-06-28 提交的版本,查看 最新版本

// ==UserScript==
// @name        userstyles forum spamfilter
// @namespace   trespassersW
// @description hides spam posts at forum.userstyles.org
// @include http*://forum.userstyles.org/*
// @version 2.014.0628.1
// @license Public Domain
// @created 2014-06-25
// @updated 2014-06-28
//  + authors blacklist
// @run-at document-end
// @grant GM_none
// ==/UserScript==
// inspired by hideheader

(function(){
var blacklist = [
/[\d+-]{9,}?/
/* * / 
,/[\s,\+\=\*]9[\d\s-]{7,11}/
/* */
];

var authorz=[
'/159458/'
/* substring in userprofile URL, [not regExp] */

]
var C=0,S,E;

var a = document.querySelectorAll('#Content .DataList > li.Item');
if(a && a.length>0){

function toggleSpam(x){
 var t = ('N'===x)? false: ('Y'===x)? true: !S.disabled;;
 S.disabled = t;
 E.innerHTML= (t?'hide':'show')+' ['+C+']';
}

function stickStyle(css){
 var s=document.createElement("style"); s.type="text/css";
 s.appendChild(document.createTextNode(css));
 return (document.head||document.documentElement).appendChild(s);
}

for (var i=0, li=a.length; i<li; i++) {
  var title=a[i].querySelector(".Title")
  if(title)
  for(var d=0,j=0,lj=blacklist.length; j<lj; j++) {
    if (blacklist[j].test(title.textContent)) { 
       a[i].classList.add('forum-uso-spam'), 
       d=1,C++;  break;
  }}
  if(d) continue;
    var au=a[i].querySelector(".ShowDiscussionAuthor >a") ||
         a[i].querySelector(".Author >a");
   if(au && 0!= (au=au.href))
   for(j=0,lj=authorz.length; j<lj; j++){
     if (au.indexOf(authorz[j])>-1) { 
       a[i].classList.add('forum-uso-spamer'), 
       C++;  break;
  }}
}

if(C){
 E=document.createElement('div');
 E.id="forum-uso-spam-info";
 E.style.cssText = '\
position:fixed;\
left:2px;top:2px;\
background:rgba(255,255,255,.255);\
color:red;border:thin dotted red;\
cursor:pointer;\
';
 E.addEventListener('click',toggleSpam,false);
 document.body.appendChild(E);
 stickStyle('\
 .forum-uso-spam{border:thin dotted red!important;}\
 .forum-uso-spamer{border:thin dotted maroon!important;}\
 ');
 S=stickStyle('li.Item[class*="forum-uso-spam"]{display:none!important;}');
 toggleSpam('N');
}
//console.log('forum-uso - '+C+' posts hidden');

}
})();