Skip to content

Instantly share code, notes, and snippets.

@Munksgaard
Created February 23, 2014 14:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Munksgaard/9172142 to your computer and use it in GitHub Desktop.
Save Munksgaard/9172142 to your computer and use it in GitHub Desktop.
javascript:(function(){"use strict";var BLOCKED_WORDS=["left","right","up","down","start","select","a","b","democracy","anarchy","oligarchy","bureaucracy","monarchy","alt f4","helix"];var BLOCKED_URLS=["nakedjenna","bit.ly","bitly","tinyurl","teespring","youtube.com/user","naked-riley","twitch.tv","ow.ly","steam-games-free","free-steam-games","cheap games"];var MINIMUM_MESSAGE_LENGTH=3;var MAXIMUM_NON_ASCII_CHARACTERS=2;var MINIMUM_DISTANCE_ERROR=2;var myWindow;try{myWindow=unsafeWindow}catch(e){myWindow=window}var $=myWindow.jQuery;var commands_regex=new RegExp("^(("+BLOCKED_WORDS.join("|")+")\\d?)+$","i");function min_edit(a,b){if(a.length===0)return b.length;if(b.length===0)return a.length;var matrix=[];for(var i=0;i<=b.length;i++){matrix[i]=[i]}for(var j=0;j<=a.length;j++){matrix[0][j]=j}for(var i=1;i<=b.length;i++){for(var j=1;j<=a.length;j++){if(b.charAt(i-1)==a.charAt(j-1)){matrix[i][j]=matrix[i-1][j-1]}else{matrix[i][j]=Math.min(matrix[i-1][j-1]+1,Math.min(matrix[i][j-1]+1,matrix[i-1][j]+1))}}}return matrix[b.length][a.length]}var is_message_spam=function(message){message=message.replace(/\s/g,'');if(message.length<MINIMUM_MESSAGE_LENGTH){return true}if(message.match(commands_regex)){return true}for(var i=0;i<BLOCKED_URLS.length;i++){if(message.indexOf(BLOCKED_URLS[i])!==-1){return true}}var nonASCII=0;for(var i=0;i<message.length;i++){if(message.charCodeAt(i)>127){nonASCII++;if(nonASCII>MAXIMUM_NON_ASCII_CHARACTERS){return true}}}var min_distance=BLOCKED_WORDS.map(function(word){return min_edit(word,message)}).reduce(function(x,y,i,arr){return Math.min(x,y)});if(min_distance<=MINIMUM_DISTANCE_ERROR){return true}return false};var showSpam=false;var showSafe=false;var initialize_ui=function(){$("<style type='text/css' >"+".segmented_tabs li li a.CommandsToggle {"+"width: 50px;"+"padding-left: 0;"+"padding-top: 0;"+"height: 8px;"+"line-height: 115%;"+"}"+".segmented_tabs li li a.ChatToggle {"+"width: 35px;"+"padding-left: 15px;"+"padding-top: 0;"+"height: 8px;"+"line-height: 115%;"+"}"+"#chat_line_list li { display:none }"+"#chat_line_list li.fromjtv,"+"#chat_line_list.showSpam li.cSpam,"+"#chat_line_list.showSafe li.cSafe {"+"display:inherit;"+"}"+" </style>").appendTo("head");var chat_button=$("ul.segmented_tabs li a").first();chat_button.css("width",chat_button.width()-71);$("<li><a class='CommandsToggle'>Commands</a><a class='ChatToggle'>Talk</a></li>").insertAfter(chat_button);$(".CommandsToggle").click(function(){$(this).toggleClass("selected");$("#chat_line_list").toggleClass("showSpam");showSpam=!showSpam});$(".ChatToggle").click(function(){$(this).toggleClass("selected");$("#chat_line_list").toggleClass("showSafe");showSafe=!showSafe}).click()};var initialize_filter=function(){var CurrentChat=myWindow.CurrentChat;$('#chat_line_list li').each(function(){var chatLine=$(this);var chatText=chatLine.find(".chat_line").text();var chatClass=is_message_spam(chatText)?"cSpam":"cSafe";chatLine.addClass(chatClass)});CurrentChat.spam_count=0;CurrentChat.safe_count=0;CurrentChat.jtv_count=0;CurrentChat.insert_with_lock_in=function(){var t=this.set_currently_scrolling;this.set_currently_scrolling=function(){};var n,r,isSpam=!1,i="",s=[];while(this.queue.length>0){n=this.queue.shift();if(n.linkid){isSpam=is_message_spam(n.info.message);var chatClass=isSpam?"cSpam":"cSafe";n.line=n.line.replace('class="','class="'+chatClass+' ');s.push({info:n.info,linkid:n.linkid});if(isSpam){n.el==="#chat_line_list"&&(this.spam_count++)}else{n.el==="#chat_line_list"&&(this.safe_count++)}}else if(n.el==="#chat_line_list"){this.jtv_count++}r&&r!==n.el&&($(r).append(i),i="");r=n.el;i+=n.line}r&&$(r).append(i);for(var o=0;o<s.length;o++)n=s[o],this.setup_viewer_handlers(n.info,n.linkid);this.line_count=this.jtv_count;if(showSpam){this.line_count+=this.spam_count}else if(this.spam_count>1000){var selected=$("#chat_line_list li.cSpam").slice(0,this.spam_count-this.line_buffer);this.spam_count-=selected.length;selected.remove()}if(showSafe){this.line_count+=this.safe_count}if(this.line_count>this.line_buffer){var selector="#chat_line_list li";if(showSpam){selector+=".cSpam, #chat_line_list li"}if(showSafe){selector+=".cSafe, #chat_line_list li"}selector+=".fromjtv";$(selector).slice(0,(this.line_count-this.line_buffer)).each(function(){if($(this).hasClass("cSpam")){CurrentChat.spam_count--}else if($(this).hasClass("cSafe")){CurrentChat.safe_count--}else{CurrentChat.jtv_count--}}).remove();this.history_ended&&this.scroll_chat()}var u=this;setTimeout(function(){u.history_ended&&u.scroll_chat(),u.set_currently_scrolling=t,u.appending=!1},1)}};$(function(){initialize_ui();var chatLoadedCheck=myWindow.setInterval(function(){if($("#chat_loading_spinner").css('display')=='none'){myWindow.clearInterval(chatLoadedCheck);initialize_filter()}},100)})}());
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment