Substack Blocker

Hide spammers/trolls

当前为 2021-07-23 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name Substack Blocker
  3. // @namespace http://tampermonkey.net/
  4. // @version 1.0
  5. // @description Hide spammers/trolls
  6. // @author Kronzky
  7. // @match *://*.substack.com/*
  8. // @grant none
  9. // @run-at document-idle
  10. // ==/UserScript==
  11.  
  12.  
  13. let blockedNames = ["ForHimItWas", "e.pierce", "Boris Petrov", "Iconoclast"]; // Names to block (case-insensitive)
  14. let minLikes = 2; // Show post anyway, if likes are above this minimum
  15.  
  16.  
  17. let commentCount = 0
  18. function hideStuff() {
  19. var comments = document.getElementsByTagName('table');
  20. if (comments.length==commentCount) {return};
  21. commentCount = comments.length;
  22. for (var comment of comments) {
  23. if (((comment.className.indexOf("comment-content"))!=-1) && ((comment.className.indexOf("CHECKED"))==-1)) {
  24. comment.className += " CHECKED";
  25. let commenterMeta = comment.getElementsByClassName('commenter-name')[0];
  26. if (commenterMeta.getElementsByTagName('a').length!=0) {
  27. let commenterName = commenterMeta.getElementsByTagName('a')[0].innerHTML;
  28. for (var blocked of blockedNames) {
  29. if (blocked.toUpperCase() === commenterName.toUpperCase()) {
  30. let commentBody = comment.getElementsByClassName('comment-body')[0];
  31. let commentActions = comment.getElementsByClassName('comment-actions')[0];
  32. if (commentActions.innerHTML.indexOf("Unhide")==-1) {
  33. let likelink = commentActions.getElementsByTagName('a')[0].innerHTML;
  34. let likes = Number(likelink.substr(likelink.lastIndexOf('>')+2));
  35. if (likes<=minLikes) {
  36. commentBody.style = "display:none";
  37. commentActions.innerHTML += "<span><a href='#' onclick='unhide(this);return false'>Unhide</a></span>";
  38. };
  39. };
  40. break;
  41. };
  42. };
  43. };
  44. };
  45. };
  46. };
  47.  
  48. window.unhide = function (elem) {
  49. elem.style = "display:none";
  50. elem.parentElement.parentElement.parentElement.getElementsByClassName('comment-body')[0].style = "display:block";
  51. };
  52.  
  53. (function() {
  54. 'use strict';
  55. hideStuff();
  56. window.addEventListener("scroll", hideStuff, false);
  57. })();