forked from jpgohlke/twitch-chat-filter
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathchat_filter.min.js
1 lines (1 loc) · 3 KB
/
chat_filter.min.js
1
(function(){"use strict";var BLOCKED_WORDS=["left","right","up","down","start","select","a","b","democracy","anarchy","oligarchy","bureaucracy","monarchy","alt f4"];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}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 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")});$(".ChatToggle").click(function(){$(this).toggleClass("selected");$("#chat_line_list").toggleClass("showSafe")}).click()};var initialize_filter=function(){var CurrentChat=myWindow.CurrentChat;CurrentChat.line_buffer=800;$('#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)});var _insert_chat_line=CurrentChat.insert_chat_line;CurrentChat.insert_chat_line=function(e){_insert_chat_line.call(this,e);var queueOp=this.queue[this.queue.length-1];var chatClass=is_message_spam(e.message)?"cSpam":"cSafe";queueOp.line=queueOp.line.replace('class="','class="'+chatClass+' ')}};$(function(){initialize_ui();if(myWindow.CurrentChat){initialize_filter()}else{$(myWindow).on("load",function(){initialize_filter()})}})}());