Greasy Fork is available in English.
删除黑名单用户的评论
当前为
// ==UserScript==
// @name 爱上ASMR - 视频评论区黑名单
// @namespace https://www.asasmr.top/
// @version 2.0
// @description 删除黑名单用户的评论
// @match https://www.asasmr2.com/video/*.html
// @license MIT
// @grant GM_getValue
// @grant GM_setValue
// ==/UserScript==
(function() {
'use strict';
// 初始化黑名单列表
let blacklist = GM_getValue('blacklist', []);
// 创建<style>元素来保存CSS规则
const styleElement = document.createElement('style');
// 将<style>元素添加到文档的<head>部分
document.head.appendChild(styleElement);
// 定义CSS规则
const cssRules = `
.hmd-fbq {
bottom: 60px; /* 按钮距离底部的距离 */
right: 10px; /* 按钮距离右侧的距离 */
cursor: pointer;
padding: 10px;
background-color: #5d5d5d17;
border-radius: 50px;
z-index: 105;
position: fixed;
display: flex;
align-items: center;
}
.hmd-fbq:before {
content: "黑名单";
color: #a7a7a7;
}
.hmd-blacklist {
box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);
overflow: auto;
display: none;
height: -webkit-fill-available;
z-index: 105;
position: fixed;
top: 9.5%;
background: #eaeaeae0;
padding: 10px !important;
}
.hmd-blacklist-item > a {
padding: 0px 5px;
}
.hmd-blacklist-item {
padding: 8px;
}
button.hmd-del {
background: #fff;
border: solid #aaa 1px;
border-radius: 4px;
}
button.hmd-add-to-blacklist {
font-size: 10px !important;
padding: 6px 8px !important;
border-radius: 4px !important;
float: right !important;
margin-left: 5px !important;
}
`;
// 将CSS规则添加到<style>元素中
styleElement.appendChild(document.createTextNode(cssRules));
// 在页面顶部创建黑名单显示区域
var butblackListArea = document.createElement('label');
var blackListArea = document.createElement('div');
butblackListArea.setAttribute("id", "hmd-fz");
butblackListArea.classList.add('hmd-fbq');
blackListArea.classList.add('hmd-blacklist');
// 将黑名单区域添加到页面顶部
document.body.prepend(butblackListArea);
document.body.prepend(blackListArea);
//点击事件
const fbqElement = document.querySelector('.hmd-fbq');
const blacklistElement = document.querySelector('.hmd-blacklist');
let isBlacklistVisible = false;
fbqElement.addEventListener('click', function() {
if (isBlacklistVisible) {
blacklistElement.style.display = 'none';
} else {
blacklistElement.style.display = 'block';
}
isBlacklistVisible = !isBlacklistVisible;
});
// 渲染黑名单列表
renderBlacklist();
// 监听 #wcThreadWrapper 的变化
const threadWrapper = document.getElementById('wcThreadWrapper');
const observer = new MutationObserver(mutations => {
mutations.forEach(mutation => {
if (mutation.type === 'childList') {
addBlacklistButtonToComments();
blockLinks()
}
});
});
observer.observe(threadWrapper, { childList: true });
// 添加“加入黑名单”按钮到评论中
function addBlacklistButtonToComments() {
const comments = document.querySelectorAll('.wc-comment-right');
comments.forEach(comment => {
const commentHeader = comment.querySelector('.wc-comment-header');
const commentHeaderadd = comment.querySelector('.wc-comment-link');
const addToBlacklistButton = commentHeader.querySelector('.hmd-add-to-blacklist');
if (addToBlacklistButton) return; // 避免重复添加按钮
const username = commentHeader.querySelector('.wc-comment-author > a').innerText;
const link = commentHeader.querySelector('.wc-comment-author > a').href;
const button = document.createElement('button');
button.textContent = '加入黑名单';
button.classList.add('hmd-add-to-blacklist');
button.addEventListener('click', () => {
blacklist.push({ username, link });
GM_setValue('blacklist', blacklist);
blockLinks();
renderBlacklist();
});
commentHeaderadd.appendChild(button);
});
}
// 渲染黑名单列表
function renderBlacklist() {
blackListArea.innerHTML = '';
blacklist.forEach(item => {
const blacklistItem = document.createElement('div');
blacklistItem.classList.add('hmd-blacklist-item');
const username = document.createElement('span');
username.textContent = item.username;
const link = document.createElement('a');
link.href = item.link;
link.textContent = item.link;
blacklistItem.appendChild(username);
blacklistItem.appendChild(link);
const deleteButton = document.createElement('button');
deleteButton.textContent = '删除';
deleteButton.classList.add('hmd-del');
deleteButton.addEventListener('click', () => {
blacklist = blacklist.filter(i => i.link !== item.link);
GM_setValue('blacklist', blacklist);
renderBlacklist();
blockLinks();
});
blacklistItem.appendChild(deleteButton);
blackListArea.appendChild(blacklistItem);
});
}
// 屏蔽黑名单中的链接
function blockLinks() {
const links = document.querySelectorAll('.wc-comment-author > a');
links.forEach(link => {
const parentElement = link.parentElement.parentElement.parentElement.parentElement;
const isBlocked = blacklist.some(item => item.link === link.href);
if (isBlocked) {
parentElement.style.display = 'none';
} else {
parentElement.style.display = '';
}
});
}
// 页面加载完毕时执行一次
window.onload = function() {
addBlacklistButtonToComments();
blockLinks();
};
// 监听页面刷新事件,在刷新时保留黑名单列表
window.addEventListener('beforeunload', () => {
localStorage.setItem('blacklist', JSON.stringify(blacklist));
});
})();