nodeseek屏蔽特定分类的帖子

屏蔽nodeseek论坛特定分类的帖子

  1. // ==UserScript==
  2. // @name nodeseek屏蔽特定分类的帖子
  3. // @namespace http://tampermonkey.net/
  4. // @version 1.3
  5. // @description 屏蔽nodeseek论坛特定分类的帖子
  6. // @author 我和GPT
  7. // @match https://www.nodeseek.com
  8. // @match https://www.nodeseek.com/page-*
  9. // @grant GM_setValue
  10. // @grant GM_getValue
  11. // @license MIT
  12. // ==/UserScript==
  13.  
  14. (function() {
  15. 'use strict';
  16.  
  17. // 检查GM_setValue和GM_getValue是否可用
  18. function isGMAvailable() {
  19. return (typeof GM_setValue !== 'undefined') && (typeof GM_getValue !== 'undefined');
  20. }
  21.  
  22. // 存储数据
  23. function saveData(key, value) {
  24. if (isGMAvailable()) {
  25. try {
  26. GM_setValue(key, value);
  27. } catch (error) {
  28. console.error("保存数据到GM失败", error);
  29. // 回退到localStorage
  30. localStorage.setItem(key, value);
  31. }
  32. } else {
  33. localStorage.setItem(key, value);
  34. }
  35. }
  36.  
  37. // 检索数据
  38. function loadData(key) {
  39. if (isGMAvailable()) {
  40. try {
  41. return GM_getValue(key);
  42. } catch (error) {
  43. console.error("从GM加载数据失败", error);
  44. // 回退到localStorage
  45. return localStorage.getItem(key);
  46. }
  47. } else {
  48. return localStorage.getItem(key);
  49. }
  50. }
  51.  
  52. // 添加屏蔽设置按钮
  53. var headerDiv = document.querySelector("#nsk-head");
  54. var btn = document.createElement("button");
  55. btn.innerHTML = "屏蔽设置";
  56. btn.classList.add("btn");
  57. btn.style = "margin-left: 10px;";
  58. headerDiv.appendChild(btn);
  59.  
  60. // 创建设置面板
  61. var panel = document.createElement("div");
  62. panel.innerHTML = `
  63. <div id="ns-block-categories-setting">
  64. <h2>屏蔽分类设置</h2>
  65. <p>屏蔽分类列表(分类名称用英文逗号分隔)</p>
  66. <textarea id='ns-block-categories' style='width: 98%; height: 20vh;'></textarea>
  67. <br/>
  68. <div style="display: flex;justify-content: end;margin:10px">
  69. <button id='ns-block-categories-btn-save' class='btn' style="margin:0 10px">保存</button>
  70. <button id='ns-block-categories-btn-cancel' class='btn'>取消</button>
  71. </div>
  72. </div>
  73. `;
  74. panel.style = `
  75. position: fixed;
  76. top: 10vh;
  77. left: 10vw;
  78. z-index: 9999;
  79. display: none;
  80. width: 80vw;
  81. background-color: rgba(255, 255, 255, 0.8);
  82. border-radius: 10px;
  83. backdrop-filter: blur(10px);
  84. padding:20px;
  85. `;
  86. document.body.appendChild(panel);
  87.  
  88. // 显示和隐藏设置面板
  89. btn.onclick = function() {
  90. panel.style.display = "block";
  91. document.getElementById("ns-block-categories").value = loadData("ns-block-categories") || "";
  92. };
  93. document.getElementById("ns-block-categories-btn-save").onclick = function() {
  94. saveData("ns-block-categories", document.getElementById("ns-block-categories").value);
  95. panel.style.display = "none";
  96. location.reload(); // 保存后刷新页面以应用屏蔽设置
  97. };
  98. document.getElementById("ns-block-categories-btn-cancel").onclick = function() {
  99. panel.style.display = "none";
  100. };
  101.  
  102. // 屏蔽特定分类的帖子
  103. var blockedCategories = loadData("ns-block-categories");
  104. if (blockedCategories) {
  105. blockedCategories = blockedCategories.split(",");
  106. var posts = document.querySelectorAll("#nsk-body-left > ul > li");
  107. posts.forEach(function(post) {
  108. var category = post.querySelector("div > div.post-info > a.info-item.post-category");
  109. if (category && blockedCategories.includes(category.textContent.trim())) {
  110. post.style.display = "none";
  111. }
  112. });
  113. }
  114. })();

QingJ © 2025

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