吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3570|回复: 73
收起左侧

[其他原创] [油猴脚本] 吾爱折叠 - 自动折叠水贴

[复制链接]
luliucheng 发表于 2023-8-3 20:14
本帖最后由 luliucheng 于 2023-8-3 20:17 编辑

吾爱折叠 - 自动折叠水贴

声明:本文在我的博客同步发布

论坛上的水贴非常多,有些回复只有“谢谢楼主”四个字,还占用了大量网页空间,看着就很不爽,要是有个脚本把它们折叠掉就好多了,因此有了这个脚本。

功能:

  1. 自动折叠被屏蔽的贴子:帖子都没了还看啥?不如折掉释放空间。原理:帖子被屏蔽时,作者头像会一起被屏蔽,脚本通过检查头像从而判断帖子是否被屏蔽。查看效果请去 『UnPackMe◇CrackMe◇KeyGenMe◇ReverseMe』区 。主贴被屏蔽不会被折叠。

  2. 自动折叠疑似灌水贴:四个字占用十行字的空间,把有效回帖都淹没了,折叠掉更清爽。原理:脚本收录了论坛中常见的灌水词,这些词没有实际意义。脚本会将回复中的这些词去掉,再看剩余的字数,如果不满三个字就视作水贴。楼主的帖子不会被折叠。查看效果请看本贴。(啥?没效果?可能只是你来的太早了,耐心等一会儿就有了)

  3. 手动折叠:在每层楼的顶部有“折叠此层”按钮(右下角暂无),点击即可折叠。

折叠原理:

将楼层的 display 属性设为 none,使楼层不显示,并在原有楼层下方插入展开按钮。展开按钮就是用论坛的“下一页”按钮改的。

下载地址及注意事项:

下载地址:吾爱折叠 - 自动折叠水贴

注意:此脚本与 吾爱破解论坛增强 的自动翻页功能及其它自动翻页脚本不兼容,您需要关闭这些脚本或其中的单个功能。

代码:

// ==UserScript==
// @name        吾爱折叠 - 自动折叠水贴
// @namespace   peasoft.github.io
// @match       *://www.52pojie.cn/forum.php?*mod=viewthread*
// @match       *://www.52pojie.cn/thread-*
// @grant       GM_setValue
// @grant       GM_getValue
// @grant       GM_registerMenuCommand
// @grant       GM_unregisterMenuCommand
// @grant       GM_notification
// @version     1.0
// @author      陆鎏澄
// @description 在吾爱破解论坛手动或自动折叠不想看到的帖子,如水贴和已被屏蔽的帖子。
// @run-at      document-end
// @icon        https://www.52pojie.cn/favicon.ico
// @license     CC BY-NC-SA
// ==/UserScript==

// 拦截词后续还会更新,欢迎补充!注意:本贴中的代码不会定时更新,最新代码请见安装地址!
const stopWordsStr = "\t \n ( ) [ ] { } < > , . ? ! \' \" : ; / | \\ + - _ ( ) 【 】 《 》 , 。 ? ! ‘ ’ “ ” : ; 、· … — 我 你 大佬 大神 大牛 膜 拜 什么 怎么样 怎么 感 谢 觉 可能 好像 分享 虽然 但是 有 用 没用 没什么用 不上 帮 帮忙 顶 一下 不懂 软件 是 个 这 那 哪 的 得 地 了 啦 拉 辣 过 收藏 加分 点赞 优秀 了解 支持 学习 学 到 真 很 好 啊 厉害 试 看 观 望 前排 后排 进 来 吧 呢 哈 嘛 阿 呵 哎 唉 也 太 极 绝 几 就 愣 啥 6"
const stopWords = stopWordsStr.split(' ');
let config = {};
const keys = {"noBlocked": "自动折叠被屏蔽的贴子", "noJunk": "自动折叠疑似灌水贴"};
let menuIds = [];

function readConfig(){
    for (const key in keys) {
        config[key] = GM_getValue(key);
        if (config[key] === undefined) {
            GM_setValue(key, true);
            config[key] = true;
        }
    }
}

function switchConfig(key){
    config[key] = !config[key];
    GM_setValue(key, config[key]);
    unregMenu();
    regMenu();
    GM_notification({text: "设置将在刷新页面后生效!\n(点此刷新页面)", title: "吾爱折叠", onclick: () => {location.reload()}});
}

function regMenu(){
    for (const key in keys) {
        menuIds.push(GM_registerMenuCommand((config[key]?'✅':'❌')+' '+keys[key], () => {switchConfig(key)}));
    }
}

function unregMenu(){
    menuIds.forEach(id => {GM_unregisterMenuCommand(id)});
    menuIds = [];
}

function hidePost(post, action = "显示被折叠的楼层 ↧"){
    post.style.display = "none";
    if (post.nextElementSibling) {
        post.nextElementSibling.style.display = "unset";
        return;
    }
    let showBtn = document.createElement("div");
    showBtn.className = "pgbtn";
    showBtn.style.display = "unset";
    showBtn.insertAdjacentHTML("beforeend",'<a href="javascript:;" hidefocus="true" class="bm_h" style="margin-bottom: 0; border-radius: 0">'+action+'</a>');
    showBtn.addEventListener("click", showPost);
    post.parentNode.appendChild(showBtn);
}

function showPost(){
    this.previousElementSibling.style.display = '';
    this.style.display = "none";
}

function hidePostH(){
    hidePost(this.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode);
}

function showButtons(){
    let headers = document.querySelectorAll("div.pti > div.authi");
    headers.forEach(header => {
        header.insertAdjacentHTML("beforeend",'<span class="pipe">|</span>');
        if (header.querySelector("span.none")) {
            header.lastChild.classList.add("show");
        }
        header.insertAdjacentHTML("beforeend",'<a href="javascript:;">折叠此层</a>');
        header.lastChild.addEventListener("click", hidePostH);
        if (header.querySelector("span.none")) {
            header.lastChild.classList.add("show");
        }
    });
}

function autoHide(){
    let avatars = document.querySelectorAll("div.pls > div > div.avatar");
    avatars.forEach(avatar => {
        const post = avatar.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode;
        if (!post.classList.contains("res-postfirst")) {
            const author = post.querySelector("div.pls > div.pi > div.authi > a.xw1").innerText;
            const authorHTML = '<span style="letter-spacing: normal">'+author+'</span> ';
            if (config["noBlocked"] && avatar.innerText == "头像被屏蔽") {
                hidePost(post, authorHTML+"的帖子被管理员或版主屏蔽");
            }
            else {
                if (config["noJunk"] && !post.querySelector("div.pti > div.authi > span.firstauthor")){
                    // 不屏蔽楼主
                    let text = post.querySelector("td.t_f").innerText.replaceAll(' ','');
                    stopWords.forEach(word => {
                        text = text.replaceAll(word, '');
                    });
                    if (text.length < 3) {

                        hidePost(post, authorHTML+"发布的疑似水贴被自动折叠")
                    }
                }
            }
        }
    });
}

readConfig();
regMenu();
autoHide();
showButtons();

免费评分

参与人数 22吾爱币 +25 热心值 +19 收起 理由
Victorfull + 1 + 1 我很赞同!
courierma + 1 + 1 谢谢@Thanks!
52gogogo + 1 + 1 谢谢@Thanks!
苏紫方璇 + 5 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
Wangjunda + 1 我很赞同!
hyc12 + 1 + 1 热心回复!
xiaoyi510 + 2 + 1 https://greasyfork.org/zh-CN/scripts/402793 这个去新帖也可以
TYukito + 1 我很赞同!
zyh109 + 1 + 1 用心讨论,共获提升!
b12312312 + 1 热心回复!
李小宝吖 + 1 我很赞同!
syz87 + 1 谢谢@Thanks!
tongxiaozui + 1 + 1 我很赞同!
liu35915362 + 1 + 1 谢谢@Thanks!
caojian162411 + 1 + 1 我很赞同!
lccccccc + 1 + 1 我很赞同!
LallalOVO + 1 + 1 我很赞同!
helh0275 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
woyucheng + 1 + 1 热心回复!
三滑稽甲苯 + 2 + 1 请勿灌水,提高回帖质量是每位会员应尽的义务!
wanfon + 1 + 1 热心回复!
炙焱閻羅 + 1 我很赞同!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| luliucheng 发表于 2023-8-4 22:49
1.1 版更新:主贴代码未更新,请去下载链接查看
1. 支持自定义屏蔽词。
2. 展开水贴时以红色底色显示。
3. 兼容自动翻页(可能导致页面卡顿,默认不开启,后续会进一步完善)。

这次我确实见识到了各位水贴的能力,英文、繁体、加保命都出来了!
 楼主| luliucheng 发表于 2023-8-3 21:35
helh0275 发表于 2023-8-3 20:31
可以加上字节低于多少,出现某某敏感词即可屏蔽,相当于给敏感词加一个限制

目前的判断标准是有效信息不得少于三个字,前半句话已经满足了。后半句话可能会导致误判,可能会把正常的鼓励折叠掉,毕竟一般人不会为鼓励别人写那么多字。
Keremit 发表于 2023-8-6 22:47
本帖最后由 Keremit 于 2023-8-6 22:50 编辑
三滑稽甲苯 发表于 2023-8-6 07:24
这个已经有脚本/css可以精简了

很奇怪,脚本/css精简只不过是掩耳盗铃罢了,为何不从服务器源头上进行精简呢??
那可是一举多得的事情啊:减轻了CPU负担、减轻了网络负载,提高了响应速度……
还是说没有源码、无法更改?

当然了,在服务器这个源头没有更改之前,掩耳盗铃而自嗨一下,也是很不错的!
改变自己所能改变的,楼主做得很好!
头号玩家 发表于 2023-8-3 20:23
统计一下关键词出现的次数吧,出现一次就折叠感觉误判的几率比较大
helh0275 发表于 2023-8-3 20:31
可以加上字节低于多少,出现某某敏感词即可屏蔽,相当于给敏感词加一个限制
ThemanRonin 发表于 2023-8-3 20:35
单字就屏蔽肯定不行啊。这什么啊得的都是常用的
s62036 发表于 2023-8-3 20:49
day day up
鹤浪险 发表于 2023-8-3 20:54
路过,看帖
dychjyfgfda 发表于 2023-8-3 20:55
这个关键词设置会不会把正常的帖子也一起折叠了?
cyxnzb 发表于 2023-8-3 21:01
其实严格起来可以搞那种机器人阅读楼层,然后命中灌水词直接ban
17638122331 发表于 2023-8-3 21:18
头号玩家 发表于 2023-8-3 20:23
统计一下关键词出现的次数吧,出现一次就折叠感觉误判的几率比较大

不错不错
tfl1 发表于 2023-8-3 21:19
挺不错的,节约看帖时间。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-29 21:47

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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