适用于妖火论坛全局屏蔽黑名单中用户(通过ID匹配)
// ==UserScript==
// @name 妖火黑名单增强版
// @namespace https://www.yaohuo.me/
// @version 1.0.1
// @description 适用于妖火论坛全局屏蔽黑名单中用户(通过ID匹配)
// @author SiXi
// @match https://www.yaohuo.me/*
// @match https://yaohuo.me/*
// @icon https://www.yaohuo.me/css/favicon.ico
// @license Apache 2
// @grant none
// ==/UserScript==
// 免责声明:依据妖火论坛版规,不能将站长及管理员加入黑名单,请遵守论坛规章制度。
(function() {
'use strict';
// 在中括号[]中输入要屏蔽的用户ID(纯数字,多个ID之间用英文逗号分隔)
const blockUserIds = [];
// 提取用户ID
function extractUserId(url) {
const match = url.match(/[?&](?:touserid|mainuserid)=(\d+)/);
return match ? match[1] : null;
}
// 处理帖子列表(首页、版块列表、帖子详情页)
async function handlePostList() {
const lists = document.querySelectorAll('.list, .listdata.line1, .listdata.line2');
for (const list of lists) {
const links = list.querySelectorAll('a[href^="/bbs-"]');
for (const link of links) {
const postId = link.href.match(/\/bbs-(\d+)\.html/)?.[1];
if (!postId) continue;
try {
const response = await fetch(`https://www.yaohuo.me/bbs/Book_View_admin.aspx?id=${postId}`);//使用“管理”功能查询帖子作者ID
const text = await response.text();
const parser = new DOMParser();
const doc = parser.parseFromString(text, 'text/html');
const authorLink = doc.querySelector('a[href*="touserid"]');
if (authorLink) {
const authorId = extractUserId(authorLink.href);
console.log('解析到帖子ID:', postId, '作者ID:', authorId);
if (authorId && blockUserIds.includes(Number(authorId))) {
console.log('发现此帖作者在黑名单中');
// 处理不同类型的帖子列表
if (list.className === 'list') {
// 首页和帖子详情页的推荐帖子列表
const nextBr = link.nextElementSibling;
if (nextBr && nextBr.tagName === 'BR') {
link.style.display = 'none';
nextBr.style.display = 'none';
const textNode = link.previousSibling;
if (textNode && textNode.nodeType === Node.TEXT_NODE) {
textNode.textContent = '';
}
console.log('已隐藏推荐列表帖子:', link.textContent);
}
} else {
// 板块帖子列表
const listItem = link.closest('.listdata');
if (listItem) {
listItem.style.display = 'none';
console.log('已隐藏板块帖子:', link.textContent);
}
}
}
}
} catch (error) {
console.error('获取帖子信息失败:', error);
}
}
}
}
// 处理评论区
function handleComments() {
const comments = document.querySelectorAll('.forum-post');
comments.forEach(comment => {
const userIdLink = comment.querySelector('.user-id a');
if (userIdLink) {
const userId = userIdLink.textContent.replace(/[()]/g, '');
console.log('找到评论,层主ID:', userId);
if (userId && blockUserIds.includes(Number(userId))) {
comment.style.display = 'none';
console.log('已隐藏评论');
}
}
});
}
function main() {
handlePostList();
handleComments();
}
main();
})();