Advertisement
Guest User

4chan-id-blocker.user.js

a guest
Dec 21st, 2020
428
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // ==UserScript==
  2. // @name        4chan id blocker - 4chan.org
  3. // @namespace   Violentmonkey Scripts
  4. // @match       https://boards.4chan.org/*
  5. // @grant       none
  6. // @version     1.0
  7. // @author      -
  8. // @description -
  9. // ==/UserScript==
  10.  
  11. var bannedIds = {};
  12.  
  13. function hideElement(node) {
  14.   node.style.display = "none";
  15. }
  16.  
  17. function removePostFromIdNode(node) {
  18.   var postNode = node.parentNode.parentNode.parentNode;
  19.   var prevNode = postNode.previousSibling;
  20.  
  21.   hideElement(postNode);
  22.   hideElement(prevNode);
  23. }
  24.  
  25. function makeHideHandler(posterId) {
  26.   return function() {
  27.     var elts = document.getElementsByTagName("span");
  28.    
  29.     for (var i = 0; i < elts.length; i++) {
  30.       var elt = elts[i];
  31.    
  32.       if (elt.getAttribute("class") != "posteruid id_" + posterId)
  33.         continue;
  34.    
  35.       removePostFromIdNode(elt);
  36.     }
  37.    
  38.     bannedIds[posterId] = 1;
  39.   };
  40. }
  41.  
  42.  
  43. function hideBannedIds() {
  44.   var elts = document.getElementsByTagName("span");
  45.  
  46.   for (var i = 0; i < elts.length; i++) {
  47.     var elt = elts[i];
  48.    
  49.     var cls = elt.getAttribute("class");
  50.    
  51.     if (!cls) continue;
  52.    
  53.     if (cls.substring(0, 13) != "posteruid id_") continue;
  54.    
  55.     var posterId = cls.substring(13);
  56.    
  57.     if (bannedIds[posterId] == 1) {
  58.       removePostFromIdNode(elt);
  59.     }
  60.   }
  61. }
  62.  
  63.  
  64. function addHideButtons() {
  65.   var elts = document.getElementsByTagName("span");
  66.  
  67.   for (var i = 0; i < elts.length; i++) {
  68.     var elt = elts[i];
  69.  
  70.     if (elt.getAttribute("class") != "hand" ||
  71.         elt.getAttribute("title") != "Highlight posts by this ID" ||
  72.         elt.getAttribute("data-has-block-button") == "true")
  73.       continue;
  74.  
  75.     var xNode = document.createElement("span");
  76.     xNode.textContent = "[x]";
  77.  
  78.     var handler = makeHideHandler(elt.textContent);
  79.  
  80.     xNode.addEventListener("click", handler);
  81.    
  82.     elt.parentNode.appendChild(xNode);
  83.    
  84.     elt.setAttribute("data-has-block-button", "true");
  85.   }
  86. }
  87.  
  88. var pageLoadDelay = 1000;
  89.  
  90. function onUpdate() {
  91.   hideBannedIds();
  92.   addHideButtons();
  93. }
  94.  
  95. function updateHandler() {
  96.   setTimeout(onUpdate, pageLoadDelay);
  97. }
  98.  
  99. function addUpdateButtonHook() {
  100.   var elts = document.getElementsByTagName("a");
  101.  
  102.   for (var i = 0; i < elts.length; i++) {
  103.     var elt = elts[i];
  104.        
  105.     if (elt.textContent != "Update") continue;
  106.    
  107.     elt.addEventListener("click", updateHandler);
  108.   }
  109. }
  110.  
  111. function pageLoop(timeout) {
  112.   onUpdate();
  113.   setTimeout(pageLoop, timeout);
  114. }
  115.  
  116. addHideButtons();
  117. setTimeout(addUpdateButtonHook, pageLoadDelay);
  118.  
  119. pageLoop(10000);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement