Greasy Fork

Greasy Fork is available in English.

iirose AI blcoker

An assistant that helps you block annoying AI messages.

目前为 2020-05-10 提交的版本,查看 最新版本

// ==UserScript==
// @name         iirose AI blcoker
// @namespace    http://tampermonkey.net/
// @version      0.2
// @description  An assistant that helps you block annoying AI messages.
// @author       Keane
// @match        https://iirose.com/messages.html
// @grant        none
// ==/UserScript==

(function() {
    'use strict';
    var targetNode = document.getElementsByClassName("fullBox msgholderBox")[0];
    const config = {childList: true, subtree: true };
    var count = 0;
    var notificationNode = document.getElementById("leaveMsgHolder");

    //css text
    //var cssText0 = ".hvr-radial-out {display: inline-block;vertical-align: middle;-webkit-transform: perspective(1px) translateZ(0);transform: perspective(1px) translateZ(0);box-shadow: 0 0 1px rgba(0, 0, 0, 0);position: relative;overflow: hidden;background: #e1e1e1;-webkit-transition-property: color;transition-property: color;-webkit-transition-duration: 2.0s;transition-duration: 2.0s;}";
    // var cssText1 = ".hvr-radial-out:before {content: '';position: absolute;z-index: -1;top: 0;left: 0;right: 0;bottom: 0;background: #2098D1;border-radius: 100%;-webkit-transform: scale(0);transform: scale(0);-webkit-transition-property: transform;transition-property: transform;-webkit-transition-duration: 2.0s;transition-duration: 2.0s;-webkit-transition-timing-function: ease-out;transition-timing-function: ease-out;}";
    // var cssText2 = ".hvr-radial-out:hover, .hvr-radial-out:focus, .hvr-radial-out:active {color: white;} .hvr-radial-out:hover:before, .hvr-radial-out:focus:before, .hvr-radial-out:active:before {-webkit-transform: scale(2);transform: scale(2);}";

    function Init (){
        var Unodes = document.getElementsByClassName("PubChatUserInfo");
        if(Unodes.length==0){
            window.setTimeout(Init, 50);
            console.log("loading");
        }
        else{
            var i = 0;
            var Unode,userNameStr,msgNodes,AIMsg;
            console.log(Unodes.length);
            for (i; i<Unodes.length;i++){

                Unode = Unodes[i];
                userNameStr = Unode.firstElementChild.getAttribute("data-name");
                if (userNameStr=="艾瑞"||userNameStr=="艾薇"){
                    count += 1;
                    msgNodes = document.getElementsByClassName("msg");
                    AIMsg = msgNodes[i];
                    AIMsg.style.display = "none";
                }
            }
            console.log(count + " AI msgs are blocked");
            updateCount();
            return;
        }

    }

    function updateCount(){
        document.getElementById("toggleButtonBadge").innerHTML = count;
    }
    // Callback function to execute when mutations are observed
    const AIcallback = function(mutationsList, observer) {
        // Use traditional 'for loops' for IE 11
        for(let mutation of mutationsList) {
            if (mutation.type === 'childList') {
                //console.log('A child node has been added or removed.');
                var nodes = document.getElementsByClassName("PubChatUserInfo");
                var node = nodes[nodes.length-1];
                var userName = node.firstElementChild.getAttribute("data-name");
                if (userName=="艾瑞"||userName=="艾薇"){
                    count += 1;
                    var msgNodes = document.getElementsByClassName("msg");
                    var lastMsg = msgNodes[nodes.length-1];
                    lastMsg.style.display = "none";
                    console.log("An AI msg is blocked");
                    updateCount();
                }
            }

        }
    };
    const NotifyCallback = function (observer){

    }

    function displayMsg(){
        var i = 0;
        var Unode,userNameStr,msgNodes,AIMsg;
        var Unodes = document.getElementsByClassName("msg");
        for (i; i<Unodes.length;i++){
            Unode = Unodes[i];
            Unode.style.display = "block";
        }
        console.log(count + " AI msgs are shown");
        //updateCount();
        return;
    }


    // Create an observer instance linked to the callback function
    const AIobserver = new MutationObserver(AIcallback);

    const NotifyObserver = new MutationObserver(NotifyCallback);

    // Start observing the target node for configured mutations
    // initial
    AIobserver.observe(targetNode, config);
    //NotifyObserver.observe();

    Init();
    var toggleButtonDiv = document.createElement('div');
    //toggleButtonDiv.class = "hvr-radial-out";
    toggleButtonDiv.id = "toggleButtonContainer";
    toggleButtonDiv.style.cssText = "position:relative;top:2%;left:20%;width:50px;height:50px;z-index:90001";



    var toggleButtonBG = document.createElement('span');
    toggleButtonBG.id = "toggleButtonBG";
    toggleButtonBG.style.cssText = "position:absolute;width:50px;height:50px;background-color: #FFF;border-radius: 50%;z-index: 0;";


    var toggleButtonPic1 = document.createElement("img");
    toggleButtonPic1.id = "toggleButtonPic";
    toggleButtonPic1.src = "http://r.iirose.com/i/20/5/9/23/0526-ET.png";
    toggleButtonPic1.style.cssText = "position:relative;width:45px;height:45px;top:2.5px;left:2.5px;z-index: 1;";
    var toggleButtonPic2 = document.createElement("img");
    toggleButtonPic2.id = "toggleButtonPic2";
    toggleButtonPic2.src = "http://r.iirose.com/i/20/5/10/11/1614-W7.png";
    toggleButtonPic2.style.cssText = "position:absolute;width:40px;height:40px;top:5px;left:5px; display:block;z-index: 2;";
    var toggleButton = document.createElement("div");
    toggleButton.id = "toggleButton";
    toggleButton.style.cssText = "position:absolute;width:40px;height:40px;top:5px;left:5px; display:block;z-index: 3;";
    //toggleButton.addEventListener("click", toggle);

    var toggleButtonBadge = document.createElement('span');
    toggleButtonBadge.id = "toggleButtonBadge";
    toggleButtonBadge.innerHTML = count.toString();
    toggleButtonBadge.style.cssText= "position: absolute;top: -12px; right: -12px;padding: 3px 10px;border-radius: 50%; background: red; color: white;display:block;"

    toggleButtonDiv.appendChild(toggleButtonBG);
    toggleButtonDiv.appendChild(toggleButtonPic1);
    toggleButtonDiv.appendChild(toggleButtonPic2);
    toggleButtonDiv.appendChild(toggleButtonBadge);
    toggleButtonDiv.appendChild(toggleButton);

    document.getElementById("mainContainer").append(toggleButtonDiv);

    document.getElementById("toggleButton").onclick=toggle;

    function hoverTimer (){
        console.log("mouseover");
        setTimeoutConst = setTimeout(function(){
            document.getElementById('toggleButtonContainer').style.display = "none";
            return;
        }, delay);
    }
    function hoverTimerStopper(){
        console.log("mouseleave");
        clearTimeout(setTimeoutConst );
    }
    var delay=2000, setTimeoutConst;
    var divNode = document.getElementById('toggleButtonContainer');
    divNode.onmouseenter = hoverTimer;
    divNode.onmouseleave = hoverTimerStopper;



    // var style = document.createElement('style');


    //add css
    /*var css = '#toggleButtonBG:hover{ background-color: red }';
    var style = document.createElement('style');

    if (style.styleSheet) {
        style.styleSheet.cssText = css;
    } else {
        style.appendChild(document.createTextNode(css));
    }
*/
    function toggle(){
        //console.log(document.getElementById("toggleButtonPic2").style.display);
        if (document.getElementById("toggleButtonPic2").style.display=="block"){
            document.getElementById("toggleButtonPic2").style.display="none";
            document.getElementById("toggleButtonBadge").style.display="none";
            AIobserver.disconnect();
            displayMsg();
            console.log("Not Blocking AI Msg Now.");
        }
        else if (document.getElementById("toggleButtonPic2").style.display=="none"){
            document.getElementById("toggleButtonPic2").style.display="block";
            document.getElementById("toggleButtonBadge").style.display="block";
            count=0;
            Init();
            AIobserver.observe(targetNode, config);
            console.log(" Blocking AI Msg Now.");

        }
        else {
            document.getElementById("toggleButtonPic2").style.display="block";
        }
    }


})();