Guest User

Untitled

a guest
Mar 2nd, 2014
286
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.47 KB | None | 0 0
  1. javascript:(function(){"use strict";var TPP_COMMANDS = [ "left", "right", "up", "down", "start", "select", "a", "b", "democracy", "anarchy", "wait"];var MISTY_SUBSTRINGS = [ "misty", "guys", "we have to", "we need to", "beat",];var URL_WHITELIST = [ "github.com", "reddit.com", "webchat.freenode.net/?channels=twitchplayspokemon", "sites.google.com/site/twitchplayspokemonstatus/", "reddit.com/live/sw7bubeycai6hey4ciytwamw3a", "strawpoll.me", "imgur.com", "pokeworld.herokuapp.com", "strategywiki.org/wiki/Pok", "vgmaps.com"];var BANNED_WORDS = [ "anus", "giveaway", "t-shirt", "hoodie", "imgur.com/4jlbxid.jpg"];var MINIMUM_DISTANCE_ERROR = 2;var MAXIMUM_NON_ASCII_CHARACTERS = 2;var MINIMUM_MESSAGE_WORDS = 2;var URL_REGEX = /\x02?((?:https?:\/\/|[\w\-\.\+]+@)?\x02?(?:[\w\-\*]+\x02?\.)+\x02?(?:com|au|org|tv|net|info|jp|uk|us|cn|fr|mobi|gov|co|ly|me|vg|eu|ca|fm|am|ws|mx|sh)\x02?(?:\:\d+)?\x02?(?:\/[\w\.\/@\?\&\%\#\(\)\,\-\+\=\;\:\x02?]+\x02?[\w\/@\?\&\%\#\(\)\=\;\x02?]|\x02?\w\x02?|\x02?)?\x02?)\x02?/g;var CENSORED_URL = /\*\*\*[\/\?\#\%]/g;var myWindow;try{ myWindow = unsafeWindow;}catch(e){ myWindow = window;}var $ = myWindow.jQuery;var CurrentChat = null;var chat_loaded = false;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] = 1 + Math.min( matrix[i-1][j-1], matrix[i][j-1] , matrix[i-1][j] ); } } } return matrix[b.length][a.length];}var compound_command_regex = new RegExp("^((" + TPP_COMMANDS.join("|") + ")\\d*)+$", "i");function word_is_command(word){ if(compound_command_regex.test(word)) return true; for(var j=0; j<TPP_COMMANDS.length; j++){ var cmd = TPP_COMMANDS[j]; if(min_edit(cmd, word) <= MINIMUM_DISTANCE_ERROR){ return true; } } return false;}function message_is_command(message){ message = message.toLowerCase(); var segments = message.split(/[\d\s]+/); for(var i=0; i<segments.length; i++){ var segment = segments[i]; if(!segment) continue; if(!word_is_command(segment)) return false; } return true;}function message_is_spam(message) { message = message.toLowerCase(); for(var i=0; i < BANNED_WORDS.length; i++){ if(0 <= message.indexOf(BANNED_WORDS[i])){ return true; } } var misty_score = 0; for (var i = 0; i < MISTY_SUBSTRINGS.length; i++) { if (message.indexOf(MISTY_SUBSTRINGS[i]) != -1) { misty_score++; if (misty_score > 1) { return true; } } } return false;}function is_whitelisted_url(url){ for(var i=0; i<URL_WHITELIST.length; i++){ if(0 <= url.indexOf(URL_WHITELIST[i])){ return true; } } return false;}function message_is_forbidden_link(message){ message = message.toLowerCase(); if(CENSORED_URL.test(message)) return true; var urls = message.match(URL_REGEX); if(!urls) return false; for(var i=0; i<urls.length; i++){ if(!is_whitelisted_url(urls[i])){ return true; } } return false;}function message_is_donger(message){ 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; } } } return false;}function message_is_small(message){ return message.split(/\s/g).length < MINIMUM_MESSAGE_WORDS;}function message_is_cyrillic(message){ return /[\u0400-\u04FF]/.test(message);}function convert_copy_paste(message){ return message.replace(/(.{4}.*?)(\s*?\1)+/g, "$1");}var filters = [ { name: 'TppFilterCommand', comment: " 指令 (up, down, anarchy,等)", isActive: true, predicate: message_is_command }, { name: 'TppFilterLink', comment: " 白名單以外連結", isActive: true, predicate: message_is_forbidden_link }, { name: 'TppFilterDonger', comment: " 顏文字及ASCII圖", isActive: false, predicate: message_is_donger }, { name: 'TppFilterSmall', comment: " 單一簡略字詞", isActive: false, predicate: message_is_small }, { name: 'TppFilterSpam', comment: ' 垃圾訊息', isActive: true, predicate: message_is_spam }, { name: 'TppFilterCyrillic', comment: ' 斯拉夫字元', isActive: true, predicate: message_is_cyrillic }];var rewriters = [ { name: 'TppFilterDuplicateURL', comment: " 複製貼上重複訊息", isActive: true, rewriter: convert_copy_paste },];var stylers = [ { name: 'TppConvertAllcaps', comment: " 自動轉換小寫字母", isActive: true, element: '.chat-messages', class: 'allcaps_filtered' },];function passes_active_filters(message){ for(var i=0; i < filters.length; i++){ var filter = filters[i]; if(filter.isActive && filter.predicate(message)){ return false; } } return true;}function rewrite_with_active_rewriters(message){ var newMessage = message; for(var i=0; i < rewriters.length; i++){ var rewriter = rewriters[i]; if(rewriter.isActive){ newMessage = (rewriter.rewriter(newMessage) || newMessage); } } return newMessage;}function initialize_ui(){ $("button.viewers").after('<a id="chat_filter_dropmenu_button" class="dropdown_glyph"><span></span><a>'); $('#chat_filter_dropmenu_button').on('click', function(){ $('#chat_filter_dropmenu').toggle(); }); $('#chat_filter_dropmenu_button span') .css('background', 'url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAv0lEQVQ4jc3SIQ7CQBAF0C8rK5E9AhI5R1gccpLOn+UACARHwCO5Aq6HQHAUQsAhwJGmlNBdIOEnY18mfwb4u4hIYWaSOySnAABVrWKMt9xx97OqVlDVkbufPoAuZiYAgBBC6e5NBnJQ1eqpK5KbBKQJIZQvyyc5f4eQ3A66pJlJjLG3N3dfJr0FyUUHudZ1PUtCWls9IDPbJyN90OBeulHV8beg6lfQKgsSkaJ18qOZTbIgAHD3NcmdiBTZSGruBIYOSjStwb0AAAAASUVORK5CYII=)') .css('position', 'relative'); $('.send-chat-button').css('left', '107px'); $('.chat-interface').append('<div id="chat_filter_dropmenu" class="dropmenu menu-like" style="position:absolute; bottom:45px; display:none;"><p style="margin-left:6px"> 隱藏:</p></div>'); var controlPanel = $('#chat_filter_dropmenu'); var customCssParts = [ ".chat-messages .TppFiltered {display:none;} .filter_option{font-weight:normal; margin-bottom:0; color: #B9A3E3;}", ".chat-messages.allcaps_filtered span.chat-line{text-transform:lowercase;}" ]; $('head').append('<style>' + customCssParts.join("") + '</style>'); function add_option(option, update){ controlPanel .append('<p class="dropmenu_action"><label for="' + option.name + '" class="filter_option"> <input type="checkbox" id="' + option.name + '">' + option.comment + '</label></p>'); $('#' + option.name) .on('change', function(){ option.isActive = $(this).prop("checked"); update(option); }) .prop('checked', option.isActive); } filters.forEach(function(filter){ add_option(filter, update_chat_with_filter); }); $('#chat_filter_dropmenu').append('<p style="margin-left:6px;"> 自動替換:</p>'); rewriters.forEach(function(rewriter){ add_option(rewriter, function(rewriter){}); }); function update_css(styler){ if(styler.isActive) $(styler.element).addClass(styler.class); else $(styler.element).removeClass(styler.class); } stylers.forEach(function(option){ add_option(option, update_css); update_css(option); });}function update_chat_with_filter(){ $('.chat-line').each(function() { var chatLine = $(this); var chatText = chatLine.find(".message").text().trim(); if(passes_active_filters(chatText)){ chatLine.removeClass("TppFiltered"); }else{ chatLine.addClass("TppFiltered"); } });}$(function(){ var chatLoadedCheck = setInterval(function () { if($(".loading-mask").length == 0){ chat_loaded = true; clearInterval(chatLoadedCheck); initialize_ui(); update_chat_with_filter(); } }, 100); window.setInterval(function(){ if(chat_loaded) { update_chat_with_filter(); } }, 10);});}());
Add Comment
Please, Sign In to add comment