// ==UserScript== // @name 绯月黑名单 // @namespace https://greasyfork.org/zh-CN/users/453092 // @version 1.0.1 // @description 眼不见为净 // @author ikarosf // @require https://unpkg.com/dexie@latest/dist/dexie.js // @require https://unpkg.com/dexie-export-import@latest/dist/dexie-export-import.js // @match https://bbs.fygal.com/* // @match https://bbs.bakabbs.com/* // @match https://bbs.365gal.com/* // @match https://bbs.365galgame.com/* // @match https://bbs.kfmax.com/* // @match https://bbs.9shenmi.com/* // @match https://bbs.kfpromax.com/* // @match https://kf.miaola.work/* // @match https://m.miaola.work/* // @grant GM_getResourceText // @grant GM_xmlhttpRequest // @grant unsafeWindow // @grant GM_setValue // @grant GM_getValue // @grant GM_addStyle // @grant GM_listValues // @downloadURL none // ==/UserScript== async function kf_index_check(){ var main_post_list_parentdiv = $("#alldiv>div:eq(2)>div:eq(1)>div:eq(0)") main_post_list_parentdiv.children().each(async function () { var thispost = $(this).find("a:first") var name = thispost.attr("uname") var itemobj = getQueryString(thispost.attr("href")) var tid = itemobj["tid"] //console.log(tid + " " + name) if(black_set.has(name)){ $(this).hide(); console.log("hide " + name) } await db_add_postdata(tid,name) }); } async function kf_left_check(){ $(".rightboxa>a").each(async function () { var url = $(this).attr("href") var itemobj = getQueryString(url) var tid = itemobj["tid"] var name = await db_get_poster(tid) if(name == ""){ var newname = await html_get_poster(url) if(newname){ if(black_set.has(newname)){ $(this).hide(); $(this).next().hide(); console.log("hide " + newname) } await db_add_postdata(tid,newname) } }else{ if(black_set.has(name)){ $(this).hide(); $(this).next().hide(); console.log("hide " + name) } } }) } async function kf_thread_check(){ //$(".thread1>tbody>tr").find("td:eq(3)>a") $("a.bl").each(function(){ var name = $(this).text() if(black_set.has(name)){ $(this).closest("tr").hide() console.log("hide " + name) } }) } async function kf_post_check(){ $(".readtext").each(function(){ var name = $(this).find(".readidmsbottom:first>a").text() if(black_set.has(name)){ $(this).hide() console.log("hide " + name) } }) } function init_ui(){ var menubutton= document.createElement('li') menubutton.innerHTML = '黑名单' document.getElementsByClassName("topmenuo7")[0].children[0].append(menubutton) $("").html(dialog_css).appendTo($("head")); $(``).appendTo($("body")); function addtolist(name){ $(`
  • 删除
  • `).appendTo($("#fBlockUserList")); $(".pd_delete").on("click",async function (e) { e.preventDefault(); var name = $(this).prev().val() await db.blacklist.where({name:name}).delete() black_set.delete(name) $(this).parent().remove() }) } for (let name of black_set) { addtolist(name) } $("#fBlockUserDialogClose").on("click",function (e) { $("#fBlockUserDialog").fadeOut(200) }) $("#fAddBlockUserButton").on("click",async function (e) { e.preventDefault(); var name = $("#fAddBlockUser").val() if(!name || black_set.has(name)) return await db.blacklist.add({name:name}) black_set.add(name) addtolist(name) $("#fAddBlockUser").val("") }) $(menubutton).on("click",function (e) { e.preventDefault(); $("#fBlockUserDialog").toggle() }) } function miaola_get_tid(url){ var reg = /[0-9]+/g var numberlist = url.match(reg) return numberlist[0] } async function miaola_index_check(){ async function miaola_index_do(){ var thispost = $(this).children("a:first") var name = thispost.attr("data-author") var tid = miaola_get_tid(thispost.attr("href")) //console.log(tid + " " + name) if(black_set.has(name)){ $(this).hide(); console.log("hide " + name) } await db_add_postdata(tid,name) } var panel1 = $("#newReplyPanel1") var panel2 = $("#newReplyPanel2") var panel3 = $("#newReplyPanel3") panel1.children().each(miaola_index_do) panel2.children().each(miaola_index_do) panel3.children().each(miaola_index_do) } async function miaola_bottom_check(){ async function miaola_bottom_do() { var thispost = $(this).children("a:first") var url = thispost.attr("href") var tid = miaola_get_tid(url) var name = await db_get_poster(tid) if(name == ""){ var newname = await miaola_get_poster(url) if(newname){ if(black_set.has(newname)){ $(this).hide(); console.log("hide " + newname) } await db_add_postdata(tid,newname) } }else{ if(black_set.has(name)){ $(this).hide(); console.log("hide " + name) } } } $("#newExtraPanel1").children().each(miaola_bottom_do) $("#newExtraPanel2").children().each(miaola_bottom_do) } function miaola_post_check(){ $(".read-floor").each(function(){ var name = $(this).find(".floor-user").text().trim(); if(black_set.has(name)){ $(this).hide() console.log("hide " + name) } }) } function miaola_thread_check(){ $(".thread-list-item").each(function(){ var name = $(this).find(".fa-user").parent().text().trim() if(black_set.has(name)){ $(this).hide() console.log("hide " + name) } }) } function init_ui_miaola(){ $(miaola_dialoghtml).appendTo($("body")) $(``).appendTo($("body ul:first")) $("#openBlackDialog").on("click",async function (e) { e.preventDefault(); $('#mainMenuTogglerBtn').click(); $("#fblockUserDialog").toggle() }) $("#fCloseBlockUserDialog").on("click",async function (e) { e.preventDefault(); $("#fblockUserDialog").fadeOut(200) }) function addtolist(name){ $(miaola_linehtml.format(name)).appendTo($("#fblockUserList")); $(".pd_delete").on("click",async function (e) { e.preventDefault(); var name = $(this).prev().find("input").val() await db.blacklist.where({name:name}).delete() black_set.delete(name) $(this).parent().remove() }) } for (let name of black_set) { addtolist(name) } $("#fAddBlockUserButton").on("click",async function (e) { e.preventDefault(); var name = $("#fAddBlockUser").val() if(!name || black_set.has(name)) return await db.blacklist.add({name:name}) black_set.add(name) addtolist(name) $("#fAddBlockUser").val("") }) } async function init_db(){ db.version(1).stores({ blacklist: "++id,&name", postdata:"++id,&tid,time" }); await db.blacklist .each(async blackline => { black_set.add(blackline.name) }); } async function db_add_postdata(tid,name){ var now = getLocDate(); try { await db.postdata.add({tid:tid, name:name, time:now}); }catch(err) { } } async function db_get_poster(tid){ var data = await db.postdata.where({tid:tid}).first() if(data){ return data["name"] } return "" } async function db_clear(dayss){ console.log(dayss) var during_s = dayss * 24 * 60 * 60 * 1000 var now = getLocDate() var old = new Date(now - during_s) await db.postdata.where("time").belowOrEqual(old).delete() } async function html_get_poster(url){ return new Promise((resolve, reject)=>{ console.log("getnewpost:" + url) setTimeout(resolve, 10*1000) GM_xmlhttpRequest({ method: "get", url: unsafeWindow.location.origin + "/" + url, headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' }, onload: function(res){ if(res.status === 200){ let info = res.responseText; //console.log(info) var name = $(info).find(".readtext a:first").text() resolve(name) }else{ console.log(res) } resolve() }, onerror : function(err){ console.log(err) resolve() }, ontimeout : function(){ resolve() } }); }) //Promise end } async function miaola_get_poster(url){ return new Promise((resolve, reject)=>{ console.log("getnewpost:" + url) setTimeout(resolve, 10*1000) GM_xmlhttpRequest({ method: "get", url: unsafeWindow.location.origin + url, headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' }, onload: function(res){ if(res.status === 200){ let info = res.responseText; //console.log(info) var name = $(info).find(".read-floor .floor-user:first").text().trim(); resolve(name) }else{ console.log(res) } resolve() }, onerror : function(err){ console.log(err) resolve() }, ontimeout : function(){ resolve() } }); }) //Promise end } function init_string(){ dialog_css = ` /* 公共 */ .pd_highlight { color: #f00 !important; } .pd_notice, .pd_msg .pd_notice { font-style: italic; color: #666; } .pd_input, .pd_cfg_main input, .pd_cfg_main select { vertical-align: middle; height: auto; margin-right: 0; line-height: 22px; font-size: 12px; } .pd_input[type="text"], .pd_input[type="number"], .pd_cfg_main input[type="text"], .pd_cfg_main input[type="number"] { height: 22px; line-height: 22px; } .pd_input:focus, .pd_cfg_main input[type="text"]:focus, .pd_cfg_main input[type="number"]:focus, .pd_cfg_main textarea:focus, .pd_textarea:focus { border-color: #7eb4ea; } .pd_textarea, .pd_cfg_main textarea { border: 1px solid #ccc; font-size: 12px; } .pd_btn_link { margin-left: 4px; margin-right: 4px; } /* 设置对话框 */ .pd_cfg_ml { margin-left: 10px; } .pd_cfg_box { position: fixed; border: 1px solid #9191ff; display: none; z-index: 1002; -webkit-box-shadow: 0px 5px 15px rgba(0, 0, 0, 0.5); -moz-box-shadow: 0px 5px 15px rgba(0, 0, 0, 0.5); box-shadow: 0px 5px 15px rgba(0, 0, 0, 0.5); } .pd_cfg_box h1 { text-align: center; font-size: 14px; background-color: #9191ff; color: #fff; line-height: 2em; margin: 0; padding-left: 20px; } .pd_cfg_box h1 span { float: right; cursor: pointer; padding: 0 10px; } .pd_cfg_nav { text-align: right; margin-top: 5px; margin-bottom: -5px; } .pd_cfg_main { background-color: #fcfcfc; padding: 0 10px; font-size: 12px; line-height: 24px; min-height: 50px; overflow: auto; } .pd_cfg_main fieldset { border: 1px solid #ccccff; padding: 0 6px 6px; } .pd_cfg_main legend { font-weight: bold; } .pd_cfg_main input[type="color"] { height: 18px; width: 30px; padding: 0; } .pd_cfg_tips { color: #51d; text-decoration: none; cursor: help; } .pd_cfg_tips:hover { color: #ff0000; } #pdConfigDialog .pd_cfg_main { overflow-x: hidden; white-space: nowrap; } .pd_cfg_panel { display: inline-block; width: 400px; vertical-align: top; } .pd_cfg_panel + .pd_cfg_panel { margin-left: 5px; } .pd_cfg_btns { background-color: #fcfcfc; text-align: right; padding: 5px; } .pd_cfg_btns input, .pd_cfg_btns button { vertical-align: middle; } .pd_cfg_btns button { min-width: 80px; } .pd_cfg_about { float: left; line-height: 24px; margin-left: 5px; } .pd_custom_script_header { margin: 7px 0; padding: 5px; background-color: #e8e8e8; border-radius: 5px; } .pd_custom_script_content { display: none; width: 750px; height: 350px; white-space: pre; } `; miaola_dialoghtml = `