您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Blocks posts and comments from specific users on humoruniv.com
当前为
// ==UserScript== // @name Humoruniv Block User Script // @namespace http://tampermonkey.net/ // @version 1.1 // @description Blocks posts and comments from specific users on humoruniv.com // @author ChatGPT // @match https://m.humoruniv.com/* // @grant none // ==/UserScript== (function() { 'use strict'; // 블라인드 리스트 관리 GUI 생성 let blindList = JSON.parse(localStorage.getItem('blindList') || '[]'); function saveBlindList() { localStorage.setItem('blindList', JSON.stringify(blindList)); } function addUserToBlindList(nickname) { if (nickname && !blindList.some(user => user.nickname === nickname)) { blindList.push({ nickname: nickname, date: new Date().toLocaleString('ko-KR', { hour12: false }) }); saveBlindList(); renderBlindList(); hidePosts(); hideComments(); } } function removeUserFromBlindList(nickname) { blindList = blindList.filter(user => user.nickname !== nickname); saveBlindList(); renderBlindList(); } function renderBlindList() { const listElement = document.getElementById('blindList'); listElement.innerHTML = ''; blindList.forEach(user => { const listItem = document.createElement('li'); listItem.textContent = `${user.nickname} (${user.date})`; const removeButton = document.createElement('button'); removeButton.textContent = '삭제'; removeButton.onclick = () => removeUserFromBlindList(user.nickname); listItem.appendChild(removeButton); listElement.appendChild(listItem); }); } function saveGuiState(isHidden) { localStorage.setItem('guiHidden', isHidden); } function loadGuiState() { return localStorage.getItem('guiHidden') === 'true'; } // GUI 생성 const gui = document.createElement('div'); gui.style.position = 'fixed'; gui.style.bottom = '10px'; gui.style.right = '10px'; gui.style.backgroundColor = 'white'; gui.style.border = '1px solid black'; gui.style.padding = '10px'; gui.style.zIndex = 10000; const title = document.createElement('h3'); title.textContent = '블라인드 리스트'; gui.appendChild(title); const list = document.createElement('ul'); list.id = 'blindList'; gui.appendChild(list); const inputField = document.createElement('input'); inputField.type = 'text'; inputField.placeholder = '닉네임 추가'; gui.appendChild(inputField); const addButton = document.createElement('button'); addButton.textContent = '추가'; addButton.onclick = () => { addUserToBlindList(inputField.value.trim()); inputField.value = ''; }; gui.appendChild(addButton); const hideButton = document.createElement('button'); hideButton.textContent = '숨기기'; hideButton.onclick = () => { gui.style.display = 'none'; showButton.style.display = 'block'; saveGuiState(true); }; gui.appendChild(hideButton); document.body.appendChild(gui); const showButton = document.createElement('button'); showButton.textContent = '블라인드'; showButton.style.position = 'fixed'; showButton.style.bottom = '10px'; showButton.style.right = '10px'; showButton.style.zIndex = 10000; showButton.style.display = 'none'; showButton.onclick = () => { gui.style.display = 'block'; showButton.style.display = 'none'; saveGuiState(false); }; document.body.appendChild(showButton); if (loadGuiState()) { gui.style.display = 'none'; showButton.style.display = 'block'; } else { gui.style.display = 'block'; showButton.style.display = 'none'; } renderBlindList(); // 게시글 가리기 function hidePosts() { if (location.href.includes('list.html') && !location.href.includes('st=name')) { document.querySelectorAll('#list_body > ul > a').forEach(post => { const nickname = post.querySelector('#list_body > ul > a > li > table > tbody > tr > td:nth-child(2) > div > span.nick').textContent; if (blindList.some(user => user.nickname === nickname)) { post.style.display = 'none'; } }); document.querySelectorAll('#list_best_normal > ul > a').forEach(post => { const nickname = post.querySelector('#list_best_normal > ul > a > li > table > tbody > tr > td > div:nth-child(3)').textContent; if (blindList.some(user => user.nickname === nickname)) { post.style.display = 'none'; } }); } } // 댓글 가리기 function hideComments() { if (location.href.includes('read.html')) { document.querySelectorAll('li').forEach(comment => { const nickname = comment.querySelector('span.nick')?.textContent; if (nickname && blindList.some(user => user.nickname === nickname)) { if (comment.className.includes('sub_comm_bt')) { comment.style.display = 'none'; } else if (comment.className.includes('best_li') || comment.id.includes('comment_li')) { let nextElement = comment.nextElementSibling; while (nextElement && nextElement.className.includes('sub_comm_bt')) { nextElement.style.display = 'none'; nextElement = nextElement.nextElementSibling; } comment.style.display = 'none'; } } }); } } hidePosts(); hideComments(); })();