Greasy Fork is available in English.

✱ Discuz/phpwind论坛 基于ID/标题关键词 屏蔽帖子

Discuz/phpwind论坛 基于ID/标题关键词 屏蔽帖子

  1. // ==UserScript==
  2. // @name ✱ Discuz/phpwind论坛 基于ID/标题关键词 屏蔽帖子
  3. // @namespace lisanye
  4. // @description Discuz/phpwind论坛 基于ID/标题关键词 屏蔽帖子
  5. // @include */viewthread.php*
  6. // @include */thread*
  7. // @include */redirect.php*
  8. // @include */forum-redirect-tid*
  9. // @include */forum-viewthread-tid*
  10. // @include */forum.php?mod=viewthread*
  11. // @include */forum.php?mod=forumdisplay*
  12. // @include */forum-*.html
  13. // @include https://www.firefox.net.cn/*
  14. // @version 20180213
  15. // @grant GM_addStyle
  16. // ==/UserScript==
  17.  
  18. // 该脚本最好配合Discuz论坛自带的“黑名单”“提醒筛选”和“消息屏蔽”,一起使用。
  19. // 这样黑名单中的人,你既看不到他们的帖子,他们回复你时你也收不到通知(提醒筛选),他们给你发私信你也收不到(消息屏蔽)。完全彻底的眼不见为净。
  20. // “黑名单”通常在这个地址:/home.php?mod=space&do=friend
  21. // “提醒筛选”通常在这个地址:/home.php?mod=spacecp&ac=privacy&op=filter “消息屏蔽”在这个地址:/home.php?mod=space&do=pm&subop=setting
  22. // 注:有些Discuz版本,系统消息和成员互动,即使选了针对单个人,也会变成全局,这种情况可以在F12的console中改请求字段,来实现“定向屏蔽”
  23.  
  24. // 用户名(模仿下面的格式,只添加要屏蔽其帖子的用户名,两边用英文双引号括住,用英文逗号分隔)
  25. var dogs = new Array("wxcwhk", "goldsun0", "hh2");
  26. // 主题帖标题
  27. var dogtitles = new Array("签到", "水果乐园", "请进");
  28. // 分类
  29. var dogsubgroup = new Array("闲情帖", "菠菜帖");
  30.  
  31. blockAll();
  32.  
  33. var mo = new MutationObserver(function(allmutations) {
  34. blockAll();
  35. });
  36. mo.observe(document.querySelector('body'), {'childList': true,'characterData':false,'subtree': true});
  37.  
  38. function blockAll() {
  39. //discuz论坛
  40.  
  41. // 主题列表页 针对ID
  42. for (x in dogs) {
  43. dog = document.evaluate('//table/tbody[tr[1]//cite/a[text()="' + dogs[x] + '"]]', document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
  44. if (dog.snapshotLength) {
  45. for (var i = 0, c = ""; i < dog.snapshotLength; i++) {
  46. dog.snapshotItem(i).innerHTML = "";
  47. }
  48. }
  49. }
  50.  
  51. // 单个主题帖内 针对ID 回帖
  52. for (x in dogs) {
  53. dog = document.evaluate('//*[starts-with(@id, "post")]/table/tbody[tr[1]/td[1]//a[text()="' + dogs[x] + '"]]', document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
  54. if (dog.snapshotLength) {
  55. for (var i = 0, c = ""; i < dog.snapshotLength; i++) {
  56. dog.snapshotItem(i).innerHTML = "";
  57. }
  58. }
  59. }
  60.  
  61. // 主题列表页 针对标题
  62. for (x in dogtitles) {
  63. dog = document.evaluate('//table/tbody[tr[1]/th[1]/a[contains(text(),"' + dogtitles[x] + '")]]', document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
  64. if (dog.snapshotLength) {
  65. for (var i = 0, c = ""; i < dog.snapshotLength; i++) {
  66. dog.snapshotItem(i).innerHTML = "";
  67. }
  68. }
  69. }
  70.  
  71. // 主题列表页 针对子分类
  72. for (x in dogsubgroup) {
  73. dog = document.evaluate('//table/tbody[tr[1]/th[1]/em/a[contains(text(),"' + dogsubgroup[x] + '")]]', document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
  74. if (dog.snapshotLength) {
  75. for (var i = 0, c = ""; i < dog.snapshotLength; i++) {
  76. dog.snapshotItem(i).innerHTML = "";
  77. }
  78. }
  79. }
  80.  
  81. // 不明
  82. for (x in dogs) {
  83. dog = document.evaluate('//table/tbody[tr[1]/td[1]/div[1]//font[text()="' + dogs[x] + '"]]', document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
  84. if (dog.snapshotLength) {
  85. for (var i = 0, c = ""; i < dog.snapshotLength; i++) {
  86. c = String(dog.snapshotItem(i).firstChild.childNodes[3].textContent.match(/\d+#/)).replace(/#/, "楼");
  87. dog.snapshotItem(i).innerHTML = "<b><center>c被屏蔽帖子 " + c + " <font color=red>" + dogs[x] + "</font></center></b>";
  88. //dog.snapshotItem(i).innerHTML = "";
  89. }
  90. }
  91. }
  92.  
  93. //phpwind
  94.  
  95. // 主题列表页 针对ID
  96. for (x in dogs) {
  97. dog = document.evaluate('//div[@class="thread_posts_list"]//tr//p[@class="info"][contains(., "楼主:' + dogs[x] + '")]/../..', document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
  98. if (dog.snapshotLength) {
  99. for (var i = 0, c = ""; i < dog.snapshotLength; i++) {
  100. dog.snapshotItem(i).innerHTML = "";
  101. }
  102. }
  103. }
  104.  
  105. // 手机列表页 针对ID
  106. for (x in dogs) {
  107. dog = document.evaluate('//td[@class="subject"]/p[@class="info"][contains(., "楼主:' + dogs[x] + '")]/../..', document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
  108. if (dog.snapshotLength) {
  109. for (var i = 0, c = ""; i < dog.snapshotLength; i++) {
  110. dog.snapshotItem(i).innerHTML = "";
  111. }
  112. }
  113. }
  114. }
  115.  
  116. GM_addStyle(`#hiddenpoststip {
  117. display: none !important;
  118. }`);