Advertisement
Guest User

JAP Destroyer v9002

a guest
Jan 28th, 2020
273
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // Removes non-English chat messages and superchat in YouTue live chat
  2. // Modified and improved version of https://pastebin.com/XpiKsr8T (it didn't support superchats and removed number-only messages)
  3. // v9002
  4. //   - Fixed messages not appearing after some time
  5. //   - Fixed chat scrolling
  6. //   - Removed printing of filtered messages as otherwise they would be duplicated over and over
  7. javascript:(() => {
  8.     let ALLOWED_MESSAGES = [""]; /*In lower case*/
  9.     let FILTER_THRESHOLD = 85; /*How much % of the message should have english letters to not be filtered*/
  10.     let func = () => {
  11.         let chat_list = window.top.document.getElementById("chatframe")
  12.             .contentDocument.querySelector("#items.style-scope.yt-live-chat-item-list-renderer");
  13.         let observer = new MutationObserver((mutationsList, observer) => {
  14.             let chat_items = chat_list.children;
  15.             for(let i = 0; i < chat_items.length; i++) {
  16.                 let msgNode = chat_items[i].querySelector("#content #message");
  17.                 if(!msgNode)
  18.                     continue;
  19.  
  20.                 let msg = "";
  21.                 for(let i = 0; i < msgNode.childNodes.length; i++) {
  22.                     let node = msgNode.childNodes[i];
  23.                     if(node.nodeType === Node.TEXT_NODE) {
  24.                         msg += node.nodeValue.trim();
  25.                     }
  26.                 }
  27.                 if(!msg || ALLOWED_MESSAGES.includes(msg.toLowerCase()))
  28.                     continue;
  29.  
  30.                 let original = msg;
  31.                 msg = msg.replace(/[\^\(\)\[\]w\s.!?,\ufe0e]/g, "");
  32.                 if(msg.length === 0)
  33.                     continue;
  34.  
  35.                 let full_len = msg.length;
  36.                 let en_only_array = msg.match(/[a-z\d]+/gi);
  37.                 let en_len = en_only_array ? en_only_array.reduce((a, b) => a + b.length, 0) : 0;
  38.                 let percentage = en_len / full_len * 100;
  39.                 if(percentage < FILTER_THRESHOLD) {
  40.                     chat_items[i].style.display = "none";
  41.                 } else {
  42.                     chat_items[i].style.display = "";
  43.                     let scroller = window.top.document.getElementById("chatframe").contentDocument.querySelector("#item-scroller");
  44.                     scroller.scrollTop = scroller.scrollHeight;
  45.                 }
  46.             }
  47.         });
  48.  
  49.         observer.observe(chat_list, { attributes: false, childList: true, subtree: false });
  50.     };
  51.  
  52.     if(window.top.document.readyState === "complete") {
  53.         let chat_frame = window.top.document.getElementById("chatframe");
  54.         let chat_doc = chat_frame.contentDocument;
  55.         let chat_list = chat_doc.querySelector("#items.style-scope.yt-live-chat-item-list-renderer");
  56.         if(chat_doc && chat_doc.readyState === "complete" && chat_list) {
  57.             console.log("All loaded already");
  58.             func();
  59.         } else {
  60.             console.log("Waiting for chat to load");
  61.             chat_frame.contentWindow.addEventListener("load", func);
  62.         }
  63.     } else {
  64.         console.log("Waiting for top to load");
  65.         window.top.addEventListener("load", func);
  66.     }
  67. })();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement