导 航
查看: 2059|回复: 24

本版被某些人弄的乌烟瘴气,没人管管吗?

[复制链接]
发表于 2025-5-19 15:28:58 | 显示全部楼层 |阅读模式
好好的探讨高楼和济南发展不好吗?弄些打鸡血的言论,反智言论和弱智言论。
回复

使用道具 举报

发表于 2025-5-21 14:20:07 | 显示全部楼层
都没人来了,又low又反智,本来论坛就日薄西山了,这下彻底凉了
回复

使用道具 举报

发表于 2025-5-21 14:26:38 | 显示全部楼层
之前的管理人员可能需要运营自己的公众号,现在谁在管理也不知道,反正觉得济南版管的越来越烂,既有反智言论,也有降智观点
回复

使用道具 举报

发表于 2025-5-21 14:27:32 | 显示全部楼层
几个版主目前貌似也是忙于工作,很少来论坛,很怀念以前K版他们还在论坛活跃的时期。
回复

使用道具 举报

发表于 2025-5-21 14:36:50 | 显示全部楼层
帖子一出现那几个ID就变味了,要么就是疯狂刷屏辱骂、贬低其他区域,要么就是刷屏发些主题无关的图文,都是些什么人啊,真服气了。
回复

使用道具 举报

发表于 2025-5-21 15:46:24 | 显示全部楼层
版主都忙着挣钱去了,坛友气的骂娘也没办法,毕竟人家脸皮厚。
回复

使用道具 举报

发表于 2025-5-21 15:49:29 | 显示全部楼层
正常,捧或者踩,都是自己的一种思想。
回复

使用道具 举报

发表于 2025-5-21 19:44:17 | 显示全部楼层
那几个狂放图片刷屏的人真恶心,他们只要进了哪个帖子,哪个帖子就废了
回复

使用道具 举报

发表于 2025-5-21 19:48:05 | 显示全部楼层
本帖最后由 glowkey 于 2025-5-21 20:46 编辑

我改写了一个油猴脚本 ,可以自己安装,来屏蔽指定 id 的评论。。
把其中用户名 1 和用户名 2 换成希望屏蔽的用户 id




  1. // ==UserScript==
  2. // @name         Gaoloumi Forum - Block User Content (Optimized)
  3. // @namespace    http://tampermonkey.net/
  4. // @version      2025-05-21.2
  5. // @description  Hides threads, posts, and quotes from specified users on Gaoloumi forum.
  6. // @author       You (Optimized by Gemini)
  7. // @match        https://gaoloumi.cc/forum.php?mod=viewthread*
  8. // @icon         https://www.google.com/s2/favicons?sz=64&domain=gaoloumi.cc
  9. // @grant        none
  10. // ==/UserScript==

  11. (function() {
  12.     'use strict';

  13.     // --- Configuration ---
  14.     // Add usernames to this list. For example: ["user1", "user2", "anotherUser"]
  15.     const blockedUsernames = ["用户名 1", "用户名2"];
  16.     // Set to false to hide content completely without any "blocked" message
  17.     const showBlockedMessage = true;

  18.     // --- Helper Function to Get Elements by XPath ---
  19.     /**
  20.      * Evaluates an XPath expression and returns an array of matching DOM elements.
  21.      * @param {string} xpath - The XPath expression to evaluate.
  22.      * @param {Node} parent - The context node for the XPath evaluation (defaults to document).
  23.      * @returns {Array<Node>} An array of matching elements.
  24.      */
  25.     function getElementsByXPath(xpath, parent = document) {
  26.         const results = [];
  27.         try {
  28.             const query = document.evaluate(xpath, parent, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
  29.             for (let i = 0; i < query.snapshotLength; i++) {
  30.                 results.push(query.snapshotItem(i));
  31.             }
  32.         } catch (e) {
  33.             console.error("Error evaluating XPath:", xpath, e);
  34.         }
  35.         return results;
  36.     }

  37.     // --- Main Blocking Logic ---
  38.     for (const username of blockedUsernames) {
  39.         // Escape username for use in XPath, particularly if it contains quotes.
  40.         const escapedUsername = username.replace(/"/g, '\"').replace(/'/g, "\\'");

  41.         // 1. Block Threads in Thread Listings
  42.         //    Targets the <tbody> element of a thread row authored by the blocked user.
  43.         //    Original XPath for 'thread' was: '//table/tbody[tr[1]/td[2]//cite/a[text()="' + username + '"]]'
  44.         const threadRows = getElementsByXPath(
  45.             `//tbody[starts-with(@id, "normalthread_") or starts-with(@id, "stickthread_")]
  46.                 [.//td[contains(@class, "by")]//cite//a[text()="${escapedUsername}"]] |
  47.              //table/tbody[tr[1]/td[2]//cite/a[text()="${escapedUsername}"]]` // Original XPath as a fallback
  48.         );
  49.         for (const row of threadRows) {
  50.             if (showBlockedMessage) {
  51.                 // Replace the content of the thread row with a "blocked" message.
  52.                 row.innerHTML = `<tr>
  53.                                     <td class="icn"><img src="static/image/common/folder_common.gif" alt="Blocked"></td>
  54.                                     <th colspan="2" class="common new" style="text-align:left; padding-left:10px;">
  55.                                         <b>已屏蔽的主题 (作者: <span style="color:grey;">${username}</span>)</b>
  56.                                     </th>
  57.                                     <td class="by"></td><td class="num"></td><td class="by"></td>
  58.                                  </tr>`;
  59.             } else {
  60.                 // Hide the thread row completely.
  61.                 row.style.display = 'none';
  62.             }
  63.         }

  64.         // 2. Block Posts in Thread View
  65.         //    Targets the main container (div or table) of a post by the blocked user.
  66.         const postContainers = getElementsByXPath(`//div[starts-with(@id, "post_")] | //table[starts-with(@id, "pid_")]`);
  67.         for (const postContainer of postContainers) {
  68.             // Check for author link within this post container.
  69.             // Common author link selectors for Discuz forums: .authi a.xw1, .pi a[href*="uid="], td.pls div.authi a
  70.             const authorLink = postContainer.querySelector(`.authi a.xw1, .pi a[href*="uid="], td.pls div.authi a`);
  71.             if (authorLink && authorLink.textContent.trim() === username) {
  72.                 if (showBlockedMessage) {
  73.                     // Create and insert a "blocked post" message before hiding the actual post.
  74.                     const messageDiv = document.createElement('div');
  75.                     messageDiv.className = 'blocked-post-notice';
  76.                     messageDiv.style.cssText = `
  77.                         padding: 15px;
  78.                         border: 1px dashed #ccc;
  79.                         background-color: #f9f9f9;
  80.                         text-align: center;
  81.                         margin: 10px 0;
  82.                         color: #555;
  83.                     `;
  84.                     messageDiv.innerHTML = `已屏蔽来自 <strong style="color:grey;">${username}</strong> 的帖子内容`;
  85.                     postContainer.parentNode.insertBefore(messageDiv, postContainer);
  86.                     postContainer.style.display = 'none';
  87.                 } else {
  88.                     // Hide the post container completely.
  89.                     postContainer.style.display = 'none';
  90.                 }
  91.             }
  92.         }

  93.         // 3. Block Quotes by User
  94.         //    Targets blockquote elements quoting the blocked user.
  95.         //    Original XPath for 'quote' was: '//blockquote[font/a/font[contains(text(),"' + username + '")]]'
  96.         //    Refined XPath looks for common Discuz quote structures.
  97.         const quoteBlocks = getElementsByXPath(
  98.             `//div[contains(@class, "quote")]/blockquote[
  99.                 .//font/strong[text()="${escapedUsername}"] or
  100.                 .//a[text()="${escapedUsername}" and (contains(@href, "space-uid-") or contains(@href, "uid="))] or
  101.                 starts-with(normalize-space(.), "引用: ${escapedUsername}") or
  102.                 contains(normalize-space(.), "引用 ${escapedUsername} ")
  103.             ] | //blockquote[font/a/font[contains(text(),"${escapedUsername}")]]` // Original XPath as a fallback
  104.         );

  105.         for (const blockquote of quoteBlocks) {
  106.             // Try to get the outer .quote div for Discuz, otherwise use the blockquote itself.
  107.             const parentQuoteDiv = blockquote.closest('.quote');
  108.             const elementToModify = parentQuoteDiv || blockquote;

  109.             if (showBlockedMessage) {
  110.                 // Replace the content of the quote element with a "blocked quote" message.
  111.                 const message = `<div class="blocked-quote-message" style="padding:10px; border:1px dashed #ccc; background-color:#f9f9f9; color:#555;">已屏蔽对 <strong style="color:grey;">${username}</strong> 的引用内容</div>`;
  112.                 elementToModify.innerHTML = message;
  113.             } else {
  114.                 // Hide the quote element completely.
  115.                 elementToModify.style.display = 'none';
  116.             }
  117.         }

  118.         // 4. Block "Title" sections (as per original script's intent)
  119.         //    This was for <tbody> elements where a link in a <th> contained the username.
  120.         //    Original XPath: '//table/tbody[tr[1]/th[1]//a[contains(text(),"' + username + '")]]'
  121.         //    This is assumed to be for specific sections, not general thread titles (covered in item 1).
  122.         const titleSections = getElementsByXPath(
  123.             `//table/tbody[tr[1]/th[1]//a[contains(text(),"${escapedUsername}")]]`
  124.         );
  125.         for (const section of titleSections) {
  126.             if (showBlockedMessage) {
  127.                 // Determine colspan for the message row based on existing table structure.
  128.                 let colspan = 5; // Default colspan
  129.                 const firstTr = section.querySelector('tr');
  130.                 if (firstTr && firstTr.cells) {
  131.                     colspan = firstTr.cells.length > 0 ? firstTr.cells.length : colspan;
  132.                 }
  133.                 // Replace the entire tbody content with a message row.
  134.                 section.innerHTML = `<tr>
  135.                                         <td colspan="${colspan}" style="text-align:center; padding:10px; background-color:#f9f9f9; color:grey;">
  136.                                             与 <strong style="color:#777;">${username}</strong> 相关的内容版块已被隐藏
  137.                                         </td>
  138.                                      </tr>`;
  139.             } else {
  140.                 // Hide the section completely.
  141.                 section.style.display = 'none';
  142.             }
  143.         }
  144.     }

  145.     // Optional: Add some global styles for blocked messages if not relying solely on inline styles.
  146.     // const styleSheet = document.createElement('style');
  147.     // styleSheet.textContent = `
  148.     //     .blocked-post-notice strong, .blocked-quote-message strong {
  149.     //         font-weight: normal; /* Example style */
  150.     //     }
  151.     // `;
  152.     // document.head.appendChild(styleSheet);

  153. })();
复制代码


插件可以用 https://www.tampermonkey.net/ind ... hrome&locale=zh
回复

使用道具 举报

发表于 2025-5-22 08:21:27 | 显示全部楼层
房产中介 真是害人无孔不入啊  ,
回复

使用道具 举报

发表于 2025-5-22 08:22:13 | 显示全部楼层
glowkey 发表于 2025-5-21 19:48
我改写了一个油猴脚本 ,可以自己安装,来屏蔽指定 id 的评论。。
把其中用户名 1 和用户名 2 换成希望屏 ...

赞一个
回复

使用道具 举报

 楼主| 发表于 2025-5-22 09:34:53 | 显示全部楼层
glowkey 发表于 2025-5-21 19:48
我改写了一个油猴脚本 ,可以自己安装,来屏蔽指定 id 的评论。。
把其中用户名 1 和用户名 2 换成希望屏 ...

赞赞赞赞赞赞赞赞赞赞赞赞赞
回复

使用道具 举报

发表于 2025-5-22 11:00:28 | 显示全部楼层
那一位已经被永久禁言了,不过很快马甲就会重出江湖。

见小黑屋: https://gaoloumi.cc/forum.php?mod=misc&action=showdarkroom
回复

使用道具 举报

发表于 2025-5-23 09:51:24 | 显示全部楼层
高楼迷应该推出手机APP,要不早晚没人来了
回复

使用道具 举报

发表于 2025-5-23 10:37:25 | 显示全部楼层
大黄蜂带我飞 发表于 2025-5-22 11:00
那一位已经被永久禁言了,不过很快马甲就会重出江湖。

见小黑屋: https://gaoloumi.cc/forum.php?mod=m ...

他还有好几个马甲,需要把gaoloumiccidi、闪电sdguanlan  这几个马甲也全部永封
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|高楼迷

GMT+8, 2025-7-19 15:45 , Processed in 0.045250 second(s), 3 queries , Redis On.

Powered by Discuz! X3.4 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表