Naver Cafe Blacklist Userscript

Naver Cafe Hide blacklist

Versión del día 27/8/2017. Echa un vistazo a la versión más reciente.

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.0
// @require
// @description  Naver Cafe Hide blacklist
// @author       BossLeader
// @match        http://cafe.naver.com/joonggonara*
// @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 {
        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;
}
        d.appendChild(this.setMenuItem2('#차단하기#', true, AddBlackList));
        d.appendChild(this.setMenuItem2(g.p_nickname, true));
        d.appendChild(this.setMenuItem2(g.p_memberid, false));
        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;

    var articlelist = y.querySelector('form > .board-box > tbody');
    var ListInfo = [];
    function SetLIstInfo() {
        if(!articlelist) return;
        for (i = 0; i < articlelist.childElementCount; i+=2) {
            var p_memberid, p_nickname, p_title, p_memo;
            var str = articlelist.children[i].querySelector('.p-nick a').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_memo = '';
            //alert('11'+p_memberid+'11\r11'+ p_nickname +'11\r11'+p_title);
            
            ListInfo[ListInfo.length] =  {
                p_memberid: p_memberid,
                p_nickname: p_nickname,
                p_title: p_title,
                p_memo: p_memo,
            };
        };
    };
    SetLIstInfo();
    function shownhide(i, nFilterState) { // 0: showall 1: black 2: hide
        if(!articlelist) return;
        var num = i*2;
        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 = '';
        };
    };
    function SetBFilter() {
        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(i, 0);// 0: showall 1: black 2: hide
                ToggleFilter.text = '필터 OFF...';
            };
            return false;
        }
        var cnt = 0;
        for (i = 0; i < ListInfo.length; i++) {
            if (blockedID.indexOf(ListInfo[i].p_memberid) == -1) continue;
            //founded
            shownhide(i, nFilterState);// 0: showall 1: black 2: hide
            cnt++;
        };
        if (nFilterState == 0) {
            ToggleFilter.text = '필터 OFF...';
        } else {
            ToggleFilter.text = '필터'+nFilterState+' ON (차단: '+cnt+')';
        };
    };
    x.SetBFilter = function() {SetBFilter(); };
    //alert(ListInfo.length + ' ' + ListInfo[1].p_memberid);
        
    var z = y.querySelectorAll('.p-nick a');
    //alert(z.length);

    for (i = 0; i < z.length; i++) {
        var str = z[i].getAttribute("onclick").replace('ui(','ui2(') ;
        z[i].setAttribute('onclick',ui2.toString()+uiFactoryObject2.toString()+str);
    }
        //alert(z[0].getAttribute("onclick"));

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

    var storage = window.localStorage;
    CheckUserData(storage);
   // var blockedUsers = storage.getItem("BlockedUsers").split(",");
    //var hideBlockedUsers = toBool(storage.getItem("hideBlockedUsers"));
    //var redactText = storage.getItem("RedactText");
    var ShowBlackList, ResetBlackList, ToggleFilter, btnMemberView;
  //  " | <a id='setBlackList' href='#'>블랙리스트</a>: " + filteredAuthors + "
    //헤드.
    var head = y.querySelector('.fr');
    var line = head.querySelector('span.fl');
    if ( head != undefined && line && line !== undefined) {
        
        function add(str, id){
            //구분자.
            var fl = line.cloneNode(true);
            head.insertBefore(fl, head.childNodes[0]);
            //버튼1 - Show BlackList
            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 = add('차단목록 보기', '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 = add('목록 초기화', 'ResetBlackList');
        ResetBlackList.onclick = function() {
            var txt;
            var r = confirm("차단 목록을 초기화합니다! \r초기화된 목록은 복구할 수 없습니다!");
            if (r == true) {
                storage.removeItem("BlockedUsers");
                storage.setItem("blockedID","");
                storage.setItem("blockedName","");
                storage.setItem("nFilterState", 0);
                SetBFilter();
            } else {
                txt = "You pressed Cancel!";
            };
            return false;
        };
        ToggleFilter = add('필터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();
        //btnMemberView = add('btnMemberView', 'btnMemberView');
        //btnMemberView.onclick = function() {

        };
    };

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


    };
}

$('cafe_main').addEventListener("load", Ready);