Greasy Fork

Greasy Fork is available in English.

Hostloc自动屏蔽粉蛆与智障

自动屏蔽粉蛆与智障

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         Hostloc自动屏蔽粉蛆与智障
// @namespace    https://hostloc.com/
// @version      0.8968
// @description  自动屏蔽粉蛆与智障
// @author       kiwi
// @match        https://hostloc.com/forum-*
// @match        https://hostloc.com/thread-*
// @icon         data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @grant        none
// @license MIT
// ==/UserScript==
 
(function() {
    'use strict';
    const blockedUser=['skiy','腾讯云6折购','Gludog','小号专用马甲','一丢丢','我来给您上坟咯','sky123','ZhènJīngBù','小鸡真爱无疑','听风的歌','Qimiao','吹风秀跳刀','隆姑娘','amo','gyhl','卟想起床','NavieNetwork','表妹','栉风沐雨','我能做两小时','柳夜熙','lenchanlhc','王先生O_O','Corei7','bhgchinaboy','三七开','天有点热','长夜漫漫','ecs'];
    const blockedKeyword=['关键字屏蔽1','关键字屏蔽2'];
    const blockedSignatureUser=['Rosh','最初的梦想'];
    const contentStorage=[];//用于临时存储被屏蔽的帖子和签名内容
 
    // 帖子列表页
    if(location.href.includes('forum')){
        document.querySelectorAll('#threadlisttableid tbody').forEach((item,index)=>{
            if(item.id.includes('normalthread')){
                const title=item.querySelector('a.s.xst').innerText;
                for (let i = blockedKeyword.length - 1; i >= 0; i--) {
                    if(title.includes(blockedKeyword[i])){
                        // item.querySelector('a.s.xst').innerText='已屏蔽';
                        item.style.display='none';
                        break;
                    }
                }
 
 
                const nameA=item.querySelectorAll('td.by')[0].querySelector('a');
                if(nameA){
                    const userName=nameA.innerText.trim();
                    if(blockedUser.includes(userName)){
                        // item.querySelector('a.s.xst').innerText='已屏蔽';
                        item.style.display='none';
                    }
                }
            }
        })
    }
 
    // 帖子内容页
    if(location.href.includes('thread')){
        //监听点击事件,恢复被屏蔽的签名和帖子
        document.querySelector('#postlist').addEventListener('click',(e)=>{
            const item=e.target;
            if(item.className.includes('hidden-by-script')){
                item.innerHTML=contentStorage[item.dataset.restoreKey]
            }
        })
        //遍历发帖和回复
        document.querySelectorAll('#postlist>div').forEach((item)=>{
            if(!item.id.includes('post_')){
                return false;
            }
            const userLink=item.querySelector('a.xw1');
            if(userLink){
                const userName=userLink.innerText.trim();
                if(userName && blockedUser.includes(userName)){
                    item.style.display='none';
                }else if(blockedSignatureUser.includes(userName)){
                    const signature=item.querySelector('div.sign');
                    const contentText=signature.innerText;
                    const contentHTML=signature.innerHTML;
                    const storageKey=item.id+'signature';
                    contentStorage[storageKey]=contentHTML;
                    signature.innerHTML=`<span style="font-style:italic;font-size:10px;color:gray" class="hidden-by-script" data-restore-key="${storageKey}" title="${contentText}">已屏蔽,鼠标移到此处查看内容,点击还原内容</span>`;
                }
            }
 
            const tds=item.querySelectorAll('td');
            tds.forEach((td)=>{
                if(td.id.includes('postmessage_')){
                    const content=td.innerText;
                    for (let i = blockedKeyword.length - 1; i >= 0; i--) {
                        if(content.includes(blockedKeyword[i])){
                            const contentHTML=td.innerHTML;
                            const contentText=td.innerText;
                            contentStorage[item.id]=contentHTML;
                            td.innerHTML=`<span style="font-style:italic;font-size:10px;color:gray" class="hidden-by-script" data-restore-key="${item.id}" title="${content}">已屏蔽,鼠标移到此处查看内容</span>`;
                            break;
                        }
 
                    }
                }
            })
        })
    }
})();