ASMROnline屏蔽

屏蔽指定标签的作品

// ==UserScript==
// @name        ASMROnline屏蔽
// @namespace   蒋晓楠
// @version     20240705
// @description 屏蔽指定标签的作品
// @author      蒋晓楠
// @license     MIT
// @match       https://www.asmr.one/works?page=*
// @icon        https://www.google.com/s2/favicons?sz=64&domain=asmr.one
// @grant       GM_registerMenuCommand
// @grant GM_addElement
// @grant GM_addStyle
// @grant GM_setValue
// @grant GM_getValue
// @grant GM_notification
// ==/UserScript==

function Tips(Message) {
    GM_notification({title: "ASMROnline屏蔽", text: Message, timeout: 3000});
}

function GetTags() {
    return GM_getValue("Tags", []);
}

function HasBanTag(Item, Tags) {
    let Has = false;
    Item.querySelectorAll(".q-ma-xs>div").forEach((Tag) => {
        let NowTag = Tag.querySelector(".q-chip__content").textContent.trim();
        if (!Has && Tags.indexOf(NowTag) > -1) {
            Has = true;
        }
    });
    return Has;
}

function InitUI() {
    GM_addStyle(`.JXNButton,.JXNInput{color:black}`);
    let Holder = document.querySelector(".q-space");
    let TagBlock = GM_addElement(Holder, "input", {type: "text", class: "JXNInput"}),
        Button = GM_addElement(Holder, "button", {textContent: "添加或删除标签", class: "JXNButton"});
    Button.onclick = () => {
        let Tag = TagBlock.value, Tags = GetTags();
        let Index = Tags.indexOf(Tag);
        if (Index > -1) {
            Tags.splice(Index, 1);
            Tips("删除成功");
        } else {
            Tags.push(Tag);
            Tips("添加成功");
        }
        GM_setValue("Tags", Tags);
    };
}

function DoBlock() {
    let Tags = GetTags();
    setInterval(() => {
        document.querySelectorAll(".q-col-gutter-x-md>div:not(.JXNProcessed)").forEach((Item) => {
            if (HasBanTag(Item, Tags)) {
                console.log(Item.querySelector(".q-mx-sm").textContent.trim()+"存在被屏蔽标签,删除");
                console.log(Item)
                Item.remove();
            } else {
                Item.classList.add("JXNProcessed");
            }
        });
    }, 1000);
}

function Run() {
    InitUI();
    DoBlock();
    setTimeout(() => {
        console.log("所有标签", GetTags());
    }, 1000);
}

Run();