// ==UserScript== // @name Egloos EO Feel blacklist // @namespace http://www.egloos.com/ // @description block the eo feel posts of user who is in black list // @version 1.0.5 // @include http://www.egloos.com/ // @include http://www.egloos.com/post/* // @include http://www.egloos.com/recent/* // @include http://www.egloos.com/popular/* // ==/UserScript== // 데이터 정리 var eofeel_blacklist_key = "egloos_mugansim_list"; var eofeel_blackwordlist_key = "egloos_mugansim_word_list"; var blacklist = {}; var blackwordlist = []; if (typeof(GM_getValue(eofeel_blacklist_key)) != 'undefined') eval("blacklist={"+GM_getValue(eofeel_blacklist_key)+"}"); if (typeof(GM_getValue(eofeel_blackwordlist_key)) != 'undefined') eval("blackwordlist=[" + GM_getValue(eofeel_blackwordlist_key) + "]"); var eofeelId = 'eo_feel'; var userPattern = /([\w\d]+).egloos.com/; var urlPattern = /(^[h]{1}ttp:\/\/[\w\d\/.]+)$/; var validName = /^[\w\d]+$/; var validWord = /^\".+\"$/; var validUrl = /^[h]{1}ttp:\/\/[\w\d\/.]+$/; // 리스트 관리 function addToBlackList(item) { if (item.match(validWord)) { blackwordlist.push(escape(item.slice(1, item.length-1).toLowerCase())); } else blacklist[item] = " "; saveData(); setTimeout(removeItem, 250); } function removeFromBlackList(item) { if (item.match(validWord)) { var index = -1; for (var i = 0; i < blackwordlist.length; i++) { if (!blackwordlist[i].match(escape(item.slice(1, item.length-1).toLowerCase()))) { index = i; break; } } if (-1 != index) blackwordlist.splice(index, 1); } else if (blacklist[item]) blacklist[item] = null; saveData(); } function saveData() { GM_setValue(eofeel_blacklist_key, cfg2str()); GM_setValue(eofeel_blackwordlist_key, wordcfg2str()); } function cfg2str() { var str = ''; for (name in blacklist) if (blacklist[name]) str += "\""+ name + "\":\"" + blacklist[name] + "\","; return str; } function wordcfg2str() { var str = ""; for (var i = 0; i < blackwordlist.length ; i++) { str += (str.length > 0) ? ", \"" : "\""; str += blackwordlist[i] + "\""; } return str; } // 메뉴 처리 function menu_command_add(e) { var name = prompt("무심권을 발동할 항목을 입력해 주세요.\n입력 방법은 비기전수 메뉴를 참조하세요."); if (name && (name.match(validName) || name.match(validWord) || name.match(validUrl))) { addToBlackList(name); } else { alert("대상 지정이 잘못되었습니다."); } } function menu_command_remove(e) { var name = prompt("무심권을 풀 항목을 입력해 주세요.\n입력 방법은 비기 전수를 참조하세요."); if (name && (name.match(validName) || name.match(validWord) || name.match(validUrl))) removeFromBlackList(name); } function menu_command_list(e) { var str = cfg2str(); var str2 = wordcfg2str(); alert("넌 이미 무시됐다.\n" + str.split(",").join("\n").replace(/(\":|\")/g, "") + "\n"+ unescape(str2.split(",").join("\n"))); } function menu_command_help(e) { var str = "무심권 3종 세트 판매 안내\n\n~각각 방법에 따라 [] 안에 든 형태로 주문하세요~\n1. 유저 차단은 [아이디]\n http://***.egloos.com에서 ***에 해당하는 내용입니다.\n2. 특정글 차단은 [http://xxx.egloos.com/xxxxxxx형식]\n3. 특정 단어 차단은 [\"차단할 단어\"]"; alert(str); } // 목록제거 function removeItem() { if (document.getElementById && document.getElementsByTagName) { var eofeel = document.getElementById(eofeelId); if (!eofeel) { return; } var divs = eofeel.getElementsByTagName("div"); for (var i = 0; i < divs.length; i++) { var child = divs[i]; if (!child.className.match(/item/)) continue; var contents = child.getElementsByTagName("div"); var content = null; for (var j = 0; j < contents.length ; j++) { if (contents[j].className.match(/content/)) { content = contents[j]; break; } } if (!content) continue; var h3s = content.getElementsByTagName("h3"); if (0 == h3s.length) continue; var linkdata = h3s[0].getElementsByTagName("a"); if (0 == linkdata.length) continue; var name = getUser(linkdata[0].href); var nameFlag = name != null && blacklist[name]; var url = getUrl(linkdata[0].href); var urlFlag = url != null && blacklist[url]; var title = linkdata[0].textContent; var titleFlag = false; for (var m=0;m < blackwordlist.length; m++) { if (-1 != escape(title.toLowerCase()).search(blackwordlist[m]) ) { titleFlag = true; break; } } if (nameFlag || urlFlag || titleFlag) { var originalContent = child.innerHTML; child.innerHTML="