Advertisement
Erendir

DickishCommentsHider@samlib

Dec 21st, 2013
1,495
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // ==UserScript==
  2. // @name        DickishCommentsHider@samlib
  3. // @description This script will hide comments from dicks on samlib.ru.
  4. // @description You can easily adapt hiding patterns for your needs (currently there is one for each header and body)
  5. // @namespace   http://www.samlib.ru
  6. // @include     http://samlib.ru/comment/b/burewojandrej/knigi*
  7. // @include     http://zhurnal.lib.ru/comment/b/burewojandrej/knigi*
  8. // @include     http://budclub.ru/comment/b/burewojandrej/knigi*
  9. // @version     7
  10. // @grant       none
  11. // ==/UserScript==
  12.  
  13. //make all kyrillic letter looking same as latin be latin for search purposes о Т О о O o
  14. function latinize(s){
  15.     return s.replace(/о/g,"o").replace(/О/g,"O").replace(/Т/g,"T")
  16. }
  17.  
  18. var strptrnBanBody = "\\d+\\.Tor|копрофагия|дaвыдк.|\\bприболт|\\bгнид|\\bсоси\\b|\\bгавно|педофил\\b|гомик|\\bгoмocятин.|голубизна|\\bпедик\\b|\\bпeдap|говноед|школоло|школота|п.дрила|защеканец|\\bхуй|\\bхy.\\b|хуе\\B|\\bпидор|\\bпидар|\\bпедераст|\\bпидарас|\\bтолераст|\\bпизд|\\гандон|\\bдерьмократ|www\.foto\-me\.ru";
  19. var strptrnBanHeader = "\\bTor\\b|\\bДавыдов|\\bДавыдк|Ляхов Анатолий Георгиевич|[email protected]|Кощиенко Андрей Геннадьевич|[email protected]|Повелитель Пердунов"; // только с * правильно"*Давыдов", "*Кощиенко"
  20. // unfortunally, we can't use \b or \B in our regexp, cause it only works w/ latin characters. Need to use [^a-zA-Zа-яА-ЯёЁ] or smthng instead:
  21. var ptrnBanBody = RegExp( latinize(strptrnBanBody).replace(/\\b/g, "(?:^|[^a-zA-Zа-яА-ЯёЁ]|$)").replace(/\\B/g, "[a-zA-Zа-яА-ЯёЁ]"), "i")
  22. var ptrnBanHeader = RegExp( latinize(strptrnBanHeader).replace(/\\b/g, "(?:^|[^a-zA-Zа-яА-ЯёЁ]|$)").replace(/\\B/g, "[a-zA-Zа-яА-ЯёЁ]"), "")
  23.  
  24.  
  25. //remove some unnecessary stuff on the right side of page
  26. //document.body.innerHTML=document.body.innerHTML.replace(/<table align=\"right\" bgcolor=\"#e0e0e0\" border=\"0\" cellpadding=\"5\" cellspacing=\"0\">[\s\S]*?<\/table>/,"");
  27. if (document.body.children[4].nodeName == "TABLE") // evil hack: i'm expecting this table always be on the same place
  28.     {
  29.         document.body.children[4].remove()
  30.     }
  31.  
  32. //replace shitty comments with shit.
  33. //doing some preparations:
  34. // first of all, just wrap all comments in a div.comment w/ header and body
  35. document.body.innerHTML=document.body.innerHTML.replace(/(<small>\d+\.<\/small>[\s\S]*?<\/small>)\r?\n?(?:<br>)?([\s\S]*?)(<hr noshade=\"\">)/g,
  36.                                      "<div class=\"comment\"><div class=\"comment-header\">$1<\/div><div class=\"comment-body\">$2<\/div>$3<\/div>");
  37. //now process comments
  38. var arComments = document.getElementsByClassName('comment')
  39.  
  40. for (var i = 0; i < arComments.length; i++){
  41.     var elmComment = arComments[i];
  42.  
  43.   var strHeader = latinize(elmComment.childNodes[0].textContent)
  44.   var strBody = latinize(elmComment.childNodes[1].textContent)
  45.     // if header starts with asterix, anything is ok
  46.     if (elmComment.childNodes[0].children[1].innerHTML.search(/^\*<noindex>/) != 0
  47.             && (
  48.                 strHeader.search(ptrnBanHeader) != -1
  49.                 ||
  50.                 strBody.search(ptrnBanBody) != -1
  51.                 )
  52.         )
  53.     {
  54.         elmComment.title = elmComment.childNodes[1].textContent //if you _really_ want to know, text is stored in tooltip
  55.         elmComment.childNodes[1].textContent = "Я - мудак"
  56.     }
  57.     // hide the "Чрезмерное цитирование!"
  58.     elmComment.childNodes[1].innerHTML = elmComment.childNodes[1].innerHTML.replace(/(((((&nbsp;)|(<br>)|(\r?\n)|\s)*(Чрезмерное цитирование!)+)|(((&nbsp;)|(<br>)|(\r?\n)|\s)*(Поправьте сообщение, чтобы цитаты не превышали 70% общего объема сообщения. Сейчас \- \d+%)+))+)/g, "<abbr title='$1'>[...]</abbr>")
  59.     // remove trainling spaces/blank lines at the very end of comment body
  60.     elmComment.childNodes[1].innerHTML = elmComment.childNodes[1].innerHTML.replace(/((&nbsp;)|(<br>)|(\r?\n)|\s)+$/,"")
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement