[ Content contribution] 一个论坛评论区屏蔽名单的油猴脚本
Tofloor
poster avatar
fallingstar-ten
deepin
2024-06-24 11:16
Author

书接上回,我们在屏蔽/黑名单功能上的争执没有得到解决,然后我当时使用了爬虫+blog作为解决方案,这样解决了在首页里面进行用户过滤,但是没有在帖子本身内及评论区做工作。

现在,我们提供了一个方便快捷的油猴脚本,当你在浏览器中访问论坛时,你可以根据DIY黑名单对某些用户的回帖进行屏蔽。初步的代码如下,目前测试相当丝滑,欢迎大佬指出错误并添加更多功能/给予建议:

  • tips :用户名单在const blockedUserIds = ['user123', 'user456'] 字段,需要输入用户昵称进行。
// ==UserScript==
// @name         ADblocker4DeepinBBS
// @namespace    http://tampermonkey.net/
// @version      2024-06-24
// @description  block AD-like Users in DeepinBBS
// @author       fallingstar10
// @match        https://bbs.deepin.org/post/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=deepin.org
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // 要屏蔽的用户ID列表
    const blockedUserIds = ['user123', 'user456']; // 根据需要添加用户ID

    // 定位到每个回帖的容器
    const postContainerSelector = 'div.post_pc';

    // 定位到用户ID的span
    const userNameSelector = 'span.post_name';

    // 检查并隐藏帖子内容
    function hidePosts() {
        const postContainers = document.querySelectorAll(postContainerSelector);
        postContainers.forEach(postContainer => {
            // 找到用户ID的span元素
            const userNameSpan = postContainer.querySelector(userNameSelector);
            if (userNameSpan) {
                const userId = userNameSpan.textContent.trim();
                if (blockedUserIds.includes(userId)) {
                    // 隐藏整个回帖容器
                    postContainer.style.display = 'none';
                }
            }
        });
    }

    // 监听DOM变化
    const observer = new MutationObserver((mutations) => {
        mutations.forEach((mutation) => {
            if (mutation.type === 'childList') {
                hidePosts();
            }
        });
    });

    // 配置observer,使其知道需要观察哪个节点,以及需要观察哪些变化
    observer.observe(document.body, {
        childList: true,
        subtree: true
    });

    // 页面加载完成后执行一次
    document.addEventListener('DOMContentLoaded', hidePosts);
})();

--------------------更新

本代码将在dpbbs-rss仓库存储,主要每日爬取黑名单内ID及对应的昵称,然后自动生成js文件更新到GreasyFork。

GitHub地址:https://github.com/rainoffallingstar/dpbbs-rss/blob/master/R/ADblocker4DeepinBBSv1.js

Greasyfork地址:https://greasyfork.org/en/scripts/498942-adblocker4deepinbbsv1

------------------更新

非常简单的加入了首页信息流的屏蔽功能(按发帖人)


可能换一个地方玩linux会更幸福吧。

什么时候有空了再回来看看吧

Reply Favorite View the author
All Replies
2 / 2
To page
deepin-superuser
deepin
2024-07-02 10:03
#21

https://bbs.deepin.org/post/261272

之前写过一个类似的脚本 原理是拦截 http请求返回的内容 直接删除

Reply View the author
fallingstar-ten
deepin
2024-07-02 12:27
#22
deepin-superuser

https://bbs.deepin.org/post/261272

之前写过一个类似的脚本 原理是拦截 http请求返回的内容 直接删除

看起来也很不错kissing_heart

Reply View the author
2 / 2
To page