您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
荷包蛋自用净化南+论坛贴文的脚本,全自动隐藏MTF相关贴文
// ==UserScript== // @name South-plus MTF Killer // @namespace http://tampermonkey.net/ // @version 1.6 // @description 荷包蛋自用净化南+论坛贴文的脚本,全自动隐藏MTF相关贴文 // @author Ayase // @match *://*.south-plus.net/thread.php* // @match *://*.south-plus.net/search.php* // @match *://*.south-plus.net/simple/* // @match *://*.blue-plus.net/thread.php* // @match *://*.blue-plus.net/search.php* // @match *://*.blue-plus.net/simple/* // @match *://*.north-plus.net/thread.php* // @match *://*.north-plus.net/search.php* // @match *://*.north-plus.net/simple/* // @match *://*.spring-plus.net/thread.php* // @match *://*.spring-plus.net/search.php* // @match *://*.spring-plus.net/simple/* // @match *://*.level-plus.net/thread.php* // @match *://*.level-plus.net/search.php* // @match *://*.level-plus.net/simple/* // @match *://*.white-plus.net/thread.php* // @match *://*.white-plus.net/search.php* // @match *://*.white-plus.net/simple/* // @match *://*.east-plus.net/thread.php* // @match *://*.east-plus.net/search.php* // @match *://*.east-plus.net/simple/* // @match *://*.summer-plus.net/thread.php* // @match *://*.summer-plus.net/search.php* // @match *://*.summer-plus.net/simple/* // @match *://*.bbs.imoutolove.me/thread.php* // @match *://*.bbs.imoutolove.me/search.php* // @match *://*.bbs.imoutolove.me/simple/* // @grant none // @run-at document-end // @license MIT // ==/UserScript== (function() { 'use strict'; const keywords = [ '伪娘', '药娘', '扶她', '男+', '性转', '男同', '男娘', 'mtf', '🏳️⚧️', '🏳️🌈', '跨性别', 'futa', 'LGBT', '🍥', 'furry', '男童', '福瑞' ]; function showNotification(message, duration = 1500) { const notification = document.createElement('div'); notification.textContent = message; Object.assign(notification.style, { position: 'fixed', bottom: '20px', right: '20px', padding: '10px 15px', backgroundColor: 'rgba(0, 0, 0, 0.75)', color: 'white', borderRadius: '5px', zIndex: '99999', fontSize: '14px', opacity: '0', transition: 'opacity 0.4s ease-in-out', }); document.body.appendChild(notification); setTimeout(() => { notification.style.opacity = '1'; }, 10); setTimeout(() => { notification.style.opacity = '0'; setTimeout(() => { notification.remove(); }, 400); }, duration); } function filterPosts() { const lowerCaseKeywords = keywords.map(k => k.toLowerCase()); const postRows = document.querySelectorAll( '#ajaxtable tr.tr3, #main div.t table tr.tr3, div.threadlist > ul > li' ); let blockedCount = 0; postRows.forEach(row => { let titleText = ''; let authorText = ''; let titleForLog = ''; let authorForLog = 'N/A'; const desktopTitle = row.querySelector('h3 > a, th.y-style > a'); const desktopAuthor = row.querySelector('a.bl, td.smalltxt.y-style > a'); const mobileLink = row.querySelector('a'); const mobileAuthorSpan = mobileLink ? mobileLink.querySelector('span.by') : null; if (desktopTitle) { titleForLog = desktopTitle.textContent.trim(); titleText = titleForLog.toLowerCase(); if (desktopAuthor) { authorForLog = desktopAuthor.textContent.trim(); authorText = authorForLog.toLowerCase(); } } else if (mobileAuthorSpan) { titleForLog = mobileLink.firstChild.textContent.trim(); titleText = titleForLog.toLowerCase(); authorForLog = mobileAuthorSpan.textContent.split('-')[0].trim(); authorText = authorForLog.toLowerCase(); } if (titleText) { const shouldBeBlocked = lowerCaseKeywords.some(keyword => titleText.includes(keyword) || authorText.includes(keyword) ); if (shouldBeBlocked) { row.style.display = 'none'; blockedCount++; console.log(`已屏蔽帖子: "${titleForLog}" (作者: ${authorForLog})`); } } }); if (blockedCount > 0) { console.log(`[论坛屏蔽脚本] 本次运行共屏蔽了 ${blockedCount} 个帖子。`); showNotification(`已屏蔽 ${blockedCount} 个帖子`, 1000); } } filterPosts(); })();