// ==UserScript== // @name Blackumi // @namespace https://github.com/hentaiPanda // @description bangumi用户屏蔽 // @author niR // @version 4.6.1.5 // @license MIT License // @encoding utf-8 // @include http://bangumi.tv/* // @include http://bgm.tv/* // @include http://chii.in/* // @downloadURL none // ==/UserScript== //おっぱい すきすき //localStorage.clear(); //getData(name) name = 'koroshimashita' or name = 'shitainoavatars' //'koroshimashita' 用于存放id, 'shitainoavatars' 用于存放头像地址 function getData(name) { var shikabane = localStorage.getItem(name); if (shikabane == null || shikabane == "") { return []; } else { return shikabane.split(","); } } function testBlockedOrNot(id) { var shikabane = getData('koroshimashita'); if (shikabane.indexOf(id) > -1) { return true; } else { return false; } } function block(id1, id2) { var bbtn = document.getElementById("korosukorosu"); var shikabane = getData('koroshimashita'); if (shikabane.indexOf(id1) == -1) { if (id1 == id2) { shikabane.push(id1); } else { shikabane.push(id1); shikabane.push(id2); } } localStorage.setItem("koroshimashita", shikabane); if (testBlockedOrNot(id1)) { //控制个人页面上的动画、音乐、介绍等模块 userintro("none"); bbtn.firstChild.innerHTML = "解除屏蔽"; bbtn.href = 'javascript:unblock(\'' + id1 + '\',\'' + id2 + '\')'; } //存放头像 getAvatar(id1); } function unblock(id1, id2) { var index1; var index2; var ubbtn = document.getElementById("korosukorosu"); var shikabane = getData('koroshimashita'); if (id1 == id2) { index1 = shikabane.indexOf(id1); shikabane.splice(index1, 1); } else { index1 = shikabane.indexOf(id1); shikabane.splice(index1, 1); index2 = shikabane.indexOf(id2); shikabane.splice(index2, 1); } localStorage.setItem("koroshimashita", shikabane); if (! testBlockedOrNot(id1)) { //控制个人页面上的动画、音乐、介绍等模块 userintro("block"); ubbtn.firstChild.innerHTML = "屏蔽"; ubbtn.href = 'javascript:block(\'' + id1 + '\',\'' + id2 + '\')'; } //删除存放的头像 //其实没必要做这一步,全站的人都放进去数据体积估计都不会超过限制 delAvatar(id1); } //存放头像地址 function getAvatar(id1) { var tmp; var avatar = document.getElementsByClassName('avatarNeue avatarSize75 ll')[0]; var bgurl = avatar.style.backgroundImage.split("/"); var nicks = document.getElementsByClassName('avatar l'); var data = getData('shitainoavatars'); if (bgurl[6].split('.')[0] == 'icon') { tmp = [id1, 'default'].join('/'); data.push(tmp); //alert(data); localStorage.setItem('shitainoavatars', data); } else { tmp = [id1, bgurl[7], bgurl[8]].join('/'); data.push(tmp); //alert(data); localStorage.setItem('shitainoavatars', data); } } function searchAvatar(id1) { var i; var tmp; var data = getData('shitainoavatars'); for (i = 0; i < data.length; i++) { if (data[i].indexOf(id1 + '/') == 0) { //alert(data[i]); return data[i]; } } return false; } function delAvatar(id1) { var i; var tmp = []; var data = getData('shitainoavatars'); for (i = 0; i < data.length; i++) { if (data[i].indexOf(id1) != 0) { tmp.push(data[i]); } } localStorage.setItem('shitainoavatars', tmp); //alert(getData('shitainoavatars')); } //隐藏用户介绍信息 // swch = "none" / "block" function userintro(swch) { var areaklass = ["SidePanel", "menu_inner", "intro", "site", "userSynchronize"]; var areaid = ["columnB","friend", "index", "mono", "game", "real", "anime", "music", "book", "group", "blog"]; var gklass; var gid; var i; var j; //隐藏class区块 for (i = 0; i < areaklass.length; i++) { gklass = document.getElementsByClassName(areaklass[i]); if (gklass == null) { continue; } for (j = 0; j < gklass.length; j++) { gklass[j].style.display = swch; } } //隐藏id区块 for (i = 0; i < areaid.length; i++) { gid = document.getElementById(areaid[i]); if (gid == null) { continue; } gid.style.display = swch; } } /* //如果把用户加为好友则#connectFrd就没有了 //用户页面 function userpage() { //id1 real id / number id ; id2 fake id / 用户名 //id1必须抓,因为超展开只有id1,其他地方大多可以只用id2 var i; var user = document.getElementById("connectFrd"); var id1 = user.href.split("/")[4].split("?")[0]; var id2; var avatar = document.getElementsByClassName("avatar"); for (i = 0; i < avatar.length; i++) { //get fake id if (avatar[i].parentNode.className == "user_box clearit") { id2 = avatar[i].href.split("/")[4]; } //friends else if(getParentNode(avatar[i], 2).className == "side_port" && testBlockedOrNot(avatar[i].href.split("/")[4])) { avatar[i].parentNode.parentNode.style.display = "none"; } } injectFunc(block); injectFunc(unblock); injectFunc(getData); injectFunc(testBlockedOrNot); injectFunc(userintro); injectFunc(getAvatar); injectFunc(delAvatar); //添加按钮 if (testBlockedOrNot(id1)) { userintro("none"); user.parentNode.innerHTML = user.parentNode.innerHTML + '解除屏蔽'; } else { userintro("block"); user.parentNode.innerHTML = user.parentNode.innerHTML + '屏蔽'; } } */ function getFirstChild(node) { var fc = node.firstChild; while (fc != null && fc.nodeType != 1) { fc = fc.nextSibling; } return fc; } //用户页面 function userpage() { var i; var user; var chiibtns; var rrbox; var id1; var id2; var avatar; user = document.getElementById("user_home"); rrbox = getFirstChild(getFirstChild(user)); chiibtns = getChildNodes(rrbox); if (chiibtns.length == 2) { //alert("Your own page"); return false; } id1 = chiibtns[1].href.split('/')[5].split('.')[0]; //alert(id1); avatar = document.getElementsByClassName("avatar"); for (i = 0; i < avatar.length; i++) { //get fake id if (avatar[i].parentNode.className == "user_box clearit") { id2 = avatar[i].href.split("/")[4]; //alert(id2); break; } } //his or her friends listItems('avatar', 2, 'side_port', 2); //inject functions injectFunc(block); injectFunc(unblock); injectFunc(getData); injectFunc(testBlockedOrNot); injectFunc(userintro); injectFunc(getAvatar); injectFunc(delAvatar); //添加按钮 if (testBlockedOrNot(id1)) { userintro("none"); rrbox.innerHTML = rrbox.innerHTML + '解除屏蔽'; } else { userintro("block"); rrbox.innerHTML = rrbox.innerHTML + '屏蔽'; } } //超展开是 real id //topiclist 超展开 //http://bangumi.tv/rakuen/topiclist //group topic 则是 real id, fake id 都可以 //http://bangumi.tv/group/topic/32610 //http://bangumi.tv/group/topic/32295 //人物页下方的讨论 //http://bangumi.tv/person/7734 function topic() { var i; var bgurl; var uid; var avatar = document.getElementsByClassName("avatarNeue"); var flag = false; for (i = 0; i < avatar.length; i++) { bgurl = avatar[i].style.backgroundImage.split("/"); if (bgurl[4] == "user" && bgurl.length > 7) { uid = bgurl[9].split(".")[0]; if (testBlockedOrNot(uid)) { getParentNode(avatar[i], 2).style.display = 'none'; flag = true; } } else if (bgurl[4] == "user") { uid = avatar[i].parentNode.href.split("/")[4] if (testBlockedOrNot(uid)) { getParentNode(avatar[i], 2).style.display = 'none'; flag = true; } } } return flag; } //具体条目 //http://bangumi.tv/subject/18462 function subject() { var flagtsu; var flagsub; //吐槽箱 flagtsu = listItems('avatar', 1, 'item clearit', 1); //评论版 listItems('l', 4, 'item clearit', 4); //讨论版 flagsub = subSection('a', 2, 'td', 1); if (flagtsu) { refreshTsukkomi(); } if (flagsub) { refreshSubSection({'1' : 'odd', '-1' : 'even'}, 0); } } //blog //http://bangumi.tv/blog/46382 //用于屏蔽blog主人(顶楼) function blog() { var entry; var reinfo; var avatar = document.getElementsByClassName("avatar l"); if (testBlockedOrNot(avatar[0].href.split("/")[4])) { avatar[0].parentNode.style.display = "none"; entry = document.getElementById("viewEntry"); reinfo = document.getElementsByClassName("re_info"); entry.style.display = "none"; reinfo[0].style.display = "none"; } } //pm inbox //收件箱 //real id //自动删除信件 function mailbox(box) { var pmurl; var pms = []; var avatar = document.getElementsByClassName("avatar ll"); var pmside = document.getElementById("pm_sidebar"); var pmmain = document.getElementById("pm_main"); for (i = 0; i < avatar.length; i++) { if (testBlockedOrNot(avatar[i].src.split("/")[9].split(".")[0])) { //先隐藏再说 pmmain.style.display = "none"; pmside.style.display = "none"; pms.push(avatar[i].parentNode.href.split("/")[5].split(".")[0]); } } //删除信件 //alert(pms.length); if (pms.length != 0) { pmurl = document.getElementById("pmForm").action; autoDel(pmurl, pms, box); } } //隐藏信件 function mailboxHideMail(box) { var grandpa = ""; var flag = false; var pms = []; var usravatar = document.getElementsByClassName("avatar ll"); var pmside = document.getElementById("pm_sidebar"); var pmmain = document.getElementById("pm_main"); var unread = 1*pmside.innerHTML.split(":")[1].split("<")[0]; var unreadtemp = unread; var mails = 1*pmside.innerHTML.split(":")[2].split("<")[0]; var mailstemp = mails; var sent = 1*pmside.innerHTML.split(":")[3]; var senttemp = sent; for (i = 0; i < usravatar.length; i++) { if (testBlockedOrNot(usravatar[i].src.split("/")[9].split(".")[0])) { grandpa = usravatar[i].parentNode.parentNode.parentNode; grandpa.parentNode.style.display = "none"; if (grandpa.className == "pm_odd pm_new" || grandpa.className == "pm_even pm_new") { unreadtemp--; mailstemp--; senttemp--; } else { mailstemp--; senttemp--; } pms.push(usravatar[i].parentNode.href.split("/")[5].split(".")[0]); flag = true; } } //隐藏信件 if (box == "inbox") { unread = unreadtemp; mails = mailstemp; } else if (box == "outbox") { sent = senttemp; } pmside.innerHTML = "未读: " + unread + "
收件箱: " + mails + "
发件箱: " + sent; if (mails == 0) { pmmain.innerHTML = '收件箱中还没有新信息
'; } if (flag) refreshInbox(); } //撰写信件界面删除最近联系人 function pmcompose() { var i; var contacts = document.getElementsByClassName("l"); for (i = 0; i < contacts.length; i++) { if (contacts[i].parentNode.id == "pm_sidebar" && testBlockedOrNot(contacts[i].getAttribute('onclick').split("'")[1])) { contacts[i].style.display = "none"; contacts[i].nextSibling.outerHTML = ""; } } } //聊天型界面自动删除邮件 function pmview() { var i; var j = 4; var pmurl; var pmsin = []; var eraselink; var avatar = document.getElementsByClassName("avatar"); var cbox = document.getElementById("comment_box"); for (i = 0; i < avatar.length; i++) { if (avatar[i].parentNode.className == "item" && avatar[i].href.split("/")[3] == "user" && testBlockedOrNot(avatar[i].href.split("/")[4])) { //总之先隐藏再说 cbox.style.display = "none"; eraselink = getNextSibling(avatar[i]); while (j > 0) { eraselink = getChildNodes(eraselink)[0]; j -= 1; } j = 4; pmsin.push(eraselink.getAttribute("onclick").split("'")[1]); pmurl = "/pm/erase/batch?gh=" + eraselink.getAttribute("onclick").split("'")[3]; //alert(pmurl); } } //删除信件 //alert(pmsin.length); if (pmsin.length != 0) { autoDel(pmurl, pmsin, "inbox"); } } //自动忽略电波提醒 function notify() { var i; var flag = false; var grandpa; var eraselink; var user = document.getElementsByClassName('l'); for (i = 0; i < user.length; i++) { if (getParentNode(user[i], 2).className == 'inner tip' && user[i].href.split("/")[3] == 'user' && testBlockedOrNot(user[i].href.split("/")[4])) { grandpa = getParentNode(user[i], 3); grandpa.style.display = 'none'; eraselink = getChildNodes(grandpa)[0].href.split('?'); eraseNtf(eraselink[0], eraselink[1].split('=')[1]); } } } //提交忽略 function eraseNtf(url, gh) { var inputbox; var form = document.createElement('form'); form.setAttribute('method', 'get'); form.setAttribute('action', url); inputbox = document.createElement("input"); inputbox.setAttribute("type", "hidden"); inputbox.setAttribute("name", "gh"); inputbox.setAttribute("value", gh); form.appendChild(inputbox); document.body.appendChild(form); form.submit(); } //---------辅助类函数---------// //把函数写入页面便于多次执行 function injectFunc(func) { var script = document.createElement('script'); script.appendChild(document.createTextNode(func)); document.body.appendChild(script); } /* group 讨论组首页的 间隔条纹刷新 或者 讨论页面的条纹刷新 group的讨论,人物收藏下的讨论,blog的讨论 http://bangumi.tv/blog/46382 klassdict负责需要控制条文间隔的元素 klass负责找到这些元素 group 列表界面 klassdict = {'1' : 'topic odd', '-1' : 'topic even'}; klass = 'topic' rakuen 超展开 klassdict = {'1' : 'line_odd item_list', '-1' : 'line_even item_list'}; klass = 'item_list' 一般topic klassdict = {'1' : 'light_odd row_reply clearit', '-1' : 'light_even row_reply clearit'}; //klass = 'commentList' (Id 'comment_list') klass = row_reply 要改变odd even顺序只要改变klassdict就可以了 */ function refreshTopicList(klassdict, klass) { var i; var f = '1'; var tr = document.getElementsByClassName(klass); for (i = 0; i < tr.length; i++) { if (! tr[i].style.display) { tr[i].className = klassdict[f]; f = (-1 * f).toString(); } } } //吐槽箱 左右对齐刷新 function refreshTsukkomi() { var i; var c; var f = '-1'; var klassdict = {'1' : ['rr', 'text_main_odd'], '-1' : ['ll', 'text_main_even']}; var items = getChildNodes(document.getElementById('comment_box')); for (i = 0; i < items.length; i++) { if (! items[i].style.display) { c = getChildNodes(items[i]); c[0].className = klassdict[f][0]; c[1].className = klassdict[f][1]; f = (-1 * f).toString(); } } } //参数 n //groupdiscover 是 1 //subject中间讨论区 是 0 //n控制取哪个tbody //klassdict = {'1' : 'odd', '-1' : 'even'} //讨论区和discover的 dict 相同 function refreshSubSection(klassdict, n) { var i; var j; var td; var f = '1'; var table = document.getElementsByClassName('topic_list')[0]; var tr = getChildNodes(getChildNodes(table)[n]); for (i = 0; i < tr.length; i++) { if (! tr[i].style.display) { td = getChildNodes(tr[i]); for (j = 0; j < td.length; j++) { td[j].className = klassdict[f]; } f = (-1 * f).toString(); } } } //维基编辑页面, class 是 line_even 和 line_odd交错 //没有其他class直接抓li 不能直接用listItems() //klassdict = {'1' : 'line_even', '-1' : 'line_odd'}; //id = 'pagehistory'; function refreshEditPage(klassdict, id) { var i; var f = '1'; var items = getChildNodes(document.getElementById(id)); for (i = 0; i < items.length; i++) { if (! items[i].style.display) { items[i].className = klassdict[f]; f = (-1 * f).toString(); } } } //inbox条纹刷新 //仅仅用在选择隐藏而不是自动删除的情况 //自动删除的话,提交数据后会自动刷新 function refreshInbox() { var i; var k; var td; var f = '1'; var klassdict = {'1' : 'pm_odd', '-1' : 'pm_even'}; var tbd = getChildNodes(document.getElementsByClassName("topic_list")[0])[0]; var tr = getChildNodes(tbd); for (i = 1; i < tr.length - 1; i++) { if (! tr[i].style.display) { td = getChildNodes(tr[i]); td[0].className = [klassdict[f], td[0].className.split(' ')[1]].join(' '); td[1].className = klassdict[f]; f = (-1 * f).toString(); } } } //collections()完成后重新排列 class 'user odd' => 'user' function refreshCollections(oldklass, newklass) { var i; var userlist = document.getElementsByClassName(oldklass); for (i = 0; i < userlist.length; i++) { userlist[i].className = newklass; } } //自动删除邮件 //url / form action pms / erase_pm[] box / 'inbox'|'outbox' function autoDel(url, pms, box) { var i; var form; var inputbox; form = document.createElement("form"); form.setAttribute("method", "post"); form.setAttribute("action", url); inputbox = document.createElement("input"); inputbox.setAttribute("type", "hidden"); inputbox.setAttribute("name", "folder"); inputbox.setAttribute("value", box); form.appendChild(inputbox); for (i = 0; i < pms.length; i++) { inputbox = document.createElement("input"); inputbox.setAttribute("type", "hidden"); inputbox.setAttribute("name", "erase_pm[]"); inputbox.setAttribute("value", pms[i]); form.appendChild(inputbox); } document.body.appendChild(form); form.submit(); } //得到指定上溯层数的父元素 function getParentNode(node, t) { var i = t - 1; var pn = node.parentNode; if (t == 0) { return node; } while (i > 0) { pn = pn.parentNode; i--; } return pn; } //非空白邻近节点(向下) function getNextSibling(node) { var ns = node.nextSibling; while (ns != null && ns.nodeType != 1) { ns = ns.nextSibling; } return ns; } //找到所有非空白子节点 function getChildNodes(node) { var i; var result = []; var cn = node.childNodes; for (i = 0; i < cn.length; i++) { if (cn[i].nodeType != 1) { continue; } result.push(cn[i]); } return result; } //main function hidePosts() { var flag; var url = location.href.split("/"); //用户页 if (url[3] == "user") { if (url.length == 5) { //用户首页 userpage(); //alert("FRONTPAGE / add Button / kira"); } else if (url[5] == "friends" || url[5].indexOf("friends") == 0) { //用户朋友页 flag = listItems('avatar', 3, 'userContainer', 2); if (flag) { refreshCollections('user', 'user'); } //alert("銀河美少年 / kira"); } //用户页面的时间线只对第一页过滤 else if (url[5] == "timeline" || url[5].indexOf("timeline") == 0) { //用户时间线 //listItems('l', 2, 'clearit tml_item', 2); //listItems('l', 3, 'clearit tml_item', 3); //总共两个地方周期检测,还有一个在dollars setInterval(function() { listItems('l', 2, 'clearit tml_item', 2); listItems('l', 3, 'clearit tml_item', 3); },500); //alert("銀河美少年II / kira"); } } //超展开 或 话题页 else if (url[3] == "rakuen") { flag = topic(); if (flag) { refreshTopicList({'1' : 'line_odd item_list', '-1' : 'line_even item_list'}, 'item_list'); } //alert("rukuen"); } else if (url[4] == "topic") { flag = topic(); if (flag) { refreshTopicList({'1' : 'light_even row_reply clearit', '-1' : 'light_odd row_reply clearit'}, 'row_reply'); } //alert("topic"); } //blog else if (url[3] == "blog" || url[3] == "ep") { flag = topic(); if (flag) { refreshTopicList({'1' : 'light_odd row_reply clearit', '-1' : 'light_even row_reply clearit'}, 'row_reply'); } blog(); //alert("url blog"); } //讨论组 else if (url[3] == "group") { if (url[4] == "discover" || url[4].indexOf("discover") == 0) { flag = subSection('a', 2, 'td', 1); if (flag) { refreshSubSection({'1' : 'odd', '-1' : 'even'}, 1); } //alert("group discover"); } else if (url[4] == "my_reply" || url[4].indexOf("my_reply") == 0) { flag = listItems('tip_j', 3, 'subject', 2); if (flag) { refreshTopicList({'1' : 'topic odd', '-1' : 'topic even'}, 'topic'); } } //http://bangumi.tv/group/boring else { flag = listItems('l', 2, 'author', 1); if (flag) { refreshTopicList({'1' : 'topic odd', '-1' : 'topic even'}, 'topic'); } //右上角的最近加入 listItems('l', 2, 'side_port', 2); //alert("url group"); } } //具体条目 else if (url[3] == "subject" && url.length == 5) { //条目首页 listItems('avatar', 1, 'groupsLine', 2); subject(); //alert("url subject"); } //条目各类讨论、评论等 else if (url[3] == "subject" && url.length == 6) { if (url[5] == "index" || url[5].indexOf("index") == 0 ) { //推荐本条目的目录 //http://bangumi.tv/subject/40339/index listItems('avatar', 2, 'clearit tml_item', 2); //alert("subject index chan / kira"); } else if (url[5] == "reviews" || url[5].indexOf("reviews") == 0 ) { //条目的 评论 //http://bangumi.tv/subject/18462/reviews listItems('l', 4, 'item clearit', 4); } else if (url[5] == "comments" || url[5].indexOf("comments") == 0 ) { //条目的 吐槽 //http://bangumi.tv/subject/18462/comments flag = listItems('avatar', 1, 'item clearit', 1); if (flag) { refreshTsukkomi(); } } else if (url[5] == "board" || url[5].indexOf("board") == 0 ) { //条目的 讨论 //http://bangumi.tv/subject/18462/board flag = subSection('a', 2, 'td', 1); if (flag) { refreshSubSection({'1' : 'odd', '-1' : 'even'}, 0); } } else if (url[5] == "edit" || url[5].indexOf("edit") == 0 ) { //条目的 编辑页面 (维基信息页面) //http://bangumi.tv/subject/18462/board //alert('edit page'); flag = listItems('l', 1, 'columns clearit', 4); if (flag) { refreshEditPage({'1' : 'line_even', '-1' : 'line_odd'}, 'pagehistory'); } } else { //条目的 看过、听过、玩过 //http://bangumi.tv/subject/102695/wishes flag = listItems('avatar', 3, 'userContainer', 2); if (flag) { refreshCollections('user', 'user'); } //alert("subject / index"); } } //真实、虚拟 的 人物、公司 else if (url[3] == "person" || url[3] == 'character') { if (url.length == 5) { //人物首页 listItems('avatar', 1, 'groupsLine', 2); flag = topic(); if (flag) { refreshTopicList({'1' : 'light_odd row_reply clearit', '-1' : 'light_even row_reply clearit'}, 'row_reply'); } //alert("person or character"); } else { //人物收藏用户页(全部收藏用户) flag = listItems('port', 3, 'userContainer', 2); if (flag) { refreshCollections('user', 'user'); } //alert("collections"); } } //总目录 或者 个人目录 //http://bangumi.tv/index/17030 //http://bangumi.tv/index else if (url[3] == "index") { //总目录界面 listItems('avatar', 2, 'clearit tml_item', 2); //这个用在个人目录首页 http://bangumi.tv/index/1268 listItems('avatar', 2, 'timeline_img clearit', 3); //topic()用在个人目录详细讨论 http://bangumi.tv/index/xxxxx/comments flag = topic(); if (flag) { refreshTopicList({'1' : 'light_odd row_reply clearit', '-1' : 'light_even row_reply clearit'}, 'row_reply'); } //忘了哪个页面要用blog()了,有可能是失误多写了 blog(); //alert("index"); } //收件箱 else if (url[3] == "pm" || url[3].indexOf('pm') == 0 ) { if (url.length == 4 || url[4].split(".")[0] == "inbox") { mailbox("inbox"); //mailboxHideMail('inbox'); //alert("inbox dayo"); } else if (url[4].split(".")[0] == "view") { pmview(); //alert("pmview dayo"); } else if (url[4].split(".")[0] == "outbox") { mailbox("outbox"); //mailboxHideMail('outbox'); //alert("outbox dayo"); } else if (url[4].split(".")[0] == "compose") { pmcompose(); //alert("pmcompose dayo"); } } //http://bangumi.tv/book //http://bangumi.tv/music //http://bangumi.tv/anime //http://bangumi.tv/game //http://bangumi.tv/game/blog else if (['anime', 'book', 'music', 'game'].indexOf(url[3]) > -1) { //上区域 (blog) flag = listItems('blue', 4, 'entry', 3); if (flag) { refreshTopicList({'1' : 'item odd', '-1' : 'item clearit'}, 'item'); } //下区域 (最新讨论) flag = subSection('a', 2, 'td', 1); if (flag) { refreshSubSection({'1' : 'odd', '-1' : 'even'}, 0); } //中区域 (xxx的好友最近关注的xxx) //如果加了好友,用户界面的屏蔽按钮其实是出不来的 listItems('l', 2, 'coversSmall', 3); //alert('anime book music game'); } //首页时间线 else if (url[3] == '') { listItems('l', 2, 'clearit tml_item', 2); listItems('l', 3, 'clearit tml_item', 3); //alert("timeline"); } //时间线 //http://bangumi.tv/timeline else if (url[3] == 'timeline') { setInterval(function() { listItems('l', 2, 'clearit tml_item', 2); listItems('l', 3, 'clearit tml_item', 3); },500); //alert('timeline'); } //电波提醒 有人提到你 else if (url.length == 8 && url[5] == 'timeline') { listItems('l', 1, 'statusContent', 2); flag = listItems('l', 1, 'statusContent', 3); if (flag) { refreshTopicList({'1' : 'even reply_item', '-1' : 'odd reply_item'}, 'reply_item'); } } //桃乐丝 else if (url[3] == 'dollars' || url[3].indexOf('dollars') == 0) { setInterval(dollars,30); //dollars(); } //维基人首页 else if (url[3] == 'wiki' || url[3].indexOf('wiki') > -1) { listItems('avatar', 2, 'groupsLine', 3); subSection('a', 2, 'small', 1); } else if (url[3] == 'magi' || url[3].indexOf('magi') > -1) { //MAGI问答 listItems('avatar', 2, 'quizInfo clearit', 2); listItems('avatar', 1, 'magiRank', 2); } else if (url[3].indexOf('notify') == 0) { notify(); } //设置 else if (url[3] == "settings") { addSettingBtn(); //setting(); //alert("setting"); } } /* user timeline http://bangumi.tv/user/sincere/timeline home page timeline http://bangumi.tv/ topic list http://bangumi.tv/group/boring 总目录index http://bangumi.tv/index 收藏条目的目录index http://bangumi.tv/subject/40339/index ---替代 0.3.4R--- listitem() / listindex() / timeline(tml) */ /////////////////////////////////////////////////////////// /* 用于用户好友 http://bangumi.tv/user/ehan/friends 收藏真实用户列表 http://bangumi.tv/person/7734/collections 收藏虚拟人物用户列表 http://bangumi.tv/character/21881/collections 收藏游戏用户列表 http://bangumi.tv/subject/88429/collections 听过、玩过、想要 http://bangumi.tv/subject/102695/wishes http://bangumi.tv/subject/102695/collections ---替代 0.3.4R--- friednspage() ---替代 0.4--- collections() */ /////////////////////////////////////////////////////////// /* 具体条目 http://bangumi.tv/subject/18462 person 人物 公司 http://bangumi.tv/person/7734 ---替代 0.3.4R--- person() / subject()左边收藏栏隐藏功能 作用于左边的SimpleSidePanel */ //klass id位置的class, t 上溯隐藏的parentNode层数 //paklass 用于确定是否是用户名的父元素class, pat paklass的上溯层数 //返回变量flag用于判断是否有条目被隐藏,来控制是否刷新条纹界面 // //timeline, index 的 paklass = 'clearit tml_item', pat = 2 //bangumi.tv/group/boring中 paklass = 'author', pat = 1 // //collections中 paklass = 'userContainer', pat = 2 // //SimpleSidePanel中 klass = 'avatar', t = 1, paklass = 'groupsLine', pat = 2 // function listItems(klass, t, paklass, pat) { var i; var flag = false; var avatar = document.getElementsByClassName(klass); for (i = 0; i < avatar.length; i++) { if (getParentNode(avatar[i], pat).className == paklass && avatar[i].href.split("/")[3] == 'user' && testBlockedOrNot(avatar[i].href.split("/")[4])) { getParentNode(avatar[i], t).style.display = 'none'; flag = true; } } return flag; } /* 具体条目 http://bangumi.tv/subject/18462 group discover http://bangumi.tv/group/discover ---替代0.3.4R--- subject()部分隐藏讨论版功能 ---替代0.4.2--- groupdiscover() */ //没有class,直接用a标签定位,上溯到某个tagName //用法类同listItems() //tag tag位置, t 上溯隐藏的parentNode层数 //patag 用于确定是否是用户名的父元素tag, pat patag的上溯层数 //返回变量flag用于判断是否有条目被隐藏,来控制是否刷新条纹界面 // function subSection(tag, t, patag, pat) { var i; var flag = false; var topiclist = document.getElementsByTagName(tag); for (i = 0; i < topiclist.length; i++) { if (getParentNode(topiclist[i], pat).tagName.toLowerCase() == patag && topiclist[i].href.split('/')[3] == 'user' && testBlockedOrNot(topiclist[i].href.split('/')[4])) { getParentNode(topiclist[i], t).style.display = 'none'; flag = true; } } return flag; } //dollars function dollars() { var i; var bgurl; var avatar = document.getElementsByClassName('avatar'); for (i = 0; i < avatar.length; i++) { bgurl = avatar[i].src.split("/")[9]; if (bgurl == undefined) { continue; } if (testBlockedOrNot(bgurl.split(".")[0])) { getParentNode(avatar[i], 2).style.display = 'none'; } } } //添加设置 function addSettingBtn() { var sectab = document.getElementsByClassName('secTab')[0]; injectFunc(bksetting); injectFunc(bkbackup); injectFunc(exportData); injectFunc(importData); injectFunc(importInterface); injectFunc(getChildNodes); injectFunc(getParentNode); injectFunc(getData); injectFunc(delAvatar); injectFunc(searchAvatar); injectFunc(checkAll); injectFunc(uncheckAll); injectFunc(batchDelete); sectab.innerHTML = '
  • \ 屏蔽设置
  • \
  • \ 导入/导出
  • ' + sectab.innerHTML; } function checkAll() { var i; var inputbox = document.getElementsByClassName('selectable'); for (i = 0; i < inputbox.length; i++) { inputbox[i].checked = true; } } function uncheckAll() { var i; var inputbox = document.getElementsByClassName('selectable'); for (i = 0; i < inputbox.length; i++) { inputbox[i].checked = false; } } function batchDelete() { var i; var id1; var id2; var index1; var index2; var shikabane = getData('koroshimashita'); var ids = document.getElementsByClassName('selectable'); //alert(ids.length); for (i = 0; i < ids.length; i++) { //alert(ids[i].checked); if (ids[i].checked) { id1 = ids[i].value.split('/')[0]; id2 = ids[i].value.split('/')[1]; //alert(id1); //alert(id2); if (id1 == id2) { index1 = shikabane.indexOf(id1); shikabane.splice(index1, 1); } else { index1 = shikabane.indexOf(id1); shikabane.splice(index1, 1); index2 = shikabane.indexOf(id2); shikabane.splice(index2, 1); } delAvatar(id1); } } //alert(shikabane); localStorage.setItem("koroshimashita", shikabane); //alert(getData('shitainoavatars')); //alert('完成'); bksetting(false); } function bksetting(flag) { var i; var users; var id1; var id2; var avatar; var ulst; var temp = ''; var btns; var column = document.getElementById('columnA'); var robot = document.getElementById('robot_speech'); var roboshell = getChildNodes(document.getElementById('ukagaka_shell'))[0]; var sectab = document.getElementsByClassName('secTab')[0]; getChildNodes(document.getElementById('header'))[1].innerHTML = '屏蔽设置'; document.getElementById('columnB').style.display = 'none'; column.style.display = 'none'; btns = getChildNodes(sectab); getChildNodes(btns[0])[0].className = 'selected'; for (i = 1; i < btns.length; i++) { getChildNodes(btns[i])[0].className = ''; } //春菜如果太小,下面的北斗会看不到 roboshell.className = 'ui_10 shell_1'; // users = getData('koroshimashita'); ulst = users; temp = '
    '; temp += ''; temp += ''; temp += ''; column.innerHTML = temp; column.style.display = 'block'; // // //speech if (flag) { robot.innerHTML = '#############   Y
    ' + '#####★#######   O
    ' + '#########★###   U
    ' + '#############   
    ' + '########★####   は
    ' + '#####★#######   
    ' + '#############   S
    ' + '####★########   H
    ' + '#############   O
    ' + '###★#########   C
    ' + '#############   K
    ' + '#####★#######   
    ' + '#############  #^﹃^#'; } else { robot.innerHTML = 'くすぐられたよ my 僅かな母性本能'; } } function bkbackup() { var i; var btns; var temp; var column = document.getElementById('columnA'); var robot = document.getElementById('robot_speech'); var roboshell = getChildNodes(document.getElementById('ukagaka_shell'))[0]; var sectab = document.getElementsByClassName('secTab')[0]; var header = document.getElementById('header'); getChildNodes(header)[1].innerHTML = '屏蔽列表导入/导出'; document.getElementById('columnB').style.display = 'none'; column.style.display = 'none'; btns = getChildNodes(sectab); getChildNodes(btns[1])[0].className = 'selected'; getChildNodes(btns[0])[0].className = ''; for (i = 2; i < btns.length; i++) { getChildNodes(btns[i])[0].className = ''; } //春菜如果太小,下面的北斗会看不到 roboshell.className = 'ui_10 shell_1'; // temp = '' + ''; column.innerHTML = temp; column.style.display = 'block'; robot.innerHTML = '撩起了 my那一点母性本能'; } function exportData() { var conj_outer = '-|-I HOPE YOU LIVE A LIFE YOU ARE PROUD OF. ' + 'IF YOU FIND THAT YOU ARE NOT, I HOPE YOU HAVE ' + 'THE STRENGTH TO START ALL OVER AGAIN-|-'; var conj_mid = '-|-gochuumon wa usagi desu ka-|-' var text = '嘟嘟噜' + conj_outer; var robot = document.getElementById('robot_speech'); var roboshell = getChildNodes(document.getElementById('ukagaka_shell'))[0]; var columna = document.getElementById('columnA'); var shikabane = localStorage.getItem('koroshimashita'); var avatars = localStorage.getItem('shitainoavatars'); //若先使用导入,再进入导出时可以归位 bkbackup(); if (shikabane == null || shikabane == '') { //alert('还没有屏蔽任何人,先抓个试试?'); robot.style.display = 'block'; robot.innerHTML = 'Master! 还没有屏蔽任何人,先抓个试试?'; return false; } else { shikabane = shikabane.split(",").join(conj_mid); } avatars = avatars.split(",").join(conj_mid); text += [shikabane, avatars].join(conj_outer) + conj_outer + '嘟嘟噜'; columna.innerHTML += '

    ' + text + '
    '; //切换春菜为克莱克本樱 roboshell.className = 'ui_11 shell_22'; robot.innerHTML = '请复制到随便什么地方
    反正别让我给找到了,哼哼~'; } function importInterface() { var robot = document.getElementById('robot_speech'); var columna = document.getElementById('columnA'); var temp = '

    '; temp += ''; //alert(columna.outerHTML); bkbackup(); columna.innerHTML = columna.innerHTML + temp; robot.innerHTML = 'くすぐられたよ my 僅かな母性本能'; } function importData() { var shikabane; var avatars; var robot = document.getElementById('robot_speech'); var data = document.getElementById('ryououki').value; var columna = document.getElementById('columnA'); var text = data.trim(); //alert(text); var conj_outer = '-|-I HOPE YOU LIVE A LIFE YOU ARE PROUD OF. ' + 'IF YOU FIND THAT YOU ARE NOT, I HOPE YOU HAVE ' + 'THE STRENGTH TO START ALL OVER AGAIN-|-'; var conj_mid = '-|-gochuumon wa usagi desu ka-|-' if (text == '') { robot.innerHTML = '请输入'; return false; } text = text.split('嘟嘟噜')[1]; //alert(text); shikabane = text.split(conj_outer)[1].split(conj_mid); //alert(shikabane); //alert(shikabane.length); avatars = text.split(conj_outer)[2].split(conj_mid); //alert(avatars); //alert(avatars.length); localStorage.setItem('koroshimashita', shikabane); localStorage.setItem('shitainoavatars', avatars); bkbackup(); getParentNode(robot, 5).style.display = 'block'; robot.innerHTML = '导入完成'; } hidePosts();