Naver Cafe Blacklist Userscript

Naver Cafe Hide blacklist

Tendrás que instalar una extensión para tu navegador como Tampermonkey, Greasemonkey o Violentmonkey si quieres utilizar este script.

Necesitarás instalar una extensión como Tampermonkey o Violentmonkey para instalar este script.

Necesitarás instalar una extensión como Tampermonkey o Violentmonkey para instalar este script.

Necesitarás instalar una extensión como Tampermonkey o Userscripts para instalar este script.

Necesitará instalar una extensión como Tampermonkey para instalar este script.

Necesitarás instalar una extensión para administrar scripts de usuario si quieres instalar este script.

(Ya tengo un administrador de scripts de usuario, déjame instalarlo)

Necesitará instalar una extensión como Stylus para instalar este estilo.

Necesitará instalar una extensión como Stylus para instalar este estilo.

Necesitará instalar una extensión como Stylus para instalar este estilo.

Necesitará instalar una extensión del gestor de estilos de usuario para instalar este estilo.

Necesitará instalar una extensión del gestor de estilos de usuario para instalar este estilo.

Necesitará instalar una extensión del gestor de estilos de usuario para instalar este estilo.

(Ya tengo un administrador de estilos de usuario, déjame instalarlo)

// ==UserScript==
// @name         Naver Cafe Blacklist Userscript
// @namespace    BossLeader
// @version      1.1.4
// @require
// @description  Naver Cafe Hide blacklist
// @author       BossLeader
// @match        http://cafe.naver.com/*
// @grant        none
// ==/UserScript==


function ui2(e, p_memberid, lv_open_type, p_nickname, p_clubid, p_memberinfo, p_entireBoardStaff, p_memberleveluse, p_cluburl, p_activityStopExecutable, p_menuid, sMode) {
    e = e || window.event;
    var sType = ""
    , elIFrame = self.frameElement;
    var ajax = new Ajax("/CafeMemberExistCheck.nhn",{
        method: "POST",
        params: {
            clubid: p_clubid,
            memberid: p_memberid
        },
        onLoad: onCafeMemberCheckAjaxLoad
    });
    if (!ui_sBeforeID) {
        ui_sBeforeID = "menu_parent";
    }
    sNewID = "elFloatLayer_" + Math.floor(Math.random() * 100000);
    if (uiFactory == null) {
        uiFactory = new uiFactoryObject2();
    }
    sType = "loadingBar";
    if (elIFrame) {
        var nPosTop = Element.realPos(Event.ready(e).element).top
        , nFrameHeight = document.documentElement.offsetHeight
        , nDiff = (nPosTop + _nUIMaxHeight) - nFrameHeight
        , nNewHeight = nFrameHeight + nDiff;
        if (nNewHeight > nFrameHeight) {
            elIFrame.style.height = nNewHeight + "px";
        }
    }
    uiFactory.createUi(ui_sBeforeID, sNewID, sType);
    ui_sBeforeID = sNewID;
    var bApplyMember = false;
    var bSecedeMember = false;
    var bActivityStop = false;
    function onCafeMemberCheckAjaxLoad() {
        try {
            var oJsonData = eval("(" + arguments[0].responseText + ")");
            if (oJsonData.exist != "true") {
                bSecedeMember = true;
            }
            if (oJsonData.apply == "true") {
                bApplyMember = true;
            }
            if (oJsonData.activityStop == "true") {
                bActivityStop = true;
            }
            sType = "menu";
            uiFactory.setParameter(p_memberid, lv_open_type, p_nickname, p_clubid, p_memberinfo, p_memberleveluse, p_cluburl, p_menuid);
            var htParam = {
                p_memberid: p_memberid,
                lv_open_type: lv_open_type,
                p_nickname: p_nickname,
                p_clubid: p_clubid,
                p_memberinfo: p_memberinfo,
                p_entireBoardStaff: p_entireBoardStaff,
                p_memberleveluse: p_memberleveluse,
                p_cluburl: p_cluburl,
                p_activityStopExecutable: p_activityStopExecutable,
                bApplyMember: bApplyMember,
                bSecedeMember: bSecedeMember,
                bActivityStop: bActivityStop
            };
            if (elIFrame) {
                htParam.fAfterCreate = function() {
                    nFrameHeight = document.documentElement.offsetHeight;
                    var cafe_main_IframeHeight = parseInt(top.$("cafe_main").style.height);
                    if (nNewHeight > nFrameHeight) {
                        newCafeMainIframeHeight = (cafe_main_IframeHeight + (nNewHeight - nFrameHeight)) + "px";
                        elIFrame.style.height = nNewHeight + "px";
                        top.$("cafe_main").style.height = newCafeMainIframeHeight;
                    }
                }
                ;
            }
            uiFactory.createUi(ui_sBeforeID, sNewID, sType, htParam);
        } catch (e) {}
    }
    if (sMode == "WIDGET") {
        var nDiffTop = $("lm-list").scrollTop;
        var nHeightElement = Event && Event.ready ? Event.ready(e).element.offsetHeight : 13;
        nDiffTop = -(nDiffTop == 0 ? 0 : nDiffTop - nHeightElement);
        oCL.show(sNewID, e, nDiffTop);
    } else {
        if(top.$("cafe_main").__show && top.$("cafe_main").__show == true)
        oCL.show(sNewID, e);
    }
}
function uiFactoryObject2() {
    var a;
    this.setParameter = function(f, k, g, c, h, e, b, d) {
        ui_memberid = f;
        if (k == null) {
            ui_open_type = "3";
        }
        ui_open_type = k.toString();
        if (g == null) {
            ui_nickname = "";
        } else {
            ui_nickname = g;
        }
        if (d != null) {
            ui_menuid = d;
        }
        ui_clubid = c;
        ui_memberinfo = h;
        ui_memberleveluse = e;
        ui_cluburl = b;
    };
    this.createUi = function(f, h, b, c) {
        if (!document.getElementById(f)) {
            var e = document.createElement("DIV");
            e.id = "menu_parent";
            e.style.display = "block";
            e.style.position = "absolute";
            e.className = "perid-layer";
            document.body.appendChild(e);
        }
        var k = document.getElementById(f);
        k.id = h;
        k.innerHTML = "";
        if (b == "loadingBar") {
            k.style.width = "109px";
            var l = document.createElement("dl");
            l.className = "nm_load";
            var g = document.createElement("dt");
            g.innerHTML = sLoadBarTmpl;
            l.appendChild(g);
            var d = document.createElement("dd");
            d.innerHTML = "정보를 불러오는<br>중입니다";
            l.appendChild(d);
            k.appendChild(l);
        } else {
            if (b == "menu") {
                k.style.width = "209px";
                k.innerHTML = "";
                var m = document.createElement("UL");
                m.appendChild(this.createFragment(c));
                k.appendChild(m);
                if (typeof c.fAfterCreate == "function") {
                    c.fAfterCreate();
                }
            }
        }
    };
    this.createFragment = function(g) {
        var f = this.setUiArr(g);
        var d;
        d = document.createDocumentFragment();
        var b = false;
        for (var c = 0, e = f.length; c < e; c++) {
            if (f[c] == "|" && c + 1 < e) {
                b = true;
            } else {
                d.appendChild(this.setMenuItem(f[c], b, g));
                b = false;
            }
        }
function AddBlackList(){
    uiFactory.hideUi();
    var blockedID = window.localStorage.getItem("blockedID").split(',');
    var blockedName = window.localStorage.getItem("blockedName").split(',');
    var i;
    for (i = 0; i < blockedID.length; i++) {
        if (blockedID[i] == '') {blockedID[i] = g.p_memberid; blockedName[i] = g.p_nickname; alert('추가됨 '+blockedID.length); break; }
        if (blockedID[i] == g.p_memberid) {alert('이미 차단된 사용자입니다.'); break;}
    }
    if (i >= blockedID.length) {
        blockedID[i] = g.p_memberid;
        blockedName[i] = g.p_nickname;
        alert('추가됨 '+blockedID.length);
    }
    window.localStorage.setItem("blockedID", blockedID);
    window.localStorage.setItem("blockedName", blockedName);
    top.$('cafe_main').SetBFilter();
    return false;
}
function GoogleSearch(s) {
    uiFactory.hideUi();
    window.open(encodeURI('http://www.google.com/search?q='+s));
    return false;
}
        d.appendChild(this.setMenuItem2('#차단하기#', true, AddBlackList));
        d.appendChild(this.setMenuItem2(g.p_nickname, true, function(){ GoogleSearch(g.p_nickname); } ));
        d.appendChild(this.setMenuItem2(g.p_memberid, false, function(){ GoogleSearch(g.p_memberid); } ));
        d.appendChild(this.setMenuItem2('comment - not yet', true));
        //d.appendChild(this.setMenuItem2('lv: '+g.lv_open_type, false, g));
        //d.appendChild(this.setMenuItem2('clubid: '+g.p_clubid, false, g));
        //d.appendChild(this.setMenuItem2('memberinfo: '+g.p_memberinfo, false, g));
        //d.appendChild(this.setMenuItem2('entireBoardStaff: '+g.p_entireBoardStaff, false, g));
        //d.appendChild(this.setMenuItem2('memberleveluse: '+g.p_memberleveluse, false, g));
        //d.appendChild(this.setMenuItem2('cluburl:  '+g.p_cluburl, false, g));
        //d.appendChild(this.setMenuItem2('activityStopExecutable: '+g.p_activityStopExecutable, false, g));
        //d.appendChild(this.setMenuItem2('bApplyMember: '+g.bApplyMember, false, g));
        //d.appendChild(this.setMenuItem2('bSecedeMember: '+g.bSecedeMember, false, g));
        //d.appendChild(this.setMenuItem2('bActivityStop: '+g.bActivityStop, false, g));
        return d;
    };
    this.setUiArr = function(c) {
        var b = [];
        if (c.p_memberinfo == "me" || c.p_memberinfo == "st" || c.p_memberinfo == "ma") {
            if (c.bApplyMember) {
                b.push("inviteCafe");
                b.push("sendMemo");
                b.push("viewBlog");
                return b;
            }
            if (c.bSecedeMember) {
                if (c.p_memberinfo == "ma" || c.p_entireBoardStaff == "true") {
                    b.push("viewArticle");
                    return b;
                }
            } else {
                b.push("viewArticle");
                if (c.p_memberid != g_sUserId) {
                    b.push("inviteCafeChat");
                    b.push("sendMemo");
                }
            }
        }
        b.push("|");
        if (c.p_memberid != g_sUserId) {
            if (c.p_memberinfo == "st" || c.p_memberinfo == "ma") {
                if (c.p_memberleveluse == "true") {
                    b.push("updateLevel");
                }
                if (c.p_activityStopExecutable == "true") {
                    if (c.bActivityStop == false) {
                        b.push("activityStop");
                    } else {
                        b.push("activityStopRelease");
                    }
                }
                b.push("kickMember");
                b.push("|");
            } else {
                if (c.p_activityStopExecutable == "true") {
                    if (c.bActivityStop == false) {
                        b.push("activityStop");
                    } else {
                        b.push("activityStopRelease");
                    }
                    b.push("|");
                }
            }
        }
        if (c.p_memberid != g_sUserId) {
            b.push("subscribeNaverMe");
        }
        b.push("inviteCafe");
        b.push("|");
        b.push("viewBlog");
        return b;
    };
    this.setMenuItem = function(c, f, g) {
        var b;
        b = document.createElement("Li");
        if (f) {
            b.className = "line";
        }
        var d = document.createElement("A");
        d.href = "#";
        d.onclick = function() {
            execMenuItem(c, g.p_memberid, g.p_membernick);
            return false;
        };
        var e = document.createElement("SPAN");
        e.innerHTML = uiMenuArr[c];
        d.appendChild(e);
        b.appendChild(d);
        return b;
    };
    this.setMenuItem2 = function(text, line, func) {
        var ret;
        ret = document.createElement("Li");
        if (line) {
            ret.className = "line";
        }
        var atag = document.createElement("A");
        atag.href = "#";
        if(func != undefined) atag.onclick = func;
        var e = document.createElement("SPAN");
        e.innerHTML = text;
        atag.appendChild(e);
        ret.appendChild(atag);
        return ret;
    };
    this.hideUi = function() {
        oCL.hide(ui_sBeforeID);
    };
}
function Ready(){
    $("front-img").innerHTML = 'Iframe is loaded.';
    var x = $('cafe_main');
    var y = (x.contentWindow || x.contentDocument);
    if (y.document) y = y.document;
    x.__show = false;
    x.SetBFilter = function() {SetBFilter(); };
    
    var articlelist = y.querySelector('form > .board-box > tbody');
    var ListInfo = [];
    if (articlelist)  {
        for (i = 0; i < articlelist.childElementCount; i++) {
            var p_memberid, p_nickname, p_title, p_href, articlelistindex;
            var nicka = articlelist.children[i].querySelector('.p-nick a');
            if (nicka == null) continue;
            var str = nicka.getAttribute("onclick").split(',');
            p_memberid = str[1].trim().replace(/\'|\"/g,'');
            p_nickname = str[3].trim().replace(/\'|\"/g,'');
            p_title = articlelist.children[i].querySelector('span.aaa a').text;
            p_href = articlelist.children[i].querySelector('span.aaa a').href;
            articlelistindex = i;
            ListInfo[ListInfo.length] =  {
                p_memberid: p_memberid,
                p_nickname: p_nickname,
                p_title: p_title,
                p_href: p_href,
                articlelistindex: articlelistindex
            };
        }
    }

    function shownhide(num, nFilterState) { // 0: showall 1: black 2: hide
        if(!articlelist) return;
        if (nFilterState == 1) {
            articlelist.children[num].style = 'background-color:#505050;';
            //articlelist.children[num+1].style = '';
        } else if (nFilterState == 2) {
            articlelist.children[num].style = 'display: none;';
            //articlelist.children[num+1].style = 'display: none;';
        } else {
            articlelist.children[num].style = '';
            //articlelist.children[num+1].style = '';
        }
    }

    //alert(ListInfo.length + ' ' + ListInfo[1].p_memberid);
    function SetBFilter() {
        if(!articlelist) return;
        function BFilter() {
            var blockedID = storage.getItem("blockedID").split(",");
            var blockedName = storage.getItem("blockedName").split(",");
            var nFilterState = Number(storage.getItem("nFilterState"));
            if (blockedID[0] === null || blockedID[0] === '') {
                //alert('BlockedUsers : 0');
                for (i = 0; i < ListInfo.length; i++) {
                    shownhide(ListInfo[i].articlelistindex, 0);// 0: showall 1: black 2: hide
                }
                ToggleFilter.text = '필터 OFF...';
                return;
            }
            var cnt = 0;
            for (i = 0; i < ListInfo.length; i++) {
                if (blockedID.indexOf(ListInfo[i].p_memberid) == -1) {
                    shownhide(ListInfo[i].articlelistindex, 0);
                } else {
                    //founded
                    shownhide(ListInfo[i].articlelistindex, nFilterState);// 0: showall 1: black 2: hide
                    cnt++;
                }
            }
            if (nFilterState == 0) {
                ToggleFilter.text = '필터 OFF...';
            } else {
                ToggleFilter.text = '필터'+nFilterState+' ON (차단: '+cnt+')';
            }
        };
        BFilter();
        var nMemberViewState = Number(storage.getItem("nMemberViewState"));
        if (nMemberViewState == 0) {
            for (i = 0; i < ListInfo.length; i++) {
                var e = articlelist.children[ListInfo[i].articlelistindex].querySelector('span.aaa select');
                if (e) {
                    articlelist.children[ListInfo[i].articlelistindex].querySelector('span.aaa a').style = '';
                    articlelist.children[ListInfo[i].articlelistindex].querySelector('span.aaa').removeChild(e);
                }
            }
            return;
        }
        var packedList = [];
        var packedListIndex = [];
        for (i = 0; i < ListInfo.length; i++) {
            var idx = packedList.indexOf(ListInfo[i].p_memberid);
            if (idx == -1) {
                packedList[packedList.length] = ListInfo[i].p_memberid;
                packedListIndex[packedListIndex.length] = i;
            } else {//p_memberid = packedList[idx], ListInfo_i = packedListIndex[idx]    ListInfo[packedListIndex[idx]].articlelistindex
                var paaa = articlelist.children[ListInfo[packedListIndex[idx]].articlelistindex].querySelector('span.aaa');
                var e = paaa.querySelector('select');
                if (!e) {
                    paaa.querySelector('a').style = 'display: none;';

                    e = document.createElement("select");
                    e.style = 'width: 300px; ';
                    e.onchange = function () {
                        var chosenoption = this.options[this.selectedIndex];
                        if (chosenoption.value != "none") {
                            window.open(chosenoption.value, "cafe_main", "");
                        }
                    };

                    var op1 = document.createElement("option");
                    op1.text = "---select---";
                    op1.setAttribute('value', 'none');
                    e.add(op1);
                    op1 = document.createElement("option");
                    op1.text = paaa.querySelector('a').text;
                    op1.setAttribute('value', paaa.querySelector('a').href);
                    e.add(op1);

                    paaa.insertBefore(e, paaa.childNodes[0]);
                }
                var saaa = articlelist.children[ListInfo[i].articlelistindex].querySelector('span.aaa');
                var op1 = document.createElement("option");
                op1.text = saaa.querySelector('a').text;
                op1.setAttribute('value', saaa.querySelector('a').href);
                e.add(op1);

                shownhide(ListInfo[i].articlelistindex, 2);
            }
        }
    }


    var z = y.querySelectorAll('.p-nick a');
    var pop = false;
    for (i = 0; i < z.length; i++) {
         // if(z[i].getAttribute("onclick") == null) {dsfsdf();}
        var str = (z[i]?(z[i].getAttribute("onclick")?z[i].getAttribute("onclick").replace('ui(','ui2('):''):'');
        //z[i].getAttribute("onclick").replace('ui(','ui2(') ;
        if (str == '') pop = true;
        z[i].setAttribute('onclick',ui2.toString()+uiFactoryObject2.toString()+str);
    }
    if (pop && z[0] && z[0].getAttribute("onclick") ) { z[0].click(); }
    
        //alert(z[0].getAttribute("onclick"));

    function toBool(a) { return ("false" === a) ? false : true; }

    var storage = window.localStorage;
    CheckUserData(storage);

    var ShowBlackList, ResetBlackList, ToggleFilter, btnMemberView;
    //헤드에 AddButton
    var head = y.querySelector('.fr');
    if (head){
        var line = head.querySelector('span.fl');
        if (line) {
            function addButton(str, id){
                //구분자.
                var fl = line.cloneNode(true);
                head.insertBefore(fl, head.childNodes[0]);
                //버튼1 - Show BlackList
                if (id == '') return;
                var d = document.createElement('div');
                d.setAttribute('id',id);
                d.style = 'float: left; margin-top: 3px; margin-right: 5px;';
                var sa = document.createElement("a");
                sa.setAttribute('href','#');
                var t = document.createTextNode(str);
                sa.appendChild(t);
                d.appendChild(sa);
                head.insertBefore(d, head.childNodes[0]);
                return sa;
            }
            ShowBlackList = addButton('차단목록 보기', 'ShowBlackList');
            ShowBlackList.onclick  = function() {
                var blockedID = storage.getItem("blockedID").split(",");
                var blockedName = storage.getItem("blockedName").split(",");
                if (blockedID[0] === null || blockedID[0] === '') {
                    alert('BlockedUsers : 0'); return false;
                }
                var str = 'BlockedUsers : '+blockedID.length+'\r';
                for (i = 0; i < blockedID.length; i++) {
                    str = str + blockedName[i] + '/' + blockedID[i] + '\r';
                }
                alert(str); return false;
            };
            ResetBlackList = addButton('목록 초기화', 'ResetBlackList');
            ResetBlackList.onclick = function() {
                var txt;
                var r = confirm("차단 목록을 삭제합니다! \r삭제된 목록은 복구할 수 없습니다!");
                if (r == true) {
                    storage.setItem("blockedID","");
                    storage.setItem("blockedName","");
                    storage.setItem("nFilterState", 0);
                    storage.setItem("nMemberViewState", 0);
                    SetBFilter();
                } else {
                    txt = "You pressed Cancel!";
                }
                return false;
            };
            ToggleFilter = addButton('필터ON/OFF', 'ToggleFilter');
            ToggleFilter.onclick = function() {
                var nFilterState = Number(storage.getItem("nFilterState"));
                nFilterState++; if (nFilterState > 2) { nFilterState = 0; }
                storage.setItem("nFilterState", nFilterState);
                SetBFilter();
                return false;
            };
            SetBFilter();
            addButton('','');
            btnMemberView = addButton('모아보기', 'btnMemberView');
            btnMemberView.onclick = function() {
                var nMemberViewState = Number(storage.getItem("nMemberViewState"));
                nMemberViewState++; if (nMemberViewState > 1) { nMemberViewState = 0; }
                storage.setItem("nMemberViewState", nMemberViewState);
                SetBFilter();
                return false;
            };

        }
    }
x.__show = true;
//$(posts).each(function (){});//for debug


    function CheckUserData(storage)
    {
        // create default values if there isnt any storage (on first run)
        if (storage.getItem("blockedID") == null){
            storage.setItem("blockedID", "");
        }
        if (storage.getItem("blockedName") == null){
            storage.setItem("blockedName", "");
        }
        if (storage.getItem("nFilterState") == null){
            storage.setItem("nFilterState", "0");
        }
        if (storage.getItem("nMemberViewState") == null){
            storage.setItem("nMemberViewState", "0");
        }
    }
}

var a = document.getElementById('cafe_main');
if (a) a.addEventListener("load", Ready);