煎蛋屏蔽用户

屏蔽特定用户

  1. // ==UserScript==
  2. // @name Jandan user blocker
  3. // @namespace jandan.net
  4. // @name:zh-CN 煎蛋屏蔽用户
  5. // @version 0.1
  6. // @description block Jandan users
  7. // @description:zh-cn 屏蔽特定用户
  8. // @author Suzuhana
  9. // @match http://jandan.net/pic
  10. // @match http://jandan.net/pic/*
  11. // @grant none
  12. // ==/UserScript==
  13.  
  14. (function () {
  15. 'use strict';
  16.  
  17. const localStorage = window.localStorage;
  18. let blockList = localStorage.getItem('blockList')
  19. ? JSON.parse(localStorage.getItem('blockList'))
  20. : [];
  21. const commentList = document.querySelector('ol.commentlist');
  22. const posts = document.querySelectorAll("ol.commentlist li[id^='comment']");
  23. const postsArr = Array.from(posts);
  24. const filteredPosts = postsArr.filter((ele) => {
  25. let shouldBeFiltered = false;
  26.  
  27. blockList
  28. .map((ele) => ele.userId)
  29. .forEach((blockedId) => {
  30. if (
  31. ele
  32. .querySelector('div.author > strong')
  33. .getAttribute('title')
  34. .includes(blockedId)
  35. ) {
  36. shouldBeFiltered = true;
  37. }
  38. });
  39.  
  40. return !shouldBeFiltered;
  41. });
  42.  
  43. //empty nodeList and repopulate with filtered comments
  44. commentList.innerHTML = '';
  45.  
  46. filteredPosts.forEach((ele) => {
  47. //Grab user name and user id;
  48. const userNode = ele.querySelector('div.author > strong');
  49.  
  50. const userName = userNode.innerText;
  51. const userId = userNode.getAttribute('title').split(':')[1];
  52.  
  53. //Create a Button for blocking user
  54. const blockButton = document.createElement('BUTTON');
  55. blockButton.innerHTML = 'Block this User';
  56. blockButton.addEventListener('click', () => {
  57. blockList.push({
  58. userId,
  59. userName,
  60. });
  61. localStorage.setItem('blockList', JSON.stringify(blockList));
  62. //TODO: could be replaced with better option
  63. location.reload();
  64. });
  65.  
  66. ele.querySelector('div.author').appendChild(blockButton);
  67. commentList.appendChild(ele);
  68. });
  69.  
  70. //reset blocklist
  71. const resetButton = document.createElement('BUTTON');
  72. resetButton.innerHTML = 'Release the trolls';
  73. resetButton.addEventListener('click', () => {
  74. blockList = [];
  75. localStorage.removeItem('blockList');
  76. //TODO: could be replaced with better option
  77. location.reload();
  78. });
  79. resetButton.style = 'float: right';
  80.  
  81. document.querySelector('div.cp-pagenavi').appendChild(resetButton);
  82. })();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址