// ==UserScript== // @name Egloos comments blacklist // @namespace http://www.egloos.com/ // @description block the comments of user who is in black list // @version 1.0.1 // @include http://*.egloos.com/* // @exclude http://www.egloos.com/* // @exclude http://valley.egloos.com/* // ==/UserScript== // 데이터 정리 var that_blacklist_key = "egloos_mugansim2_list"; var that_blacklist = {}; if (typeof(GM_getValue(that_blacklist_key)) != 'undefined') eval("that_blacklist={"+GM_getValue(that_blacklist_key)+"}"); var commentsId = 'content'; var contentId = 'content'; var that_userPattern = /([\w\d]+).egloos.com/; var that_validName = /^[\w\d]+$/; // 리스트 관리 function that_addToBlackList(name) { that_blacklist[name] = " "; that_saveData(); that_removeItem(); } function that_removeFromBlackList(name) { if (that_blacklist[name]) that_blacklist[name] = null; that_saveData(); } function that_saveData() { GM_setValue(that_blacklist_key, that_cfg2str()); } function that_cfg2str() { var str = ''; for (name in that_blacklist) if (that_blacklist[name]) str += "\""+ name + "\":\"" + that_blacklist[name] + "\","; return str; } // 메뉴 처리 function that_menu_command_add(e) { var name = prompt("무심각을 발동할 유저를 입력해 주세요.\nhttp://***.egloos.com에서 ***에 해당하는 이름입니다."); if (name && name.match(that_validName)) { that_addToBlackList(name); } else { alert("대상 지정이 잘못되었습니다."); } } function that_menu_command_remove(e) { var name = prompt("무심각을 풀 유저를 입력해 주세요.\nhttp://***.egloos.com에서 ***에 해당하는 이름입니다."); if (name && name.match(that_validName)) that_removeFromBlackList(name); } function that_menu_command_list(e) { var str = that_cfg2str(); alert("아아 그것은 덧(글)없는 인생.\n" + str.split(",").join("\n").replace(/[\":]/g, "")); } // 제거작업 function that_removeItem() { if (document.getElementById && document.getElementsByTagName) { var content = document.getElementById(contentId); if (!content) { content = document.getElementsByTagName("body")[0]; } var divs = content.getElementsByTagName("div"); for (var i = 0; i < divs.length; i++) { if (!divs[i].className.toLowerCase().match(/post/)) continue; var spans = divs[i].getElementsByTagName("span"); for (var j=0; j < spans.length; j++) { if (!spans[j].className.toLowerCase().match(/linkback/)) continue; that_modifyClickEvent(spans[j]); } var postDivs = divs[i].getElementsByTagName("div"); var comment = null; for (var j=0; j < postDivs.length; j++) { if (!postDivs[j].id.match(/cmt[\d]{7}/)) continue; comment = postDivs[j]; break; } if (!comment) continue; that_modifyComment(comment); } } } function that_modifyClickEvent(p) { if (!p) return; var anchs = p.getElementsByTagName("a"); var serial = p.innerHTML.search(/cmtview\(\'(\d{7})\'/) != -1 ? RegExp.$1 : null; if (!serial) return; for (var i=0; i < anchs.length ; i++) { if (!anchs[i].className.toLowerCase().match(/tail_cmt/)) continue; addMyEvent(anchs[i], 'click', function() { setTimeout(function() {that_cmtviewCheck(serial)}, 700); setTimeout(function() {that_cmtviewCheck(serial)}, 1500); setTimeout(function() {that_cmtviewCheck(serial)}, 3000); setTimeout(function() {that_cmtviewCheck(serial)}, 5000); }); } } function that_modifyComment(comment) { var commentDivs = comment.getElementsByTagName("div"); var nextViewFlag = true; for (var j = 0; j < commentDivs.length; j++) { var div = commentDivs[j]; if (!nextViewFlag && div.className.toLowerCase().match(/comment_body/)) { var originalComment = div.lastChild; originalComment.style.display="none"; div.innerHTML="[혹시나?]"; div.appendChild(originalComment); } nextViewFlag = true; if (!commentDivs[j].className.toLowerCase().match(/comment_tail/)) continue; var linkdata = commentDivs[j].getElementsByTagName("a"); if (0 == linkdata.length || -1 != linkdata[0].href.search("#")) continue; var name = that_getUser(linkdata[0].href); if (name != null && that_blacklist[name]) { nextViewFlag=false; } } } function that_getUser(url) { return url.search(that_userPattern) != -1 ? RegExp.$1 : null; } function addMyEvent(obj, event, handler){ if(obj.addEventListener){ obj.addEventListener(event,handler,false); } else if(obj.attachEvent){ obj.attachEvent("on"+event,handler); } else{ obj["on"+event]=handler; } } function that_cmtviewCheck(serial) { if (!serial) return; var id = "cmt" + serial; if ("" != document.getElementById(id).innerHTML) { that_modifyComment(document.getElementById(id)); } } addMyEvent(window, 'load', that_removeItem) GM_registerMenuCommand("덧글 무심각 : 더하기", that_menu_command_add) GM_registerMenuCommand("덧글 무심각 : 빼기", that_menu_command_remove) GM_registerMenuCommand("덧글 무심각 : 목록 보기", that_menu_command_list)