Advertisement
Guest User

EOP Destroyer v2.1

a guest
Jan 27th, 2020
413
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. javascript:(() => {
  2.     let ALLOWED_MESSAGES = ["bgm", "f"]; /*In lower case*/
  3.     let FILTER_THRESHOLD = 70; /*How much % of the message should have english letters to be filtered*/
  4.     let func = () => {
  5.         let chat_list = window.top.document.getElementById("chatframe")
  6.             .contentDocument.querySelector("#items.style-scope.yt-live-chat-item-list-renderer");
  7.         let observer = new MutationObserver((mutationsList, observer) => {
  8.             let chat_items = chat_list.children;
  9.             for(let i = 0; i < chat_items.length; i++) {
  10.                 if(chat_items[i].dataset.eopFiltered)
  11.                     continue;
  12.                
  13.                 let msgNode = chat_items[i].querySelector("#content span#message");
  14.                 if(!msgNode)
  15.                     continue;
  16.  
  17.                 let msg;
  18.                 for(let i = 0; i < msgNode.childNodes.length; i++) {
  19.                     let node = msgNode.childNodes[i];
  20.                     if(node.nodeType === Node.TEXT_NODE) {
  21.                         msg = node.nodeValue.trim();
  22.                         break;
  23.                     }
  24.                 }
  25.                 if(!msg || ALLOWED_MESSAGES.includes(msg.toLowerCase()))
  26.                     continue;
  27.  
  28.                 let original = msg;
  29.                 msg = msg.replace(/[\d\^\(\)\[\]w\s.!?,\ufe0e]/g, "");
  30.                 if(msg.length === 0)
  31.                     continue;
  32.  
  33.                 let full_len = msg.length;
  34.                 let en_only_array = msg.match(/[a-z]+/gi);
  35.                 let en_len = en_only_array ? en_only_array.reduce((a, b) => a + b.length, 0) : 0;
  36.                 let percentage = en_len / full_len * 100;
  37.                 if(percentage > FILTER_THRESHOLD) {
  38.                     let author = chat_items[i].querySelector("#content span#author-name").innerText;
  39.                     console.log(`Filtered\t${author}: ${original}`);
  40.                     chat_items[i].style.display = "none";
  41.                     chat_items[i].dataset.eopFiltered = "y";
  42.                 }
  43.             }
  44.         });
  45.  
  46.         observer.observe(chat_list, { attributes: false, childList: true, subtree: false });
  47.     };
  48.  
  49.     if(window.top.document.readyState === "complete") {
  50.         let chat_frame = window.top.document.getElementById("chatframe");
  51.         let chat_doc = chat_frame.contentDocument;
  52.         let chat_list = chat_doc.querySelector("#items.style-scope.yt-live-chat-item-list-renderer");
  53.         if(chat_doc && chat_doc.readyState === "complete" && chat_list) {
  54.             console.log("All loaded already");
  55.             func();
  56.         } else {
  57.             console.log("Waiting for chat to load");
  58.             chat_frame.contentWindow.addEventListener("load", func);
  59.         }
  60.     } else {
  61.         console.log("Waiting for top to load");
  62.         window.top.addEventListener("load", func);
  63.     }
  64. })();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement