Greasy Fork

Greasy Fork is available in English.

爱上ASMR - 视频评论区黑名单

删除黑名单用户的评论

当前为 2023-08-06 提交的版本,查看 最新版本

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// ==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));
    });
})();