// ==UserScript== // @name MT论坛 // @namespace http://tampermonkey.net/ // @description MT论坛效果增强,如自动签到、自动展开帖子、滚动加载评论、显示uid、屏蔽用户、手机版小黑屋、今日签到之星、今日签到排名、帖外预览图片、搜索框清空按钮修复、个人空间正确进入、康哥图床-帖子内(20MB)、Hello图床-帖子内(20MB)、Z4A图床-帖子内(50MB)、康哥图床-聊天内(20MB)、Hello图床-聊天内(20MB)、Z4A图床-聊天内(50MB)、付费主题白嫖提醒等 // @version 2.4.6.4 // @author WhiteSevs // @icon https://bbs.binmt.cc/favicon.ico // @match *://bbs.binmt.cc/* // @compatible edge Beta/Dev/Candy 测试通过 // @compatible 火狐 测试通过 // @compatible Yandex 测试通过 // @compatible Kiwi 测试通过 // @license GPL-3.0-only // @grant GM_addStyle // @grant GM_setValue // @grant GM_getValue // @grant GM_deleteValue // @grant GM_setClipboard // @grant GM_xmlhttpRequest // @run-at document-start // @supportURL https://github.com/893177236/Monkey_script // @require https://lf26-cdn-tos.bytecdntp.com/cdn/expire-1-M/jquery/3.4.1/jquery.min.js // @require https://lf26-cdn-tos.bytecdntp.com/cdn/expire-1-M/nanogallery2/3.0.5/jquery.nanogallery2.min.js // @require https://greasyfork.org/scripts/441331-md5/code/md5.js?version=1026891 // @downloadURL none // ==/UserScript== (function () { 'use strict'; const log = { success: (str) => { console.log("%c" + str, "color: #81b453"); }, error: (str) => { console.trace("%c" + str, "color: #f20000"); } } let mt_config = { dom_obj: { beauty_select: function () { //下拉列表对象 return document.getElementsByClassName("beauty-select")[0]; }, combobox_switch: function () { //复选框对象 return document.getElementsByClassName("whitesevcheckbox")[0]; }, comiis_verify: function () { //帖子内各个人的信息节点【list】 return document.getElementsByClassName("comiis_verify"); }, comiis_formlist: function () { //导航中最新、热门、精华、恢复、抢沙发的各个帖子【list】 return document.getElementsByClassName("forumlist_li"); }, comiis_mmlist: function () { return document.getElementsByClassName("comiis_mmlist"); }, comiis_postli: function () { //帖子内评论,包括帖子内容主体,第一个就是主体【list】 return document.getElementsByClassName("comiis_postli comiis_list_readimgs nfqsqi") }, post_bottom_controls: function () { // 帖子底部一栏控件 return document.getElementsByClassName("comiis_znalist_bottom b_t cl") }, post_list_of_comments: function () { //帖子内评论列表 return $(".comiis_postlist.kqide"); }, post_next_commect: function () { //帖子内评论下一页的按钮 return document.querySelector("div.comiis_page.bg_f>a:nth-child(3)"); } }, rexp: { search_url: /bbs.binmt.cc\/search.php/g, //搜索页 chat_url: /home.php\?mod=space&do=pm&subop=view/g, // 聊天页 home_url: /home.php\?mod=spacecp&ac=profile&op=info/g, //个人空间页 home_url_brief: /home.php\?mod=space/g, //个人空间页简略url home_kmisign_url: /bbs.binmt.cc\/(forum.php\?mod=guide&view=hot(|&mobile=2)|k_misign-sign.html)/g, //主页和签到页链接 home_space_url: /bbs\.binmt\.cc\/home\.php\?mod=space/g, //【我的】 个人信息页链接 home_space_pc_uid_url: /space-uid-(.*?).html/, //PC 个人空间链接uid reply_forum: /bbs.binmt.cc\/forum.php\?mod=post&action=reply/g, // 回复的界面url sign_url: "", navigation_url: "", community_url: /forum.php\?forumlist/, //社区 forum_post: /(bbs.binmt.cc\/thread-|bbs.binmt.cc\/forum.php\?mod=viewthread)/g, //帖子链接 forum_post_pc: /.*:\/\/bbs.binmt.cc\/thread.*/, //帖子链接-PC forum_guide_url: /bbs.binmt.cc\/forum.php\?mod=guide/g, // 导航链接 forum_post_reply: /forum.php\?mod=post&action=reply/g, //帖子中回复的链接 forum_post_page: '&page=(.*)', //帖子链接的当前所在页 page forum_post_pc_page: 'thread-(.*?)-', //PC帖子链接的当前所在页 page forum_plate_text: /休闲灌水|求助问答|逆向教程|资源共享|综合交流|编程开发|玩机教程|建议反馈/g, //各版块名称 plate_url: /bbs.binmt.cc\/forum-[0-9]{1,2}-[0-9]{1,2}.html/g, // 板块链接 formhash: /formhash=(.*)&/, //论坛账号的凭证 font_special: /| ||<\/font>|||||align=".*?"/g, //帖子内特殊字体格式 forum_post_guide_url: /bbs.binmt.cc\/page-[1-5].html|bbs.binmt.cc\/forum.php\?mod=guide/g, //帖子链接和导航链接 mt_uid: /uid=(\d+)/, nologin: /member.php\?mod=logging&action=login(|&mobile=2)/g, //未登录 pc_useragent: 'Windows', //pc识别 k_misign_sign: "bbs.binmt.cc\/k_misign-sign.html", post_forum: /forum.php\?mod=post&action=newthread/, // 发布帖子 edit_forum: /forum.php\?mod=post&action=edit/, // 编辑帖子 } } // mt全屏遮罩调用 // popup.open(''); // 关闭方式 // popup.close() let utils = { dateStringFormatToStamp(datastring) { let date = datastring; date = date.substring(0, 19); date = date.replace(/-/g, '/'); let timestamp = new Date(date).getTime(); // let newDate = new Date(timestamp); return timestamp; }, timeStringFormatToStamp(timestring) { let today = new Date(); let date = today.getFullYear() + "-" + (today.getMonth() + 1) + "-" + today.getDate() + " " + timestring; date = date.substring(0, 19); date = date.replace(/-/g, '/'); let timestamp = new Date(date).getTime(); // let newDate = new Date(timestamp); return timestamp }, listCompareDescByValue(propertyName) { // json根据 字段(int)降序 return function (object1, object2) { var value1 = object1[propertyName]; var value2 = object2[propertyName]; if (value2 < value1) { return -1; } else if (value2 > value1) { return 1; } else { return 0; } } }, listCompareAscByValue(propertyName) { // json根据 字段(int)升 return function (object1, object2) { var value1 = object1[propertyName]; var value2 = object2[propertyName]; if (value2 > value1) { //-1表示前对象小,1表示后对象小,0表示相等 return -1; } else if (value2 < value1) { return 1; } else { return 0; } } }, listToStringByValue(_list_, propertyName) { // json根据 字段(int)合并 let content = ""; Array.from(_list_).forEach((item) => { content = content + item[propertyName]; }) return content } } async function compatiblePartialFunction() { // 兼容部分函数 GM_xmlhttpRequest没有兼容,跨域,考虑fetch,还是算了 if (typeof GM_getValue == "undefined") { window.GM_getValue = (key) => { window.localStorage.getItem(key); } } if (typeof GM_setValue == "undefined") { window.GM_setValue = (key, value) => { window.localStorage.setItem(key, value); } } if (typeof GM_deleteValue == "undefined") { window.GM_deleteValue = (key) => { window.localStorage.removeItem(key); } } if (typeof GM_addStyle == "undefined") { window.GM_addStyle = (styleText) => { let cssDOM = document.createElement("style"); cssDOM.setAttribute("type", "text/css"); cssDOM.innerHTML = styleText; document.head.appendChild(cssDOM); } } if (typeof GM_setClipboard == "undefined") { window.GM_setClipboard = (text) => { let clipBoardDOM = document.createElement("input"); clipBoardDOM.type = "text"; clipBoardDOM.setAttribute("style", "opacity:0;position:absolute;"); clipBoardDOM.id = "whitesevClipBoardInput"; document.body.append(clipBoardDOM); $("#whitesevClipBoardInput").val(text); $("#whitesevClipBoardInput").removeAttr("disabled").select(); document.execCommand('copy'); $('#whitesevClipBoardInput').remove(); } } if(typeof $ == "undefined"){ await loadNetworkResource("https://lf26-cdn-tos.bytecdntp.com/cdn/expire-1-M/jquery/3.4.1/jquery.min.js"); } if(typeof $.nanogallery2 == "undefined"){ await loadNetworkResource("https://lf26-cdn-tos.bytecdntp.com/cdn/expire-1-M/nanogallery2/3.0.5/jquery.nanogallery2.min.js"); } if(typeof hex_md5 == "undefined"){ await loadNetworkResource("https://greasyfork.org/scripts/441331-md5/code/md5.js?version=1026891"); } var loadNetworkResource = []; window.GM_asyncLoadScript = (url)=>{ // 异步执行js资源 if(loadNetworkResource.indexOf(url) != -1){ console.log("已加载该js:",url); return } loadNetworkResource = loadNetworkResource.concat(url); return new Promise(res => { GM_xmlhttpRequest({ url: url, method: "GET", async: false, timeout: 10000, onload: (r) => { window.eval(r.response); eval(r.response); evalscript(r.response); res(true); }, onerror: () => { log.error("网络异常,加载JS失败",url); popup.open("网络异常,加载JS失败"); res(false); } }) }) } window.GM_asyncLoadStyleSheet = (url) =>{ // 异步添加css资源 if(loadNetworkResource.indexOf(url) != -1){ console.log("已加载该css:",url); return } loadNetworkResource = loadNetworkResource.concat(url); GM_xmlhttpRequest({ url: url, method: "GET", async: false, timeout: 10000, onload: (r) => { GM_addStyle(r.response); }, onerror: () => { popup.open("网络异常,加载CSS失败"); } }) } } function tryCatch(func, params, errorFunc) { // 捕获错误 try { func(params); } catch (error) { console.log("%c" + (func.name + "出现错误"), "color: #f20000"); console.log("%c" + ("错误原因:" + error), "color: #f20000"); window.eval(errorFunc); } } async function loadCheckboxTipResource() { // 加载checkbox值变化的显示的提示的资源 await GM_asyncLoadScript("https://whitesev.gitee.io/static_resource/ios_loading/js/iosOverlay.js"); await GM_asyncLoadStyleSheet("https://whitesev.gitee.io/static_resource/ios_loading/css/iosOverlay.css"); } function repairPCNoLoadResource() { // 修复电脑版未加载的js资源 GM_asyncLoadScript("https://cdn2.bbs.binmt.cc/static/js/smilies.js?x6L"); GM_asyncLoadScript("https://cdn2.bbs.binmt.cc/static/js/common.js?x6L"); } function latestReleaseForumPost() { // 最新发表 var ele = document.createElement('li'); var url = window.location.href; ele.id = "latest_publication"; ele.innerHTML = '最新发表<\/a>'; document.getElementsByClassName("wp comiis_nvbox cl")[0].children[1].appendChild(ele); if (url == 'https:\/\/bbs.binmt.cc\/forum.php?mod=guide&view=newthread') { document.getElementById("mn_forum_10").children[0].style = "background: url("; ele.style.cssText = 'background: url("https:\/\/cdn2.bbs.binmt.cc\/template\/comiis_mi\/img\/nv_a.png") repeat-x 50% -50px;'; } } function removeForumPostFontStyle() { // 移除帖子内的字体style if (GM_getValue("v1") && location.href.match(mt_config.rexp.forum_post)) { var rule = mt_config.rexp.font_special; var h_content = document.getElementsByClassName("comiis_a comiis_message_table cl"); h_content[0].innerHTML = h_content[0].innerHTML.replace(rule, ''); } } function autoSignIn() { //mt签到 function getFormHash() { // 获取账号的formhash return document.querySelector("input[name=formhash]") ? document.querySelector("input[name=formhash]").value : document.querySelector("div[class=sidenv_exit]>a").href.match(mt_config.rexp.formhash)[1]; } function getLocalTime() { // 获取当前时间 let GM_myDate = new Date; let GM_year = GM_myDate.getFullYear(); //获取当前年 let GM_mon = GM_myDate.getMonth() + 1; //获取当前月 let GM_date = GM_myDate.getDate(); let GM_alldate = GM_year.toString() + GM_mon.toString() + GM_date.toString(); GM_alldate = parseInt(GM_alldate); return GM_alldate } if (!GM_getValue("v17")) { console.log("尚未开启每日签到"); return; } if (GM_getValue("mt_sign") == getLocalTime()) { console.log("今日已签到"); return; } if ((document.querySelector("div[class=comiis_dlq]>a") != null) || (document.getElementsByClassName("sidenv_user")[0].href.match(mt_config.rexp.nologin) != null)) { console.log("当前账号尚未登录"); return; } let mtFormHash = getFormHash(); if (mtFormHash == null) { console.log("获取账号formhash失败"); return; } $.get("/k_misign-sign.html?operation=qiandao&format=button&formhash=" + mtFormHash + "&inajax=1&ajaxtarget=midaben_sign", function (data, status) { console.log(data.responseText); GM_setValue("mt_sign", getLocalTime()); window.location.reload(); }); } function searchHistory() { // 搜索历史 if (GM_getValue("v19") && location.href.match(mt_config.rexp.search_url)) { function search_event() { // 搜索历史事件 //搜索界面增加关闭按钮事件,清空input内容 //点击搜索保存搜索记录 $("#scform_submit").click(function () { let getsearchtext = $("#scform_srchtxt").val(); if ((getsearchtext != null) && (getsearchtext != "")) { let search_history_array = new Array(getsearchtext); let has_history = GM_getValue("search_history"); if (has_history != null) { if ($.inArray(getsearchtext, has_history) != -1) { console.log("已有该搜索历史记录") search_history_array = has_history } else { console.log("无该记录,追加"); search_history_array = search_history_array.concat(has_history); } } else { console.log("空记录,添加") } GM_setValue("search_history", search_history_array); } }) } function add_search_history() { //搜索界面添加搜索历史记录 $("#scform_srchtxt").attr("list", "search_history"); var search_history_list = GM_getValue("search_history"); var dom_datalist = document.createElement("datalist"); dom_datalist.id = "search_history"; var option_text = ""; if (search_history_list) { for (var i = 0; i < search_history_list.length; i++) { option_text = option_text + ''; } dom_datalist.innerHTML = option_text; $(".comiis_flex").append(dom_datalist); } } function add_clear_history() { //搜索界面添加清理历史记录和历史记录个数 let search_history_list = GM_getValue("search_history"); let search_history_nums = 0; if (search_history_list != null) { search_history_nums = search_history_list.length; } let clear_history_innerHTML = `搜索记录个数: ` + search_history_nums + `清理记录`; let insertdom = $(".comiis_p12.f14.bg_f.f_c.b_b.cl,.comiis_tagtit.b_b.f_c"); insertdom.before(clear_history_innerHTML); $(".btn_clear_search_history").click(function () { GM_deleteValue("search_history"); window.location.reload(); }) } search_event(); add_search_history(); add_clear_history(); } } function showTodayStar() { // 显示今日之星,在签到页上 if (GM_getValue("v33") && window.location.href.match(mt_config.rexp.k_misign_sign)) { let todayStarParent = $(".pg_k_misign .comiis_qdinfo"); let todayStar = document.createElement("ul"); GM_xmlhttpRequest({ url: "/k_misign-sign.html", method: 'get', async: false, headers: { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36 Edg/101.0.1210.53" }, onload: (r) => { let html = $(r.response); let todatastarele = html.find("#pt span.xg1"); let todaypeople = todatastarele[0].textContent.replace("今日签到之星:", ''); todayStar.innerHTML = '今日签到之星' + todaypeople + ''; let comiis_space_box_height = getComputedStyle($(".comiis_space_box")[0], null)["height"].replace("px", ""); let comiis_space_box_padding_bottom = getComputedStyle($(".comiis_space_box")[0], null)["padding-bottom"].replace("px", ""); comiis_space_box_height = parseInt(comiis_space_box_height); comiis_space_box_padding_bottom = parseInt(comiis_space_box_padding_bottom); let total_height = comiis_space_box_height + comiis_space_box_padding_bottom + 50; GM_addStyle(` .comiis_space_box{ height: ${total_height}px; background-size: 100% 100%; } .pg_k_misign .comiis_qdinfo{ height: 110px !important; }`); todayStarParent.append(todayStar); }, onerror: (r) => { console.log(r); log.error("请求今日之星失败"); } }) } } function showSignInRanking() { // 显示签到的最先几个人,最多10个,和顶部的今日签到之星 if (window.location.href.match(mt_config.rexp.k_misign_sign)) { let today_ranking_ele = document.querySelector(".comiis_topnv .comiis_flex .flex"); today_ranking_ele.after($(`今日最先`)[0]); let getMaxPage = (urlextra) => { return new Promise(res => { GM_xmlhttpRequest({ url: "https://bbs.binmt.cc/k_misign-sign.html?operation=" + urlextra, async: false, dataType: 'html', headers: { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36 Edg/101.0.1210.53" }, onload: function (resp) { let last_url = $(resp.response).find("#J_list_detail .pg .last")[0].href; let last_page = last_url.match(/page=([0-9]*)/)[1]; res(last_page); // console.log(data); // $("#ranklist").html(data); // $('#ranklist').attr('listtype', listtype); }, onerror: function (resp) { console.log(resp); res(0); } }) }) } let getPagePeople = (page) => { return new Promise(res => { GM_xmlhttpRequest({ url: "https://bbs.binmt.cc/k_misign-sign.html?operation=list&op=&page=" + page, async: false, dataType: 'html', headers: { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36 Edg/101.0.1210.53" }, onload: function (resp) { let peoples = $(resp.response).find("#J_list_detail tbody tr"); let ret_array = []; if (peoples.length == 2 && peoples[0].textContent.indexOf("暂无内容") != -1) { res(ret_array); return; } for (let i = 1; i <= peoples.length - 2; i++) { let people = peoples[i]; let ret_json = {}; let user_name = people.children[0].getElementsByTagName("a")[0].textContent; let space_url = people.children[0].getElementsByTagName("a")[0].href; let uid = space_url.match(/space-uid-([0-9]*)/)[1]; let sign_all_days = people.children[1].textContent; let sign_month_days = people.children[2].textContent; let sign_time = people.children[3].textContent; let sign_reward = people.children[5].textContent; ret_json["user"] = user_name; ret_json["uid"] = uid; ret_json["avatar"] = "https://avatar-bbs.mt2.cn/uc_server/avatar.php?uid=" + uid + "&size=small"; ret_json["days"] = sign_all_days; ret_json["monthDays"] = sign_month_days; ret_json["time"] = sign_time; ret_json["reward"] = sign_reward; ret_array = ret_array.concat(ret_json); } res(ret_array) }, onerror: function (resp) { console.log(resp); res({}); } }) }) } function changeRankList(data, listtype) { $("#ranklist").html(data); $('#ranklist').attr('listtype', listtype); } ajaxlist = async (listtype) => { listtype = listtype; if (listtype == 'today') { loadingdelay = false; urlextra = 'list&op=today'; } else if (listtype == 'month') { loadingdelay = false; urlextra = 'list&op=month'; } else if (listtype == 'zong') { loadingdelay = false; urlextra = 'list&op=zong'; } else if (listtype == 'calendar') { loadingdelay = true; urlextra = 'calendar'; } else { loadingdelay = false; urlextra = 'list'; } //alert(loadingdelay); if (listtype == 'todayLatest') { loadingdelay = false; urlextra = 'list&op=&page=0'; let maxPage = await getMaxPage(urlextra); let latestPeople = await getPagePeople(maxPage); latestPeople.reverse(); if (latestPeople.length < 10) { let latestPeople_2 = await getPagePeople(maxPage - 1); latestPeople_2.reverse(); latestPeople = latestPeople.concat(latestPeople_2); latestPeople.reverse(); } let peopleHTML = ''; latestPeople.reverse(); console.log(latestPeople); latestPeople.forEach(people => { peopleHTML = peopleHTML + ` ` + people["user"] + `` + people["time"] + `总天数 ` + people["days"] + `天 月天数 ` + people["monthDays"] + ` 天 , 上次奖励 ` + people["reward"] + ` ` }) let latestHTML = ` 今日排行 今日最先 本月排行 总排行 ` + peopleHTML + ` ` changeRankList(latestHTML, listtype) } else { $.ajax({ type: 'GET', url: "plugin.php?id=k_misign:sign&operation=" + urlextra, async: false, dataType: 'html', success: function (data) { // console.log(data); data = data.replace(`今日排行`, `今日排行今日最先`); changeRankList(data, listtype); }, complete: function (XHR, TS) { XHR = null } }); } } } } const blackHome = { showBlackHomeView: async () => { // 显示小黑屋界面 $.NZ_MsgBox.alert({ title: "小黑屋名单", content: "获取中", type: "", location: "center", buttons: { confirm: { text: "确定" } } }); let blacklistret = await blackHome.getBlackList(''); let blacklist = window.eval('(' + blacklistret + ')'); let blackContent = ''; function sortByProperTyName(data, propertyname) { let _list_ = []; $.each(data, function (index, value) { let date = value["dateline"].match(/([0-9]{4}-[0-9]{1,2}-[0-9]{1,2}[\s]*[0-9]{1,2}:[0-9]{1,2})/g)[0]; date = date.substring(0, 19); date = date.replace(/-/g, '/'); let timestamp = new Date(date).getTime(); value["time"] = timestamp; _list_ = _list_.concat(value); }); function compareDesc(propertyName) { return function (object1, object2) { var value1 = object1[propertyName]; var value2 = object2[propertyName]; if (value2 < value1) { return -1; } else if (value2 > value1) { return 1; } else { return 0; } } } _list_.sort(compareDesc("time")); return _list_; } let newBlacklist = sortByProperTyName(blacklist["data"], "time"); $.each(newBlacklist, function (index, value) { let blackreson = (value["reason"] == "") ? "无" : value["reason"]; blackContent = blackContent + ` ` + value["username"] + ` 操作时间: ` + value["dateline"] + ` 操作行为: ` + value["action"] + ` 过期时间: ` + value["groupexpiry"] + ` 操作人员: ` + value["operator"] + ` 操作理由: ` + blackreson + ` `; // console.log(value); }) let mainBlackContent = '' + blackContent + ""; $(".msgcon").html(mainBlackContent); $(".NZ-MsgBox-alert.NZ-MsgBox--motion").css("top", "100px"); $(".msgcon").css("height", "400px"); }, insertMobileBlackHomeButton: async function () { // 插入手机版查看小黑屋的按钮 if ((window.location.href.match(mt_config.rexp.home_space_url) != null) && (GM_getValue("v30"))) { // @require https://cdn.bootcdn.net/ajax/libs/SyntaxHighlighter/3.0.83/scripts/shCore.js // @require https://cdn.bootcdn.net/ajax/libs/SyntaxHighlighter/3.0.83/scripts/shBrushJScript.js // gitee需要公开仓库,那我只能引用资源站的js和css了 // 主页 https://www.jq22.com/jquery-info24191 // https://gitee.com/whitesev/static_resource/raw/master/NZ_MsgBox/Js/NZ-Plugin/Js/NZ-MsgBox.min.js // https://gitee.com/whitesev/static_resource/raw/master/NZ_MsgBox/Js/NZ-Plugin/Js/NZ-Drag.min.js // https://gitee.com/whitesev/static_resource/raw/master/NZ_MsgBox/Js/NZ-Plugin/Css/NZ-MsgBox.min.css // 不需要加载的 // https://gitee.com/whitesev/static_resource/raw/master/NZ_MsgBox/Js/spin/spin.js // https://gitee.com/whitesev/static_resource/raw/master/NZ_MsgBox/Js/spin/spin.css // https://cdn.bootcdn.net/ajax/libs/SyntaxHighlighter/3.0.83/styles/shCoreRDark.min.css // https://gitee.com/whitesev/static_resource/raw/master/NZ_MsgBox/Css/fontawesome-free-5.11.2-web/css/all.min.css // https://gitee.com/whitesev/static_resource/raw/master/NZ_MsgBox/Css/animate.min.css await GM_asyncLoadScript("https://www.jq22.com/demo/NZ-Plugin-MsgBox202201130154/Js/NZ-Plugin/Js/NZ-MsgBox.min.js"); await GM_asyncLoadScript("https://www.jq22.com/demo/NZ-Plugin-MsgBox202201130154/Js/NZ-Plugin/Js/NZ-Drag.min.js"); await GM_asyncLoadStyleSheet("https://www.jq22.com/demo/NZ-Plugin-MsgBox202201130154/Js/NZ-Plugin/Css/NZ-MsgBox.min.css") let black_home_ele = document.createElement("a"); black_home_ele.setAttribute("href", "javascript:;"); black_home_ele.className = "comiis_flex comiis_styli bg_f b_t cl blacklist"; black_home_ele.innerHTML = ` 小黑屋 `; GM_addStyle(` .NZ-MsgBox-alert .msgcontainer .msgtitle { text-align: center !important; } #autolist .k_misign_lu img { width: 40px; height: 40px; -moz-border-radius: 20px; -webkit-border-radius: 20px; border-radius: 20px; } .k_misign_lc .f_c{ margin: 5px 0px; }`) black_home_ele.onclick = () => { blackHome.showBlackHomeView(); } let parent_ele = document.querySelectorAll(".comiis_myinfo_list.bg_f.cl"); parent_ele[2].append(black_home_ele); } }, getBlackList: async (cid) => { // 获取黑名单列表 return new Promise(res => { GM_xmlhttpRequest({ url: "https://bbs.binmt.cc/forum.php?mod=misc&action=showdarkroom&cid=" + cid + "&t=&ajaxdata=json", timeout: 5000, method: "GET", async: false, headers: { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36 Edg/101.0.1210.53" }, onload: (r) => { res(r.responseText); }, onerror: (r) => { console.log(r); res({}); } }) }) } } const quickUBB = { code: { "rainbow1": { "key": "转普通彩虹", "value": "", "isFunc": true, "num": 1 }, "rainbow2": { "key": "转黑白彩虹", "value": "", "isFunc": true, "num": 2 }, "rainbow3": { "key": "转黑红彩虹", "value": "", "isFunc": true, "num": 3 }, "rainbow4": { "key": "转蓝绿彩虹", "value": "", "isFunc": true, "num": 4 }, "size": { "key": "size", "value": "[size=][/size]", "tagL": "=", "tagR": "]", "L": "[size=]", "R": "[/size]", "cursorL": "[size=", "cursorLength": 6 }, "color": { "key": "color", "value": "[color=][/color]", "tagL": "=", "tagR": "]", "L": "[color=]", "R": "[/color]", "cursorL": "[color=", "cursorLength": 7 }, "b": { "key": "加粗", "value": "[b][/b]", "tagL": "]", "tagR": "[", "L": "[b]", "R": "[/b]", "cursorR": "[/b]", "cursorLength": 4 }, "u": { "key": "下划线", "value": "[u][/u]", "tagL": "]", "tagR": "[", "L": "[u]", "R": "[/u]", "cursorR": "[/u]", "cursorLength": 4 }, "i": { "key": "倾斜", "value": "[i][/i]", "tagL": "]", "tagR": "[", "L": "[i]", "R": "[/i]", "cursorR": "[/i]", "cursorLength": 4 }, "s": { "key": "中划线", "value": "[s][/s]", "tagL": "]", "tagR": "[", "L": "[s]", "R": "[/s]", "cursorR": "[/s]", "cursorLength": 4 }, "lineFeed": { "key": "换行", "value": "[*]", "L": "", "R": "[*]", "cursorL": "[*]", "cursorLength": 3 }, "longHorizontalLine": { "key": "长横线", "value": "[hr]", "L": "", "R": "[hr]", "cursorL": "[hr]", "cursorLength": 4 }, "link": { "key": "链接", "value": "[url=][/url]", "tagL": "=", "tagR": "]", "L": "[url=]", "R": "[/url]", "cursorL": "[url=", "cursorLength": 5 }, "hide": { "key": "隐藏", "value": "[hide][/hide]", "tagL": "]", "tagR": "[", "L": "[hide]", "R": "[/hide]", "cursorR": "[/hide]", "cursorLength": 7 }, "quote": { "key": "引用", "value": "[quote][/quote]", "tagL": "]", "tagR": "[", "L": "[quote]", "R": "[/quote]", "cursorR": "[/quote]", "cursorLength": 8 } }, insertQuickReplyUBB: () => { // 快捷回复 if (GM_getValue("v31") && (window.location.href.match(mt_config.rexp.forum_post) != null)) { quickUBB.jqueryExtraFunction(); $(".comiis_post_ico .comiis_pictitle").after($(`插入`)); $(".comiis_post_ico.comiis_minipost_icot.f_c.cl").on("click", "a", (e) => { $("#comiis_post_tab div.bg_f").hide() e.currentTarget.style.display = ""; if (e.currentTarget.className != "comiis_pictitle") { e.currentTarget.style.display = "block"; } }) let message_ele = $("#needmessage"); let fastpostsubmitline_ele = $("#fastpostsubmitline"); if (message_ele && fastpostsubmitline_ele) { $("#comiis_post_tab").append($(` `)); $.each(quickUBB.code, function (index, value) { let ubbs = $(`${value["key"]}`); ubbs.on("click", (e) => { $.each($("#comiis_post_tab div.comiis_post_urlico ul li.quickUBBs a.comiis_xifont"), (i, v) => { v.className = "comiis_xifont f_d"; if (v == e.target) { v.className = "comiis_xifont f_0"; } }); let userInput = prompt(`请输入需要${value["key"]}的文字`, value["value"]); if ( value["isFunc"] ) { userInput = quickUBB.set_rainbow(value["num"], userInput); } if (userInput != null && userInput.trim()) { comiis_addsmilies(userInput); } }) $("#comiis_post_tab div.comiis_post_urlico ul").append(ubbs[0]); }) } else { console.log("未找到快捷回复框"); } } }, insertReplayUBB: () => { // 具体回复 if (!GM_getValue("v35")) { console.log("v35未开启"); return; } if (window.location.href.match(mt_config.rexp.reply_forum) == null) { console.log("未在回复界面"); return; } let insertDOM = $(".comiis_post_urlico"); if (!insertDOM) { console.log("未找到插入元素"); return; } let parentEle = $(".comiis_post_urlico > ul")[0]; let contentEle = $("#comiis_post_qydiv > ul"); quickUBB.jqueryExtraFunction(); $.each(quickUBB.code, function (key, value) { let ubbs = $(`${value["key"]}`); ubbs.on("click", (e) => { let bottomEle = $(`#comiis_post_qydiv li[data-key='${value.key}']`); if (!bottomEle.length) { console.log("未找到该元素"); return } let contentIndex = 7 + Object.keys(quickUBB.code).indexOf(key); $("#comiis_post_qydiv ul li").hide().eq(contentIndex).fadeIn(); $.each($("#comiis_post_tab div.comiis_post_urlico ul li a.comiis_xifont"), (i, v) => { v.className = "comiis_xifont f_d"; if (v == e.target) { v.className = "comiis_xifont f_0"; } }); }) parentEle.append(ubbs[0]); let ubbs_content = document.createElement("li"); ubbs_content.setAttribute("style", "display: none;"); ubbs_content.setAttribute("data-key", value["key"]); ubbs_content.innerHTML = ` 插入 `; contentEle.append(ubbs_content); $(`.comiis_sendbtn[data-keyI="${key}"]`).on("click", () => { let text = $(`#comiis_input_${key}`).val(); if (text == '') { popup.open('请输入需要插入的内容', 'alert'); return; } if (quickUBB.code[key]["isFunc"]) { text = quickUBB.set_rainbow(quickUBB.code[key]["num"], text); } if (quickUBB.code[key].hasOwnProperty("L")) { text = quickUBB.code[key]['L'] + text + quickUBB.code[key]['R']; } $("#needmessage").insertAtCaret(text); // if (quickUBB.code[key]["tagL"] != undefined || quickUBB.code[key]["tagR"] != undefined) { // $("#needmessage").moveCursorInCenterByText(quickUBB.code[key]["tagL"], quickUBB.code[key]["tagR"]); // } if (quickUBB.code[key].hasOwnProperty("cursorL")) { $("#needmessage").moveCursorToCenterByTextWithLeft(quickUBB.code[key]["cursorL"], quickUBB.code[key]["cursorLength"]); } if (quickUBB.code[key].hasOwnProperty("cursorR")) { $("#needmessage").moveCursorToCenterByTextWithRight(quickUBB.code[key]["cursorR"], quickUBB.code[key]["cursorLength"]); } }) }); }, set_rainbow: (num, text) => { if (text == "") { return ''; } var wr_text = text; var wr_code, wr_rgb, r, g, b, i, j, istep var wr_rgb1, wr_rgb2, r1, g1, b1, r2, g2, b2 r1 = g1 = b1 = r2 = g2 = b2 = 0; r = 0; g = 0; b = 0; istep = 0; wr_code = ''; if (num == 1) { istep = 40; r = 255; i = 1; j = 0; do { if (wr_text.charCodeAt(j) != 32) { if (g + istep < 256) { if (i == 1) g += istep; } else if (i == 1) { i = 2; g = 255; } if (r - istep > -1) { if (i == 2) r -= istep; } else if (i == 2) { i = 3; r = 0; } if (b + istep < 256) { if (i == 3) b += istep; } else if (i == 3) { i = 4; b = 255; } if (g - istep > -1) { if (i == 4) g -= istep; } else if (i == 4) { i = 5; g = 0; } if (r + istep < 256) { if (i == 5) r += istep; } else if (i == 5) { i = 6; r = 255; } if (b - istep > -1) { if (i == 6) b -= istep; } else if (i == 6) { i = 1; b = 0; } wr_rgb = ''; wr_rgb += parseInt(r).toString(16).length == 1 ? 0 + parseInt(r).toString(16) : parseInt(r).toString(16); wr_rgb += parseInt(g).toString(16).length == 1 ? 0 + parseInt(g).toString(16) : parseInt(g).toString(16); wr_rgb += parseInt(b).toString(16).length == 1 ? 0 + parseInt(b).toString(16) : parseInt(b).toString(16); wr_rgb = wr_rgb.toUpperCase(); wr_code += '[color=#' + wr_rgb + ']' + wr_text.charAt(j) + '[/color]'; } else { wr_code += wr_text.charAt(j); } j++; } while (j < wr_text.length); } else if (num == 2) { istep = 255 / wr_text.length; for (i = 1; i < wr_text.length + 1; i++) { if (wr_text.charCodeAt(i - 1) != 32) { r += istep; g += istep; b += istep; if (r > 255) r = 255; if (g > 255) g = 255; if (b > 255) b = 255; wr_rgb = ''; wr_rgb += parseInt(r).toString(16).length == 1 ? 0 + parseInt(r).toString(16) : parseInt(r).toString(16); wr_rgb += parseInt(g).toString(16).length == 1 ? 0 + parseInt(g).toString(16) : parseInt(g).toString(16); wr_rgb += parseInt(b).toString(16).length == 1 ? 0 + parseInt(b).toString(16) : parseInt(b).toString(16); wr_rgb = wr_rgb.toUpperCase(); wr_code += '[color=#' + wr_rgb + ']' + wr_text.charAt(i - 1) + '[/color]'; } else { wr_code += wr_text.charAt(i - 1); } } } else if (num == 3) { istep = 255 / wr_text.length; for (i = 1; i < wr_text.length + 1; i++) { if (wr_text.charCodeAt(i - 1) != 32) { r += istep; g = 29; b = 36; if (r > 255) r = 255; if (g > 255) g = 255; if (b > 255) b = 255; wr_rgb = ''; wr_rgb += parseInt(r).toString(16).length == 1 ? 0 + parseInt(r).toString(16) : parseInt(r).toString(16); wr_rgb += parseInt(g).toString(16).length == 1 ? 0 + parseInt(g).toString(16) : parseInt(g).toString(16); wr_rgb += parseInt(b).toString(16).length == 1 ? 0 + parseInt(b).toString(16) : parseInt(b).toString(16); wr_rgb = wr_rgb.toUpperCase(); wr_code += '[color=#' + wr_rgb + ']' + wr_text.charAt(i - 1) + '[/color]'; } else { wr_code += wr_text.charAt(i - 1); } } } else if (num == 4) { istep = 255 / wr_text.length; for (i = 1; i < wr_text.length + 1; i++) { if (wr_text.charCodeAt(i - 1) != 32) { r = 0; g = 174; b += istep; if (r > 255) r = 255; if (g > 255) g = 255; if (b > 255) b = 255; wr_rgb = ''; wr_rgb += parseInt(r).toString(16).length == 1 ? 0 + parseInt(r).toString(16) : parseInt(r).toString(16); wr_rgb += parseInt(g).toString(16).length == 1 ? 0 + parseInt(g).toString(16) : parseInt(g).toString(16); wr_rgb += parseInt(255 - b).toString(16).length == 1 ? 0 + parseInt(255 - b).toString(16) : parseInt(255 - b).toString(16); wr_rgb = wr_rgb.toUpperCase(); wr_code += '[color=#' + wr_rgb + ']' + wr_text.charAt(i - 1) + '[/color]'; } else { wr_code += wr_text.charAt(i - 1); } } } return wr_code; }, jqueryExtraFunction: () => { $.fn.extend({ insertAtCaret: function (myValue) { var $t = $(this)[0]; if (document.selection) { this.focus(); var sel = document.selection.createRange(); sel.text = myValue; this.focus(); } else if ($t.selectionStart || $t.selectionStart == '0') { var startPos = $t.selectionStart; var endPos = $t.selectionEnd; var scrollTop = $t.scrollTop; $t.value = $t.value.substring(0, startPos) + myValue + $t.value.substring(endPos, $t.value.length); this.focus(); $t.selectionStart = startPos + myValue.length; $t.selectionEnd = startPos + myValue.length; $t.scrollTop = scrollTop; } else { this.value += myValue; this.focus(); } }, selectRange: function (start, end) { if (end === undefined) { end = start; } return this.each(function () { if ('selectionStart' in this) { this.selectionStart = start; this.selectionEnd = end; } else if (this.setSelectionRange) { this.setSelectionRange(start, end); } else if (this.createTextRange) { var range = this.createTextRange(); range.collapse(true); range.moveEnd('character', end); range.moveStart('character', start); range.select(); } }); }, getCursorPosition: function () { var el = $(this)[0]; var pos = 0; if ('selectionStart' in el) { pos = el.selectionStart; } else if ('selection' in document) { el.focus(); var Sel = document.selection.createRange(); var SelLength = document.selection.createRange().text.length; Sel.moveStart('character', -el.value.length); pos = Sel.text.length - SelLength; } return pos; }, moveCursorInCenterByText: function (leftTextFlag, rightTextFlag) { var el = $(this)[0]; var el_text = el.value; for (let i = el.selectionStart - 1; i > 0; i--) { let LText = el_text[i - 1]; let currentText = el_text[i]; if (LText == leftTextFlag && currentText == rightTextFlag) { this.selectRange(i); break; } } }, moveCursorToCenterByTextWithLeft: function (leftMatchText, _length_) { var el = $(this)[0]; var el_text = el.value; for (let i = el.selectionStart - 1; i > 0; i--) { let lTexts = el_text.substring(i - _length_, i); if (lTexts == leftMatchText) { this.selectRange(i); break; } } }, moveCursorToCenterByTextWithRight: function (rightMatchText, _length_) { var el = $(this)[0]; var el_text = el.value; for (let i = el.selectionStart - 1; i > 0; i--) { let rTexts = el_text.substring(i, i + _length_); if (rTexts == rightMatchText) { this.selectRange(i + _length_); break; } } } }); } } function blacklistShieldUsersOrBlocks() { // 黑名单-屏蔽用户或板块 if (location.href.match(mt_config.rexp.home_space_url) != null) { var white_space_ele = document.createElement("div"); var black_list_ele = document.createElement("div"); white_space_ele.className = "styli_h cl"; black_list_ele.setAttribute("id", "blacklistallmain"); black_list_ele.className = "comiis_myinfo_list bg_f cl"; black_list_ele.innerHTML = ` 保存 `; GM_addStyle(` #blacklistallmain{ height: 232px; } #blacklistallmain li.comiis_styli{ height: 180px; } #blacklistallmain #blacklistuid{ width: 90%; resize: none; opacity: 0.7; height: 70% !important; line-height: inherit; -webkit-appearance: none; border: none !important; font-size: 14px; vertical-align: middle; background-color: transparent; border-bottom: 3px solid #efefef !important; } #blacklistallmain #blacklistplate{ width: 90%; resize: none; opacity: 0.7; height: 30% !important; line-height: inherit; -webkit-appearance: none; border: none !important; font-size: 14px; vertical-align: middle; background-color: transparent; } #blacklistsave{ text-align: center; background: transparent !important; border-color: transparent !important; } `); let mt_commis_menu = document.getElementsByClassName("comiis_myinfo cl")[0]; mt_commis_menu.appendChild(white_space_ele); mt_commis_menu.appendChild(black_list_ele); mt_commis_menu.appendChild(white_space_ele); document.getElementById("blacklistuid").textContent = localStorage.blacklistuid ? localStorage.blacklistuid : ""; document.getElementById("blacklistplate").textContent = localStorage.blacklistplate ? localStorage.blacklistplate : ""; document.getElementById("blacklistsave").onclick = () => { let blackListUIDValue = document.getElementById("blacklistuid").value; let blackListPlateValue = document.getElementById("blacklistplate").value; GM_setValue("blacklistuid", blackListUIDValue); GM_setValue("blacklistplate", blackListPlateValue); popup.open("保存成功","alert"); // iosOverlay({ // text: "保存成功", // duration: 2000, // icon: "https://www.helloimg.com/images/2022/05/24/ZoDS05.png" // }); } } } function identifyLinks() { // 识别链接 if (GM_getValue("v2")) { /*TEXT link to Clickable Hyperlink From Via*/ var clearLink, excludedTags, filter, linkMixInit, linkPack, linkify, observePage, observer, setLink, url_regexp, xpath; url_regexp = /((https?:\/\/|www\.)[\x21-\x7e]+[\w\/]|(\w[\w._-]+\.(com|cn|org|net|info|tv|cc))(\/[\x21-\x7e]*[\w\/])?|ed2k:\/\/[\x21-\x7e]+\|\/|thunder:\/\/[\x21-\x7e]+=)/gi; clearLink = function (a) { var b; a = null != (b = a.originalTarget) ? b : a.target; if (null != a && "a" === a.localName && -1 !== a.className.indexOf("texttolink") && (b = a.getAttribute("href"), 0 !== b.indexOf("http") && 0 !== b.indexOf("ed2k://") && 0 !== b.indexOf("thunder://"))) return a.setAttribute("href", "http://" + b) }; document.addEventListener("mouseover", clearLink); setLink = function (a) { if (null != a && a.hasOwnProperty("className") && typeof (a.parentNode.className) === "string" && -1 === a.parentNode.className.indexOf("texttolink") && "#cdata-section" !== a.nodeName) { var b = a.textContent.replace(url_regexp, '$1'); if (a.textContent.length !== b.length) { var c = document.createElement("span"); c.innerHTML = b; return a.parentNode.replaceChild(c, a) } } }; excludedTags = "a svg canvas applet input button area pre embed frame frameset head iframe img option map meta noscript object script style textarea code".split(" "); xpath = "//text()[not(ancestor::" + excludedTags.join(") and not(ancestor::") + ")]"; filter = new RegExp("^(" + excludedTags.join("|") + ")$", "i"); linkPack = function (a, b) { var c, d; if (b + 1E4 < a.snapshotLength) { var e = c = b; for (d = b + 1E4; b <= d ? c <= d : c >= d; e = b <= d ? ++c : --c) setLink(a.snapshotItem(e)); setTimeout(function () { return linkPack(a, b + 1E4) }, 15) } else for (e = c = b, d = a.snapshotLength; b <= d ? c <= d : c >= d; e = b <= d ? ++c : --c) setLink(a.snapshotItem(e)) }; linkify = function (a) { a = document.evaluate(xpath, a, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null); return linkPack(a, 0) }; observePage = function (a) { for (a = document.createTreeWalker(a, NodeFilter.SHOW_TEXT, { acceptNode: function (a) { if (!filter.test(a.parentNode.localName)) return NodeFilter.FILTER_ACCEPT } }, !1); a.nextNode();) setLink(a.currentNode) }; observer = new window.MutationObserver(function (a) { var b, c; var d = 0; for (b = a.length; d < b; d++) { var e = a[d]; if ("childList" === e.type) { var g = e.addedNodes; var f = 0; for (c = g.length; f < c; f++) e = g[f], observePage(e) } } }); linkMixInit = function () { if (window === window.top && "" !== window.document.title) return linkify(document.body), observer.observe(document.body, { childList: !0, subtree: !0 }) }; var clearlinkF = function (a) { var url = a.getAttribute("href"); if (0 !== url.indexOf("http") && 0 !== url.indexOf("ed2k://") && 0 !== url.indexOf("thunder://")) return a.setAttribute("href", "http://" + url) }, clearlinkE = function () { for (var a = document.getElementsByClassName("texttolink"), b = 0; b < a.length; b++) clearlinkF(a[b]) }; setTimeout(clearlinkE, 2500); setTimeout(linkMixInit, 1100); } } function detectUserOnlineStatus() { // 探测用户在线状态 if (window.location.href.match(mt_config.rexp.forum_post_pc)) { var quanju = []; var cishu = 0; for (var sss = document.getElementsByClassName("pls favatar"), ll = 0; ll < sss.length; ll++) { var sendmessage = sss[ll].getElementsByClassName("comiis_o cl") if (sendmessage.length == 0) {} else { var sendmessageurl = sendmessage[0].getElementsByTagName('a')[1].href; let xhr = new XMLHttpRequest(); xhr.open("GET", sendmessageurl, false); xhr.onreadystatechange = function () { if (xhr.readyState == 4) { let pattern = /正在.*]/g; let str = xhr.responseText; let newstr = str.match(pattern)[0]; quanju.push(newstr); } } xhr.send(); if (quanju[cishu].match('离线')) { cishu = cishu + 1; var imi2 = document.createElement('img'); imi2.src = 'https:\/\/cdn2.bbs.binmt.cc\/static\/image\/smiley\/doge\/54.png'; imi2.smilied = '1353'; imi2.border = "0"; imi2.style = 'float:right'; sss[ll].insertAdjacentElement('afterbegin', imi2); } else { cishu = cishu + 1; var imi = document.createElement('img'); imi.src = 'https:\/\/cdn2.bbs.binmt.cc\/static\/image/smiley\/doge\/35.png'; imi.smilied = '1384'; imi.border = "0"; imi.style = 'float:right'; sss[ll].insertAdjacentElement('afterbegin', imi); } } } } } function commentsAddReviews() { // 评论区添加点评功能 if (GM_getValue("v6") && location.href.match(mt_config.rexp.forum_post)) { var hongbao = document.getElementsByClassName("bottom_zhan y"); if (hongbao.length == 0) {} else { var cishu2 = 0; var replyhref = hongbao[cishu2].getElementsByTagName('a')[0].href; var page = replyhref.match(mt_config.rexp.forum_post_page)[1]; //console.log(page); for (cishu2 = 0; cishu2 < hongbao.length; cishu2++) { if (hongbao[cishu2].children.length == 1) { var rewardhref = hongbao[cishu2].getElementsByTagName('a')[0].href.replace('mod=post&', 'mod=misc&'); rewardhref = rewardhref.replace("action=reply&", "action=comment&"); var reviews_href = rewardhref + '&extra=page%3D1&page=' + page; let reviews_pid = hongbao[cishu2].parentElement.parentElement.id.replace("pid", "&pid="); reviews_href = reviews_href + reviews_pid; //console.log(rewardhref) var oa = document.createElement('a'); var ob = document.createElement('i'); var lm = document.getElementsByClassName("bottom_zhan y")[cishu2]; oa.href = reviews_href; oa.className = "f_c dialog"; ob.style = "content: url(https://s1.ax1x.com/2020/04/26/Jcq8VU.png);height: 15px;"; ob.className = "comiis_font mt_review"; ob.innerHTML = ""; oa.appendChild(ob); let review_username = hongbao[cishu2].parentElement.parentElement.getElementsByClassName("top_user f_b")[0].text; oa.onclick = function () { let click_time = Date.now(); var mt_interval = setInterval(function () { let run_time = parseInt((Date.now() - click_time) / 1000); if (run_time >= 5) { console.log("超时"); clearInterval(mt_interval); } else if (document.querySelector("div[id=ntcmsg_popmenu]>div>span.f_c") != null) { console.log("存在,清理定时器"); console.log("点评用户:", review_username); console.log("该对象出现用时:", run_time); try { document.querySelector("div[id=ntcmsg_popmenu]>div>span.f_c").innerText = "点评 " + review_username; } catch (err) { console.log("修改点评失败", err); } clearInterval(mt_interval); } }, 100) } lm.insertAdjacentElement('afterBegin', oa); } else { console.log("已有点评按钮,无需再次添加"); } } } } } function modifyForumPostFontColor() { //字体颜色改为黑色 if (GM_getValue("v3") && location.href.match(mt_config.rexp.forum_post)) { var hide = document.getElementsByTagName('font'); var i = 0; for (i = 0; i < hide.length; i++) { hide[i].removeAttribute('color'); hide[i].removeAttribute('style'); hide[i].removeAttribute('size'); } var content = document.getElementsByClassName("comiis_message bg_f view_all cl message"); var rule = /| ||<\/font>|||||align=".*?"/g; var j = 0, k = 1; for (j = 0; j < content.length; j++ & k++) { content[j].innerHTML = content[j].innerHTML.replace(rule, ''); } } } function collectionForumPost() { // 悬浮按钮-添加收藏帖子功能 var own_formhash = document.querySelector("#scform > input[type=hidden]:nth-child(1)").value; var collect_href_id = window.location.href.match(mt_config.rexp.forum_post_pc_page)[1]; var collect_href = 'https:\/\/bbs.binmt.cc\/home.php?mod=spacecp&ac=favorite&type=thread&id=' + collect_href_id + '&formhash=' + own_formhash; var new_collect = document.createElement('span'); var old_Suspended = document.getElementById("scrolltop"); new_collect.innerHTML = '<\/a>'; old_Suspended.insertAdjacentElement('afterBegin', new_collect); } function quickReply() { //快捷回复 document.querySelector("#scrolltop > span:nth-child(2) > a").onclick = function () { showWindow('reply', this.href); var a = document.querySelector("#postsubmit"); setTimeout( 'document.querySelector("#moreconf").innerHTML=document.querySelector("#moreconf").innerHTML+\'一键空格<\/button>\';document.querySelector("#insertspace2").onclick=function(){document.querySelector("#postmessage").value=document.querySelector("#postmessage").value+" ";}', 200) } } function showUserLevel() { // 显示用户具体等级 var a = document.getElementsByClassName("pls favatar"); var i = 0; var e = "0级"; for (i = 0; i < a.length; i++) { var b = a[i].getElementsByTagName("em")[1].outerText; var c = a[i].getElementsByTagName("tr")[0]; var d = document.createElement("td"); switch (b) { case "幼儿园": e = "1级"; break; case "小学生": e = "2级"; break; case "初中生": e = "3级"; break; case "高中生": e = "4级"; break; case "大学生": e = "5级"; break; case "硕士生": e = "6级"; break; case "博士生": case "实习版主": case "版主": case "审核员": e = "7级"; break; case "博士后": case "超级版主": case "网站编辑": e = "8级"; break; case "管理员": case "信息监察员": e = "9级"; break; } d.innerHTML = '' + e + '<\/a><\/p>Lv'; c.appendChild(d); } } function showUserUID() { //显示用户的uid if (GM_getValue("v15") && ((window.location.href.match(mt_config.rexp.forum_post_guide_url) || (window.location.href.match(mt_config.rexp.forum_post)) || (window.location.href.match(mt_config.rexp.plate_url)) || (window.location.href.match(mt_config.rexp.search_url)) ))) { window.findUserFormList = false; window.findUserFormListNums = 0; let findSetInval = setInterval(function () { let formList = mt_config.dom_obj.comiis_formlist() ? mt_config.dom_obj.comiis_formlist() : []; formList = formList.length == 0 ? mt_config.dom_obj.comiis_postli() : formList; formList = formList.length == 0 ? mt_config.dom_obj.comiis_mmlist() : formList; window.findUserFormList = formList.length ? true : false; if (findUserFormListNums >= 10) { console.log("未出现,清理定时器"); clearInterval(findSetInval); } if (window.findUserFormList) { GM_addStyle(` .comiis_postli_top.bg_f.b_t h2{ height: auto; }`); function matchUIDByArray(data) { for (let i = 0; i < data.length; i++) { let url = data[i].href; let uid = url.match(mt_config.rexp.mt_uid); if (uid) { return uid[1]; } } return null } $.each(formList, (index, value) => { let mtUIDOM = value.getElementsByClassName("mt_uid_set"); if (!mtUIDOM.length) { let childrenByATagetElement = value.getElementsByTagName("a"); let mt_uid = null; mt_uid = matchUIDByArray(childrenByATagetElement); if (mt_uid != null) { let uid_control = document.createElement("a"); let mtUidDomInsertElement = value.getElementsByClassName("top_lev")[0]; let uid_control_height = getComputedStyle(mtUidDomInsertElement, null)["height"]; let uid_control_margin = getComputedStyle(mtUidDomInsertElement, null)["margin"]; let uid_control_padding = getComputedStyle(mtUidDomInsertElement, null)["padding"]; let uid_control_line_height = getComputedStyle(mtUidDomInsertElement, null)["line-height"]; let uid_control_font = getComputedStyle(mtUidDomInsertElement, null)["font"]; uid_control.className = "mt_uid_set"; uid_control.style = ` font: ${uid_control_font}; background: rgb(255, 118, 0); color: white; float: left; margin: ${uid_control_margin}; padding: ${uid_control_padding}; height: ${uid_control_height}; line-height: ${uid_control_line_height}; border-radius: 1.5px;`; uid_control.innerHTML = "UID:" + mt_uid; uid_control.onclick = function () { try { GM_setClipboard(mt_uid); popup.open(`${mt_uid}已复制`,"alert"); // iosOverlay({ // text: mt_uid + "已复制", // duration: 2000, // icon: "https://www.helloimg.com/images/2022/05/24/ZoDS05.png" // }); console.log("复制:", mt_uid) } catch (err) { popup.open(`${mt_uid}复制失败`,"alert"); console.log("复制失败:"+mt_uid, err); // iosOverlay({ // text: mt_uid + "复制失败", // duration: 2000, // icon: "https://whitesev.gitee.io/static_resource/ios_loading/img/cross.png" // }); } } mtUidDomInsertElement.parentElement.append(uid_control); } } }) console.log("出现,清理定时器"); clearInterval(findSetInval); } else { findUserFormListNums += 1; } }, 800) } } function shieldUser() { // 屏蔽用户 if (window.location.href.match(mt_config.rexp.forum_guide_url) || window.location.href.match(mt_config.rexp.plate_url)) { console.log("屏蔽YH——1"); let infos = document.querySelectorAll(".comiis_forumlist .forumlist_li"); let black_list = GM_getValue("blacklistuid") ? GM_getValue("blacklistuid") : ""; let black_list_array = black_list.split(","); Array.from(infos).forEach((info) => { let usr = info.getElementsByClassName("wblist_tximg")[0].href; let usr_uid = usr.match(mt_config.rexp.mt_uid)[1]; if (black_list_array.indexOf(usr_uid) != -1) { console.log("屏蔽用户:" + usr_uid); info.setAttribute("style", "display:none !important;"); } }) } if (window.location.href.match(mt_config.rexp.forum_post)) { console.log("屏蔽YH——2"); let comments = document.querySelectorAll(".comiis_postlist .comiis_postli"); let black_list = GM_getValue("blacklistuid") ? GM_getValue("blacklistuid") : ""; let black_list_array = black_list.split(","); Array.from(comments).forEach((comment) => { let usr = comment.getElementsByClassName("postli_top_tximg")[0].href; let usr_uid = usr.match(mt_config.rexp.mt_uid)[1]; if (black_list_array.indexOf(usr_uid) != -1) { console.log("屏蔽用户:" + usr_uid); comment.setAttribute("style", "display:none !important;"); } }) } } function shieldPlate() { // 屏蔽板块 if (window.location.href.match(mt_config.rexp.forum_guide_url)) { console.log("屏蔽BK"); let infos = document.querySelectorAll(".comiis_forumlist .forumlist_li"); let black_list = GM_getValue("blacklistplate") ? GM_getValue("blacklistplate") : ""; let black_list_array = black_list.split("、"); Array.from(infos).forEach((info) => { let from_plate = info.querySelector(".forumlist_li_time a.f_d").text; from_plate = from_plate.replace(/\s*/g, ""); from_plate = from_plate.replace("来自", ""); if (black_list_array.indexOf(from_plate) != -1) { console.log("屏蔽板块:" + from_plate); info.setAttribute("style", "display:none !important;"); } }) } } function autoExpendFullTextByForumPost() { //自动展开帖子内容 if (GM_getValue("v18") && location.href.match(mt_config.rexp.forum_post)) { GM_addStyle(` div.comiis_message.bg_f.view_one.b_b.cl.message > div.comiis_messages.comiis_aimg_show.cl{ max-height: inherit !important; overflow-y: inherit !important; position: inherit !important; } .comiis_lookfulltext_key, .comiis_lookfulltext_bg{ display: none !important; }`) } } function recoveryIMGWidth() { // 修复图片宽度 if (GM_getValue("v16") && location.href.match(mt_config.rexp.forum_post)) { GM_addStyle(` .comiis_messages img{ max-width: 100% !important; } `) } } function needRepeatLoadingJSResource() { //帖子内需要重复执行的js tryCatch(shieldUser); tryCatch(commentsAddReviews); tryCatch(identifyLinks); tryCatch(showUserUID); tryCatch(previewPictures); tryCatch(modifyForumPostFontColor); popup.init(); } function loadNextComments() { // 加载下一页的评论 function autoLoadNextPageComments(post_comments_list) { //自动加载下一页的评论 $("#loading-comment-tip")[0].parentElement.style.display = ""; let next_page_url = post_comments_list.children[2].href let isloding_flag = false; console.log("获取下一页:", next_page_url); if (next_page_url.indexOf("javascript:;") != -1) { console.log(post_comments_list); console.log("无多页评论"); $("#loading-comment-tip")[0].parentElement.style.display = "none"; return; } function _loadNextComments_() { if (isloding_flag == false) { isloding_flag = true; $("#loading-comment-tip").text("正在加载评论中..."); $("#loading-comment-tip")[0].parentElement.style.display = ""; $.get(next_page_url, function (data, status, xhr) { console.log("正在请求的下一页url", next_page_url); let postlist = $(data); let kqideSourceNode = $(".comiis_postlist.kqide"); let postDOM = postlist.find(".comiis_postlist.kqide").html(); let get_next_page_url = postlist.find(".nxt"); if (get_next_page_url.length != 0) { console.log("成功获取到下一页-评论"); next_page_url = get_next_page_url.attr("href"); $("#loading-comment-tip")[0].parentElement.style.display = "none"; } else { console.log("评论全部加载完毕,关闭监听事件"); $(".comiis_page.bg_f").remove(); $("#loading-comment-tip").text("已加载完所有评论") $("#loading-comment-tip")[0].parentElement.style.display = ""; $("#loading-comment-tip").unbind("click", _loadNextComments_); $(window).unbind("scroll"); } isloding_flag = false; kqideSourceNode.append(postDOM); needRepeatLoadingJSResource(); }) } else { console.log("正在加载中请稍后"); } } $(window).bind("scroll", function () { // scroll at bottom if (Math.ceil($(window).scrollTop() + $(window).height() + 150) >= $(document).height()) { // load data _loadNextComments_(); } }) $("#loading-comment-tip").text("请上下滑动或点击加载"); $("#loading-comment-tip").bind("click", _loadNextComments_); } if (GM_getValue("v21") && window.location.href.match(mt_config.rexp.forum_post)) { let tip_html = ` 正在等待页面加载完毕 `; $(".comiis_bodybox").append($(tip_html)); let commentsEle = document.querySelector(".comiis_pltit span.f_d") || document.querySelector("#comiis_foot_memu .comiis_kmvnum"); if (document.querySelector(".comiis_pltit h2") && document.querySelector(".comiis_pltit h2").textContent.indexOf("暂无评论") != -1) { console.log("暂无评论"); $("#loading-comment-tip")[0].parentElement.style.display = "none"; return; } let commentsNum = parseInt(commentsEle.textContent); if (commentsNum >= 10) { let setAutoLoadInterval = setInterval(function () { let post_comments_list = document.querySelector(".comiis_page.bg_f"); //评论列表 if (post_comments_list) { autoLoadNextPageComments(post_comments_list); clearInterval(setAutoLoadInterval); } else { console.log("正在等待下一页列表元素出现"); } }, 500) } else { console.log("无多页评论"); $("#loading-comment-tip")[0].parentElement.style.display = "none"; } } } function loadPrevComments() { //加载上一页的评论 function autoLoadPrevPageComments() { //自动加载上一页的评论 let post_comments_list = document.querySelector(".comiis_page.bg_f"); let prev_page_url = post_comments_list.children[0].href let isloding_flag = false; console.log("获取上一页:", prev_page_url); $("#loading-comment-tip-prev").text("请上下滑动或点击加载"); $("#loading-comment-tip-prev").bind("click", loadPrevComments); function loadPrevComments() { if (isloding_flag) { console.log("正在加载上一页中请稍后"); } else { isloding_flag = true; $("#loading-comment-tip-prev").text("正在加载评论中..."); $("#loading-comment-tip-prev")[0].parentElement.style.display = ""; $.get(prev_page_url, function (data, status, xhr) { console.log("正在请求的上一页评论:", prev_page_url); let postlist = $(data); let kqideSourceNode = $(".comiis_postlist.kqide"); let postDOM = postlist.find(".comiis_postlist.kqide").html(); let get_pregv_page_url = postlist.find(".prev"); if (get_pregv_page_url.length != 0) { console.log("成功获取到上一页-评论"); prev_page_url = get_pregv_page_url.attr("href"); $("#loading-comment-tip-prev")[0].parentElement.style.display = "none"; isloding_flag = false; kqideSourceNode.prepend(postDOM); needRepeatLoadingJSResource(); } else { isloding_flag = false; kqideSourceNode.prepend(postDOM); console.log("上一页评论全部加载完毕,关闭监听事件"); let page_title = postlist.find(".comiis_viewtit")[0].outerHTML; console.log($(page_title)); kqideSourceNode.prepend($(page_title)[0]); needRepeatLoadingJSResource(); // $(".comiis_page.bg_f").remove(); $("#loading-comment-tip-prev").remove(); $("#loading-comment-tip-prev").unbind("click", loadPrevComments); $(window).unbind("scroll"); } }) } // $(window).unbind("scroll",loadPrevComments); } $(window).bind("scroll", function () { if ($(window).scrollTop() <= 50) { loadPrevComments(); } }); } if (GM_getValue("v32") && window.location.href.match(mt_config.rexp.forum_post)) { if (!document.querySelector(".comiis_pltit span.f_d")) { console.log("当前不在第一页,加载上一页评论"); let tip_html = ` 正在等待页面加载完毕 `; $(".comiis_bodybox script")[0].after($(tip_html)[0]); if (document.querySelector(".comiis_pltit h2") && document.querySelector(".comiis_pltit h2").textContent.indexOf("暂无评论") != -1) { console.log("暂无上一页评论"); $("#loading-comment-tip-prev")[0].parentElement.style.display = "none"; return; } autoLoadPrevPageComments(); } } } function Hooks() { // hook?用不到 return { initEnv: function () { Function.prototype.hook = function (realFunc, hookFunc, context) { var _context = null; //函数上下文 var _funcName = null; //函数名 _context = context || window; _funcName = getFuncName(this); _context['realFunc_' + _funcName] = this; console.log(window); if (_context[_funcName].prototype && _context[_funcName].prototype.isHooked) { console.log("Already has been hooked,unhook first"); return false; } function getFuncName(fn) { // 获取函数名 var strFunc = fn.toString(); var _regex = /function\s+(\w+)\s*\(/; var patten = strFunc.match(_regex); if (patten) { return patten[1]; }; return ''; } try { eval('_context[_funcName] = function ' + _funcName + '(){\n' + 'var args = Array.prototype.slice.call(arguments,0);\n' + 'var obj = this;\n' + 'hookFunc.apply(obj,args);\n' + "return _context['realFunc_" + _funcName + "'].apply(obj,args);\n" + '};'); _context[_funcName].prototype.isHooked = true; return true; } catch (e) { console.log("Hook failed,check the params."); return false; } } Function.prototype.unhook = function (realFunc, funcName, context) { var _context = null; var _funcName = null; _context = context || window; _funcName = funcName; if (!_context[_funcName].prototype.isHooked) { console.log("No function is hooked on"); return false; } _context[_funcName] = _context['realFunc' + _funcName]; delete _context['realFunc_' + _funcName]; return true; } }, cleanEnv: function () { if (Function.prototype.hasOwnProperty("hook")) { delete Function.prototype.hook; } if (Function.prototype.hasOwnProperty("unhook")) { delete Function.prototype.unhook; } return true; } }; } function pageAfterDOMChangeRunFunction() { // 当页面内容元素添加时需要执行的函数 if (window.location.href.match(/bbs.binmt.cc\/forum/)) { function beforeHookRun() { tryCatch(showUserUID); tryCatch(previewPictures); tryCatch(shieldUser); tryCatch(shieldPlate); } document.body.addEventListener("DOMNodeInserted", (event) => { let ele = event.target; if (ele.className != null && ele.className.indexOf("comiis_forumlist") != -1) { beforeHookRun(); } }) } } function previewPictures() { // 贴外预览图片 if (GM_getValue("v34") && ((window.location.href.match(mt_config.rexp.forum_post_guide_url) || (window.location.href.match(mt_config.rexp.forum_post)) || (window.location.href.match(mt_config.rexp.plate_url)) || (window.location.href.match(mt_config.rexp.search_url)) ))) { function getFormList() { let formList = mt_config.dom_obj.comiis_formlist() ? mt_config.dom_obj.comiis_formlist() : []; formList = formList.length == 0 ? mt_config.dom_obj.comiis_postli() : formList; formList = formList.length == 0 ? mt_config.dom_obj.comiis_mmlist() : formList; return formList; } let formlist = null; let isFindFormList = false; let findFormListNums = 0; let waitFormListAppear = setInterval(function () { if (isFindFormList) { formlist = getFormList(); main(); clearInterval(waitFormListAppear) } else { if (findFormListNums >= 10) { console.log("未出现帖子或寻找贴子超时,清理定时器"); clearInterval(waitFormListAppear); } isFindFormList = getFormList().length ? true : false; findFormListNums += 1; } }, 800); function getPreviewPicturesEle(dom) { let pre_dom = document.createElement("li"); pre_dom.className = "f_c"; pre_dom.setAttribute("style", "width:25vw;"); let imageDOM = dom.querySelectorAll(".comiis_pyqlist_img").length ? dom.querySelectorAll(".comiis_pyqlist_img") : dom.querySelectorAll(".comiis_pyqlist_imgs"); if (imageDOM.length) { pre_dom.innerHTML = '预览图片'; $.each(imageDOM, function (i, v) { let imgs = v.querySelectorAll("img"); Array.from(imgs).forEach(_img_ => { pre_dom.innerHTML = pre_dom.innerHTML + ``; }) }) pre_dom.onclick = function () { let img_list = $(this)[0].querySelectorAll("img"); let img_items = []; let now_picture_num = 1; for (var k = 0; k < img_list.length; k++) { let img_url = img_list[k].getAttribute("data-src"); let img_dict = {}; let full_picture = null; if (img_url.match(/res-bbs.mt2.cn/) && img_url.match(/size=[\d]*x9999/)) { console.log("gif图"); full_picture = img_url; } else { // full_picture = img_url.replace(/size=[\d]*x[\d]*/, "size=600x1000"); // full_picture = full_picture.replace(/_[\d]*_[\d]*.jpg/, "_600_1000.jpg"); full_picture = img_url; } img_dict["src"] = full_picture; img_dict["srct"] = img_url; img_dict["title"] = "图片" + now_picture_num.toString(); img_dict["ID"] = hex_md5(img_url); img_items.push(img_dict); now_picture_num = now_picture_num + 1; } $('#picture_review').nanogallery2('destroy'); jQuery("#picture_review").nanogallery2({ thumbnailWidth: 150, thumbnailHeight: 150, items: img_items, thumbnailSelectable: false }); window.location.hash = '#nanogallery/picture_review/0/' + img_items[0]["ID"]; } return pre_dom; } else { // pre_dom.innerHTML = '无'; return null; } } function main() { // blackHome.loadJS("https://lf26-cdn-tos.bytecdntp.com/cdn/expire-1-M/nanogallery2/3.0.5/jquery.nanogallery2.min.js"); if (window.hasOwnProperty("loadPreviewPictureCSS")) { console.log("已加载过预览图片"); } else { GM_asyncLoadStyleSheet("https://lf3-cdn-tos.bytecdntp.com/cdn/expire-1-M/nanogallery2/3.0.5/css/nanogallery2.min.css"); GM_asyncLoadStyleSheet("https://lf3-cdn-tos.bytecdntp.com/cdn/expire-1-M/nanogallery2/3.0.5/css/nanogallery2.woff.min.css"); window.loadPreviewPictureCSS = true; } let global_review = document.createElement("div"); global_review.id = "picture_review"; // $(".comiis_bodybox")[0].prepend(global_review); // debug使用 global_review.setAttribute("style", "display:none"); document.body.append(global_review); $.each(formlist, function (index, value) { let formBottomEle = value.querySelectorAll(".comiis_znalist_bottom.b_t.cl ul.cl li"); if (formBottomEle.length == 3) { let clParentEle = formBottomEle[0].parentElement; let previewPicturesEle = getPreviewPicturesEle(value); if (previewPicturesEle != null) { Array.from(formBottomEle).forEach(e => { e.setAttribute("style", "width: 25vw"); }); clParentEle.append(previewPicturesEle); } } else if (formBottomEle.length == 4) { console.log("已经插入过预览图片"); } else { console.log("没有阅读、评论、赞"); } }) } } } function repairClearSearchInput() { // 修复搜索的清空按钮 if (GM_getValue("v36") && window.location.href.match(mt_config.rexp.search_url)) { let $search_input = $(".ssclose.bg_e.f_e"); if ($search_input) { $search_input.click(function (e) { e.preventDefault(); $("#scform_srchtxt").val("") }) } else { log.error("搜索界面: 获取清空按钮失败"); } } } function repairUnableToEnterOtherSpaceCorrectly() { // 修复无法正确进入别人的空间 if (GM_getValue("v37") && window.location.href.match(mt_config.rexp.home_url_brief)) { let href_params = window.location.href.match(/home.php\?(.+)/gi); href_params = href_params[href_params.length - 1]; let params_split = href_params.split("&"); if (params_split.length == 2 && href_params.indexOf("uid=") != -1 && href_params.indexOf("mod=space") != -1) { window.location.href = window.location.href + "&do=profile"; } } } function postForumKGChartBed() { // 发帖快捷图片上传 康哥图床 if (!window.location.href.match(mt_config.rexp.post_forum) && !window.location.href.match(mt_config.rexp.edit_forum) && !window.location.href.match(mt_config.rexp.reply_forum) && !window.location.href.match(mt_config.rexp.forum_post) || !GM_getValue("v42")) { return }; GM_addStyle(` .comiis_post_imglist li.up_btn_kggzs a{ display: block; width: 50px; height: 50px; line-height: 50px; padding: 4px; border-radius: 2px; border-style: dashed; } .comiis_post_imglist li.up_btn_kggzs a i { position: absolute; top: 11px; left: 5px; z-index: 8; font-size: 26px; width: 50px; height: 50px; line-height: 50px; text-align: center; } .comiis_post_imglist li.up_btn_kggzs a input { position:absolute; top:11px; left:5px; height:50px; width:50px; z-index:10; opacity:0 } .comiis_post_imglist li .delImg { position:absolute; top:-5px; left:-5px } .comiis_post_imglist li .delImg i { font-size:24px; background:#fff; border-radius:50% } #imglist_kggzs{ overflow-y: auto; max-height: 200px; } #kggzsfiledata{ display:none; } `); let imgListParent = $(".comiis_upbox.comiis_allowpostimg.bg_f.cl"); if (!imgListParent.length) { imgListParent = $("#comiis_post_tab .comiis_upbox.bg_f.b_t.b_b.cl"); if (!imgListParent.length) { console.log("未找到图片列表父元素"); return; } }; let imgUploadBtn = ` kggzs 20MB `; imgListParent.append($(imgUploadBtn)); let chartBedUrl = "https://img.kggzs.cn/api/v1"; let chartBedUser = GM_getValue("KggzsChartBedUser"); let chartBedPwd = GM_getValue("KggzsChartBedPwd"); let chartBedToken = null; let loginStatus = false; // 登录状态 let tokenStatus = false; //token状态 let code = { 401: "未登录或授权失败", 403: "管理员关闭了接口功能", 429: "超出请求配额,请求受限", 500: "服务端出现异常" } function getToken() { return new Promise(res => { let formData = new FormData(); formData.append("email", "893177236@qq.com"); formData.append("password", "893177236"); GM_xmlhttpRequest({ url: `${chartBedUrl}/tokens`, method: "POST", data: formData, headers: { "Accept": "application/json" }, onload: (r) => { if (code[r.status] != null) { popup.open(code[r.status], 'alert'); res(null); return; } let json_data = JSON.parse(r.response); if (json_data["status"]) { popup.open("token成功获取", "alert"); res(json_data["data"]["token"]); } else { popup.open(json_data["message"], "alert"); res(null); } }, onerror: () => { popup.open("网络异常"); res(null); } }) }) } function uploadImage(imageFile) { let res_data = { "imageUri": null, "json_data": null }; let form = new FormData(); form.append("strategy_id", 3); form.append("file", imageFile); return new Promise(res => { GM_xmlhttpRequest({ url: `${chartBedUrl}/upload`, method: "POST", data: form, async: false, dataType: "json", headers: { "Accept": "application/json", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36 Edg/101.0.1210.53", "Referer": `${chartBedUrl}/`, "Authorization": `Bearer ${chartBedToken}`, "Origin": chartBedUrl, }, onload: (r) => { if (code[r.status] != null) { popup.open(code[r.status], 'alert'); res(res_data); return; } let json_data = JSON.parse(r.response); console.log(json_data); if (json_data["status"]) { popup.open('上传成功', 'alert'); let file_reader = new FileReader(); //FileReader主要用于将文件内容读入内存,通过一系列异步接口,可以在主线程中访问本地文件 file_reader.readAsDataURL(imageFile); //读取图片的内容生成的base64编码的图 //读取完成后,执行该回调函数,它会返回读取的结果result file_reader.onload = (function () { let imageUri = this.result; // 此时的图片已经存储到了result中 res_data["imageUri"] = imageUri; res_data["json_data"] = json_data; res(res_data); }); } else { console.log(json_data); popup.open(json_data["message"], 'alert'); res(res_data); } }, onerror: (r) => { popup.open("网络异常", 'alert'); res(res_data); } }) }) } function deleteImage(imageKey) { return new Promise(res => { GM_xmlhttpRequest({ url: `${chartBedUrl}/images/:${imageKey}`, method: "DELETE", async: false, data: JSON.stringify({ "key": "" }), dataType: "json", headers: { "Accept": "application/json", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36 Edg/101.0.1210.53", "Referer": `${chartBedUrl}/`, "Authorization": `Bearer ${chartBedToken}`, "Origin": chartBedUrl, }, onload: (r) => { if (code[r.status] != null) { popup.open(code[r.status], 'alert'); res(res_data); return; } let json_data = JSON.parse(r.response); console.log(json_data); }, onerror: (r) => { popup.open("网络异常", 'alert'); res(res_data); } }) }) } function clearData() { chartBedUser = ""; chartBedPwd = ""; chartBedToken = null; loginStatus = false; tokenStatus = false; GM_deleteValue("KggzsChartBedUser"); GM_deleteValue("KggzsChartBedPwd"); } $("#kggzsChartBedBtnUpload i").on("click", async function () { if (tokenStatus) { popup.open('正在配置中...', 'alert'); return; } if (!chartBedUser || !chartBedPwd) { let userInput = prompt('请输入康哥图床的用户和密码,使用空格分割'); if (userInput) { let userInputSplit = userInput.split(" "); let user = userInputSplit[0]; let pwd = userInputSplit[1]; GM_setValue("KggzsChartBedUser", user); GM_setValue("KggzsChartBedPwd", pwd); chartBedUser = user; chartBedPwd = pwd; popup.open('设置完毕,请重新点击', 'alert'); } } else if (chartBedToken == null || !loginStatus) { tokenStatus = true; popup.open('正在配置token', 'alert'); chartBedToken = await getToken(); console.log("token:" + chartBedToken); if (chartBedToken != null) { $("#kggzsfiledata").click(); } else { clearData(); } tokenStatus = false; } else { $("#kggzsfiledata").click(); } }); $("#kggzsfiledata").on("change", (e) => { let chooseImageFiles = e.currentTarget.files; if (chooseImageFiles.length == 0) { return }; popup.open("上传图片中...请稍后", "alert"); console.log(`图片数量:${chooseImageFiles.length}`); $.each(chooseImageFiles, async (i) => { let imageFile = chooseImageFiles[i]; let uploadImageReturn = await uploadImage(imageFile); if (uploadImageReturn["json_data"] != null) { console.log(uploadImageReturn); let image_id_encoded = uploadImageReturn["json_data"]["data"]["key"]; let image_url = uploadImageReturn["json_data"]["data"]["links"]["url"]; let image_thumb_url = uploadImageReturn["json_data"]["data"]["links"]["thumbnail_url"]; let image_name = uploadImageReturn["json_data"]["data"]["origin_name"]; let image_uri = uploadImageReturn["imageUri"]; let uploadImageHTML = ` 插入 `; $("#imglist_kggzs").append($(uploadImageHTML)); chartBed.storage.add("kggzs", image_id_encoded, image_url, image_thumb_url, image_name); } }) $("#kggzsfiledata").val(""); }); $("#imglist_kggzs").on("click", ".delImg", async (e) => { e.preventDefault(); e.currentTarget.parentElement.remove(); // popup.open('删除中,请稍后', 'alert'); // let id_encoded = e.currentTarget.getAttribute("id-encode"); // if(!id_encoded){ // popup.open('获取id_encoded失败,请自行去Hello图床删除', 'alert'); // return; // } // let deleteStatus = await deleteImage(key); // if(deleteStatus){ // e.currentTarget.parentElement.remove(); // chartBed.storage.delete("kggzs",id_encoded); // } }) } function postForumHelloChartBed() { // 发帖快捷图片上传Hello图床 if (!window.location.href.match(mt_config.rexp.post_forum) && !window.location.href.match(mt_config.rexp.edit_forum) && !window.location.href.match(mt_config.rexp.reply_forum) && !window.location.href.match(mt_config.rexp.forum_post) || !GM_getValue("v38")) { return }; GM_addStyle(` .comiis_post_imglist li.up_btn_hello a{ display: block; width: 50px; height: 50px; line-height: 50px; padding: 4px; border-radius: 2px; border-style: dashed; } .comiis_post_imglist li.up_btn_hello a i { position: absolute; top: 11px; left: 5px; z-index: 8; font-size: 26px; width: 50px; height: 50px; line-height: 50px; text-align: center; } .comiis_post_imglist li.up_btn_hello a input { position:absolute; top:11px; left:5px; height:50px; width:50px; z-index:10; opacity:0 } .comiis_post_imglist li .delImg { position:absolute; top:-5px; left:-5px } .comiis_post_imglist li .delImg i { font-size:24px; background:#fff; border-radius:50% } #imglist_hello{ overflow-y: auto; max-height: 200px; } #hellofiledata{ display:none; } `); let imgListParent = $(".comiis_upbox.comiis_allowpostimg.bg_f.cl"); if (!imgListParent.length) { imgListParent = $("#comiis_post_tab .comiis_upbox.bg_f.b_t.b_b.cl"); if (!imgListParent.length) { console.log("未找到图片列表父元素"); return; } }; let imgUploadBtn = ` Hello 20MB `; imgListParent.append($(imgUploadBtn)); let chartBedUrl = "https://www.helloimg.com"; let chartBedUser = GM_getValue("HelloChartBedUser"); let chartBedPwd = GM_getValue("HelloChartBedPwd"); let chartBedAuthToken = null; let loginStatus = false; // 登录状态 let authTokenStatus = false; //authToken状态 let clearData = () => { GM_deleteValue("HelloChartBedUser"); GM_deleteValue("HelloChartBedPwd"); loginStatus = false; authTokenStatus = false; chartBedUser = ""; chartBedPwd = ""; chartBedAuthToken = null; } $("#helloChartBedBtnUpload i").on("click", async function () { if (authTokenStatus) { popup.open('正在配置中...', 'alert'); return; } if (!chartBedUser || !chartBedPwd) { let userInput = prompt('请输入Hello图床的用户和密码,使用空格分割'); if (userInput) { let userInputSplit = userInput.split(" "); let user = userInputSplit[0]; let pwd = userInputSplit[1]; GM_setValue("HelloChartBedUser", user); GM_setValue("HelloChartBedPwd", pwd); chartBedUser = user; chartBedPwd = pwd; popup.open('设置完毕,请重新点击', 'alert'); } } else if (chartBedAuthToken == null || !loginStatus) { authTokenStatus = true; popup.open('正在配置auth_token', 'alert'); chartBedAuthToken = await chartBed.getAuthToken(chartBedUrl); console.log("auth_token:" + chartBedAuthToken); if (chartBedAuthToken != null) { popup.open('正在登录Hello图床', 'alert'); let retloginStatus = await chartBed.login(chartBedUrl, chartBedUser, chartBedPwd, chartBedAuthToken); if (retloginStatus) { loginStatus = true; $("#hellofiledata").click(); } else if (retloginStatus == false) { clearData(); } } authTokenStatus = false; } else { $("#hellofiledata").click(); } }) $("#hellofiledata").on("change", (e) => { let chooseImageFiles = e.currentTarget.files; if (chooseImageFiles.length == 0) { return }; popup.open("上传图片中...请稍后", "alert"); console.log(`图片数量:${chooseImageFiles.length}`); $.each(chooseImageFiles, async (i) => { let imageFile = chooseImageFiles[i]; let uploadImageReturn = await chartBed.uploadImage(chartBedUrl, chartBedAuthToken, imageFile); if (uploadImageReturn["json_data"] != null) { let image_id_encoded = uploadImageReturn["json_data"]["image"]["id_encoded"]; let image_url = uploadImageReturn["json_data"]["image"]["url"]; let image_thumb_url = uploadImageReturn["json_data"]["image"]["thumb"]["url"]; let image_name = uploadImageReturn["json_data"]["image"]["filename"]; let image_uri = uploadImageReturn["imageUri"]; let uploadImageHTML = ` 插入 `; $("#imglist_hello").append($(uploadImageHTML)); chartBed.storage.add("hello", image_id_encoded, image_url, image_thumb_url, image_name); } }) $("#hellofiledata").val(""); }) $("#imglist_hello").on("click", ".delImg", async (e) => { e.preventDefault(); popup.open('删除中,请稍后', 'alert'); let id_encoded = e.currentTarget.getAttribute("id-encode"); if (!id_encoded) { popup.open('获取id_encoded失败,请自行去Hello图床删除', 'alert'); return; } let deleteStatus = await chartBed.deleteImage(chartBedUrl, chartBedAuthToken, id_encoded); if (deleteStatus) { e.currentTarget.parentElement.remove(); chartBed.storage.delete("hello", id_encoded); } }) } async function postForumZ4aChartBed() { // 发帖快捷图片上传z4a图床 if (!window.location.href.match(mt_config.rexp.post_forum) && !window.location.href.match(mt_config.rexp.edit_forum) && !window.location.href.match(mt_config.rexp.reply_forum) && !window.location.href.match(mt_config.rexp.forum_post) || !GM_getValue("v39")) { return }; let imgListParent = $(".comiis_upbox.comiis_allowpostimg.bg_f.cl"); if (!imgListParent.length) { imgListParent = $("#comiis_post_tab .comiis_upbox.bg_f.b_t.b_b.cl"); if (!imgListParent.length) { console.log("未找到图片列表父元素"); return; } }; GM_addStyle(` .comiis_post_imglist li.up_btn_z4a a{ display: block; width: 50px; height: 50px; line-height: 50px; padding: 4px; border-radius: 2px; border-style: dashed; } .comiis_post_imglist li.up_btn_z4a a i { position: absolute; top: 11px; left: 5px; z-index: 8; font-size: 26px; width: 50px; height: 50px; line-height: 50px; text-align: center; } .comiis_post_imglist li.up_btn_z4a a input { position:absolute; top:11px; left:5px; height:50px; width:50px; z-index:10; opacity:0 } .comiis_post_imglist li .delImg { position:absolute; top:-5px; left:-5px } .comiis_post_imglist li .delImg i { font-size:24px; background:#fff; border-radius:50% } #imglist_z4a{ overflow-y: auto; max-height: 200px; } #z4afiledata{ display:none; } `); let imgUploadBtn = ` Z4A 50MB `; imgListParent.append($(imgUploadBtn)); let chartBedUrl = "https://www.z4a.net"; let chartBedUser = GM_getValue("Z4AChartBedUser"); let chartBedPwd = GM_getValue("Z4AChartBedPwd"); let chartBedAuthToken = null; let loginStatus = false; // 登录状态 let authTokenStatus = false; //authToken状态 let clearData = () => { GM_deleteValue("Z4AChartBedUser"); GM_deleteValue("Z4AChartBedPwd"); loginStatus = false; authTokenStatus = false; chartBedUser = ""; chartBedPwd = ""; chartBedAuthToken = null; } $("#z4aChartBedBtnUpload i").on("click", async function () { if (authTokenStatus) { popup.open('正在配置中...', 'alert'); return; } if (!chartBedUser || !chartBedPwd) { let userInput = prompt('请输入Z4A图床的用户和密码,使用空格分割'); if (userInput) { let userInputSplit = userInput.split(" "); let user = userInputSplit[0]; let pwd = userInputSplit[1]; GM_setValue("Z4AChartBedUser", user); GM_setValue("Z4AChartBedPwd", pwd); chartBedUser = user; chartBedPwd = pwd; popup.open('设置完毕,请重新点击', 'alert'); } } else if (chartBedAuthToken == null || !loginStatus) { authTokenStatus = true; popup.open('正在配置auth_token', 'alert'); chartBedAuthToken = await chartBed.getAuthToken(chartBedUrl); console.log("auth_token:" + chartBedAuthToken); if (chartBedAuthToken != null) { popup.open('正在登录Z4A图床', 'alert'); let retloginStatus = await chartBed.login(chartBedUrl, chartBedUser, chartBedPwd, chartBedAuthToken); if (retloginStatus) { loginStatus = true; $("#z4afiledata").click(); } else if (retloginStatus == false) { clearData(); } } authTokenStatus = false; } else { $("#z4afiledata").click(); } }) $("#z4afiledata").on("change", (e) => { let chooseImageFiles = e.currentTarget.files; if (chooseImageFiles.length == 0) { return }; popup.open("上传图片中...请稍后", "alert"); console.log(`图片数量:${chooseImageFiles.length}`); $.each(chooseImageFiles, async (i) => { let imageFile = chooseImageFiles[i]; let uploadImageReturn = await chartBed.uploadImage(chartBedUrl, chartBedAuthToken, imageFile); if (uploadImageReturn["json_data"] != null) { let image_id_encoded = uploadImageReturn["json_data"]["image"]["id_encoded"]; let image_url = uploadImageReturn["json_data"]["image"]["url"]; let image_thumb_url = uploadImageReturn["json_data"]["image"]["thumb"]["url"]; let image_name = uploadImageReturn["json_data"]["image"]["filename"]; let image_uri = uploadImageReturn["imageUri"]; let uploadImageHTML = ` 插入 `; $("#imglist_z4a").append($(uploadImageHTML)); chartBed.storage.add("z4a", image_id_encoded, image_url, image_thumb_url, image_name); } }) $("#z4afiledata").val(""); }) $("#imglist_z4a").on("click", ".delImg", async (e) => { e.preventDefault(); popup.open('删除中,请稍后', 'alert'); let id_encoded = e.currentTarget.getAttribute("id-encode"); if (!id_encoded) { popup.open('获取id_encoded失败,请自行去Z4A图床删除', 'alert'); return; } let deleteStatus = await chartBed.deleteImage(chartBedUrl, chartBedAuthToken, id_encoded); if (deleteStatus) { e.currentTarget.parentElement.remove(); chartBed.storage.delete("z4a", id_encoded); } }) } const chartBed = { ret_code: { 200: { 200: "删除成功" }, 500: { 101: "重复上传", 400: "请求被拒绝,token错误", 401: "请求被拒绝", }, 400: { 100: "删除失败,图片已删除", 101: "重复上传", } }, storage: { add: function (web, id_encoded, url, thumb_url, name) { let localData = GM_getValue("chartBedsImagesHistory") ? GM_getValue("chartBedsImagesHistory") : []; let saveData = localData.concat({ "web": web, "id_encoded": id_encoded, "url": url, "thumb_url": thumb_url, "name": name }); GM_setValue("chartBedsImagesHistory", saveData); }, delete: function (_web_, id_encoded) { let localData = GM_getValue("chartBedsImagesHistory") ? GM_getValue("chartBedsImagesHistory") : []; Array.from(localData).forEach((item, index) => { if (item["web"] == _web_ && item["id_encoded"] == id_encoded) { localData.splice(index, 1); GM_setValue("chartBedsImagesHistory", localData); return; } }) }, get: function () { return GM_getValue("chartBedsImagesHistory") ? GM_getValue("chartBedsImagesHistory") : []; } }, getAuthToken(url) { // 获取图床的auth_token return new Promise(res => { GM_xmlhttpRequest({ url: url, method: "GET", headers: { 'user-agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Mobile Safari/537.36 Edg/94.0.992.38' }, onload: (r) => { let token = r.response.match(/PF.obj.config.auth_token[\s]*=[\s]*"(.+)";/i); if (token.length == 2) { popup.open("auth_token成功获取", "alert"); res(token[1]); } else { console.log(r); popup.open("auth_token获取失败", "alert"); res(null); } }, onerror: () => { popup.open("网络异常", "alert"); res(null) } }) }) }, login(url, user, pwd, auth_token) { // 图床登录 return new Promise(res => { GM_xmlhttpRequest({ url: `${url}/login`, method: "POST", data: `login-subject=${user}&password=${pwd}&auth_token=${auth_token}`, headers: { "Content-Type": "application/x-www-form-urlencoded" }, onload: (e) => { console.log(e); if (e.status == 200 && e.response.match("注销")) { popup.open('登陆成功', 'alert'); res(true); } else { popup.open('登录失败', 'alert'); res(false); } }, onerror: () => { popup.open('网络异常', 'alert'); res(404); } }) }); }, uploadImage(url, auth_token, imageFile) { // 上传图片请求 let res_data = { "imageUri": null, "json_data": null }; let form = new FormData(); form.append("type", "file"); form.append("action", "upload"); form.append("timestamp", new Date().getTime()); form.append("auth_token", auth_token); form.append("nsfw", 0); form.append("source", imageFile); return new Promise(res => { GM_xmlhttpRequest({ url: `${url}/json`, method: "POST", data: form, async: false, dataType: "json", headers: { "Accept": "application/json", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36 Edg/101.0.1210.53", "Referer": `${url}/`, "Origin": url, }, onload: (r) => { let json_data = JSON.parse(r.response); console.log(json_data); let status_code = json_data["status_code"]; if (status_code == 200) { popup.open('上传成功', 'alert'); let file_reader = new FileReader(); //FileReader主要用于将文件内容读入内存,通过一系列异步接口,可以在主线程中访问本地文件 file_reader.readAsDataURL(imageFile); //读取图片的内容生成的base64编码的图 //读取完成后,执行该回调函数,它会返回读取的结果result file_reader.onload = (function () { let imageUri = this.result; // 此时的图片已经存储到了result中 res_data["imageUri"] = imageUri; res_data["json_data"] = json_data; res(res_data); }); } else if (chartBed.ret_code[status_code] != null && chartBed.ret_code[status_code][json_data["error"]["code"]] != null) { popup.open(chartBed.ret_code[status_code][json_data["error"]["code"]], 'alert'); res(res_data); } else { console.log(json_data); res(res_data); } }, onerror: (r) => { console.log(r.response); popup.open("网络异常", 'alert'); res(res_data); } }) }) }, deleteImage(url, auth_token, id_encoded) { // 删除图片请求 return new Promise(res => { GM_xmlhttpRequest({ url: `${url}/json`, method: "POST", data: `auth_token=${auth_token}&action=delete&single=true&delete=image&deleting[id]=${id_encoded}`, headers: { "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8" }, onload: (e) => { let json_data = JSON.parse(e.response); let status_code = json_data["status_code"]; if (status_code == 200 && json_data["success"]["code"] == 200) { popup.open(chartBed.ret_code["200"]["200"], 'alert'); res(true); } else if (status_code == 400 && json_data["error"]["code"] == 100) { popup.open(chartBed.ret_code["400"]["100"], 'alert'); res(true); } else if (chartBed.ret_code[status_code] != null && chartBed.ret_code[status_code][json_data["error"]["code"]] != null) { popup.open(chartBed.ret_code[status_code][json_data["error"]["code"]], 'alert'); res(false); } else { console.log(json_data); popup.open(json_data["error"]["message"], 'alert'); res(false); } }, onerror: () => { popup.open('网络异常', 'alert'); res(false); } }) }) }, } function chatChartBed() { // 聊天快捷图片上传到图床(总) if (!window.location.href.match(mt_config.rexp.chat_url) || !GM_getValue("v40") || !GM_getValue("v41") ) { return }; let imgBtn = ``; let menu = ``; $(".styli_tit.comiis_post_ico.f_c.cl").append($(imgBtn)); $("#comiis_post_tab").append($(menu)); $(".comiis_pictitle").on("click", (e) => { let toShow = false; $("#comiis_post_tab .comiis_minibq").filter(function (i, v) { if (v.style.display != 'none') { toShow = true; } }); if (toShow) { $(".comiis_foot_height").removeClass("comiis_show_smiley"); } else { $(".comiis_foot_height").addClass("comiis_show_smiley"); } }); GM_addStyle(` .comiis_post_imglist li.up_btn_kggzs a, .comiis_post_imglist li.up_btn_hello a, .comiis_post_imglist li.up_btn_z4a a{ display: block; width: 50px; height: 50px; line-height: 50px; padding: 4px; border-radius: 2px; border-style: dashed; } .comiis_post_imglist li.up_btn_kggzs a i, .comiis_post_imglist li.up_btn_hello a i, .comiis_post_imglist li.up_btn_z4a a i { position: absolute; top: 11px; left: 5px; z-index: 8; font-size: 26px; width: 50px; height: 50px; line-height: 50px; text-align: center; } .comiis_post_imglist li.up_btn_kggzs a input, .comiis_post_imglist li.up_btn_hello a input, .comiis_post_imglist li.up_btn_z4a a input { position:absolute; top:11px; left:5px; height:50px; width:50px; z-index:10; opacity:0 } .comiis_post_imglist li .delImg { position:absolute; top:-5px; left:-5px } .comiis_post_imglist li .delImg i { font-size:24px; background:#fff; border-radius:50% } .imgboxlist{ height: 170px; overflow-y: auto; } .menuclicked{ background: #fff; } #kggzsfiledata, #hellofiledata, #z4afiledata{ display: none; } `); if (GM_getValue("chartBedsImagesHistory") == undefined) { GM_setValue("chartBedsImagesHistory", []); } tryCatch(chatKGChartBed); tryCatch(chatHelloChartBed); tryCatch(chatZ4AChartBed); tryCatch(chatHistoryChartBedImages); $("#comiis_img_chartbed_key").children()[0].children[0].click(); } function chatKGChartBed() { // 聊天快捷图片上传康哥图床 if (!GM_getValue("v43")) { return }; let imgUploadBtn = ` 20MB `; let imgMenu = `康哥图床`; $("#comiis_img_chartbed_key").append($(imgMenu)); $(".comiis_minibq .imgboxlist").append($(imgUploadBtn)); $("#menu_kggzs").on("click", (e) => { $("#menu_kggzs").addClass("menuclicked"); // 添加点击菜单背景白色 $("#menu_hello").removeClass("menuclicked"); $("#menu_z4a").removeClass("menuclicked"); $("#menu_chartbed_history").removeClass("menuclicked"); $(".comiis_upbox").hide(); $(".comiis_upbox.kggzschartbed").show(); }); let chartBedUrl = "https://img.kggzs.cn/api/v1"; let chartBedUser = GM_getValue("KggzsChartBedUser"); let chartBedPwd = GM_getValue("KggzsChartBedPwd"); let chartBedToken = null; let loginStatus = false; // 登录状态 let tokenStatus = false; //token状态 let code = { 401: "未登录或授权失败", 403: "管理员关闭了接口功能", 429: "超出请求配额,请求受限", 500: "服务端出现异常" } function getToken() { return new Promise(res => { let formData = new FormData(); formData.append("email", "893177236@qq.com"); formData.append("password", "893177236"); GM_xmlhttpRequest({ url: `${chartBedUrl}/tokens`, method: "POST", data: formData, headers: { "Accept": "application/json" }, onload: (r) => { if (code[r.status] != null) { popup.open(code[r.status], 'alert'); res(null); return; } let json_data = JSON.parse(r.response); if (json_data["status"]) { popup.open("token成功获取", "alert"); res(json_data["data"]["token"]); } else { popup.open(json_data["message"], "alert"); res(null); } }, onerror: () => { popup.open("网络异常"); res(null); } }) }) } function uploadImage(imageFile) { let res_data = { "imageUri": null, "json_data": null }; let form = new FormData(); form.append("strategy_id", 3); form.append("file", imageFile); return new Promise(res => { GM_xmlhttpRequest({ url: `${chartBedUrl}/upload`, method: "POST", data: form, async: false, dataType: "json", headers: { "Accept": "application/json", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36 Edg/101.0.1210.53", "Referer": `${chartBedUrl}/`, "Authorization": `Bearer ${chartBedToken}`, "Origin": chartBedUrl, }, onload: (r) => { if (code[r.status] != null) { popup.open(code[r.status], 'alert'); res(res_data); return; } let json_data = JSON.parse(r.response); console.log(json_data); if (json_data["status"]) { popup.open('上传成功', 'alert'); let file_reader = new FileReader(); //FileReader主要用于将文件内容读入内存,通过一系列异步接口,可以在主线程中访问本地文件 file_reader.readAsDataURL(imageFile); //读取图片的内容生成的base64编码的图 //读取完成后,执行该回调函数,它会返回读取的结果result file_reader.onload = (function () { let imageUri = this.result; // 此时的图片已经存储到了result中 res_data["imageUri"] = imageUri; res_data["json_data"] = json_data; res(res_data); }); } else { console.log(json_data); popup.open(json_data["message"], 'alert'); res(res_data); } }, onerror: (r) => { popup.open("网络异常", 'alert'); res(res_data); } }) }) } function deleteImage(imageKey) { return new Promise(res => { GM_xmlhttpRequest({ url: `${chartBedUrl}/images/:${imageKey}`, method: "DELETE", async: false, data: JSON.stringify({ "key": "" }), dataType: "json", headers: { "Accept": "application/json", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36 Edg/101.0.1210.53", "Referer": `${chartBedUrl}/`, "Authorization": `Bearer ${chartBedToken}`, "Origin": chartBedUrl, }, onload: (r) => { if (code[r.status] != null) { popup.open(code[r.status], 'alert'); res(res_data); return; } let json_data = JSON.parse(r.response); console.log(json_data); }, onerror: (r) => { popup.open("网络异常", 'alert'); res(res_data); } }) }) } function clearData() { chartBedUser = ""; chartBedPwd = ""; chartBedToken = null; loginStatus = false; tokenStatus = false; GM_deleteValue("KggzsChartBedUser"); GM_deleteValue("KggzsChartBedPwd"); } $("#kggzsChartBedBtnUpload i").on("click", async function () { if (tokenStatus) { popup.open('正在配置中...', 'alert'); return; } if (!chartBedUser || !chartBedPwd) { let userInput = prompt('请输入康哥图床的用户和密码,使用空格分割'); if (userInput) { let userInputSplit = userInput.split(" "); let user = userInputSplit[0]; let pwd = userInputSplit[1]; GM_setValue("KggzsChartBedUser", user); GM_setValue("KggzsChartBedPwd", pwd); chartBedUser = user; chartBedPwd = pwd; popup.open('设置完毕,请重新点击', 'alert'); } } else if (chartBedToken == null || !loginStatus) { tokenStatus = true; popup.open('正在配置token', 'alert'); chartBedToken = await getToken(); console.log("token:" + chartBedToken); if (chartBedToken != null) { $("#kggzsfiledata").click(); } else { clearData(); } tokenStatus = false; } else { $("#kggzsfiledata").click(); } }); $("#kggzsfiledata").on("change", (e) => { let chooseImageFiles = e.currentTarget.files; if (chooseImageFiles.length == 0) { return }; popup.open("上传图片中...请稍后", "alert"); console.log(`图片数量:${chooseImageFiles.length}`); $.each(chooseImageFiles, async (i) => { let imageFile = chooseImageFiles[i]; let uploadImageReturn = await uploadImage(imageFile); if (uploadImageReturn["json_data"] != null) { console.log(uploadImageReturn); let image_id_encoded = uploadImageReturn["json_data"]["data"]["key"]; let image_url = uploadImageReturn["json_data"]["data"]["links"]["url"]; let image_thumb_url = uploadImageReturn["json_data"]["data"]["links"]["thumbnail_url"]; let image_name = uploadImageReturn["json_data"]["data"]["origin_name"]; let image_uri = uploadImageReturn["imageUri"]; let uploadImageHTML = ` 插入 `; $("#imglist_kggzs").append($(uploadImageHTML)); chartBed.storage.add("kggzs", image_id_encoded, image_url, image_thumb_url, image_name); } }) $("#kggzsfiledata").val(""); }); $("#imglist_kggzs").on("click", ".delImg", async (e) => { e.preventDefault(); e.currentTarget.parentElement.remove(); // popup.open('删除中,请稍后', 'alert'); // let id_encoded = e.currentTarget.getAttribute("id-encode"); // if(!id_encoded){ // popup.open('获取id_encoded失败,请自行去Hello图床删除', 'alert'); // return; // } // let deleteStatus = await deleteImage(key); // if(deleteStatus){ // e.currentTarget.parentElement.remove(); // chartBed.storage.delete("kggzs",id_encoded); // } }) } function chatHelloChartBed() { // 聊天快捷图片上传Hello图床 if (!GM_getValue("v40")) { return }; let imgUploadBtn = ` 20MB `; let imgMenu = `hello图床`; $("#comiis_img_chartbed_key").append($(imgMenu)); $(".comiis_minibq .imgboxlist").append($(imgUploadBtn)); $("#menu_hello").on("click", (e) => { $("#menu_hello").addClass("menuclicked"); // 添加点击菜单背景白色 $("#menu_kggzs").removeClass("menuclicked"); $("#menu_z4a").removeClass("menuclicked"); $("#menu_chartbed_history").removeClass("menuclicked"); $(".comiis_upbox").hide(); $(".comiis_upbox.hellochartbed").show(); }); let chartBedUrl = "https://www.helloimg.com"; let chartBedUser = GM_getValue("HelloChartBedUser"); let chartBedPwd = GM_getValue("HelloChartBedPwd"); let chartBedAuthToken = null; let loginStatus = false; // 登录状态 let authTokenStatus = false; //authToken状态 let clearData = () => { GM_deleteValue("HelloChartBedUser"); GM_deleteValue("HelloChartBedPwd"); loginStatus = false; authTokenStatus = false; chartBedUser = ""; chartBedPwd = ""; chartBedAuthToken = null; } $("#helloChartBedBtnUpload i").on("click", async function () { if (authTokenStatus) { popup.open('正在配置中...', 'alert'); return; } if (!chartBedUser || !chartBedPwd) { let userInput = prompt('请输入Hello图床的用户和密码,使用空格分割'); if (userInput) { let userInputSplit = userInput.split(" "); let user = userInputSplit[0]; let pwd = userInputSplit[1]; GM_setValue("HelloChartBedUser", user); GM_setValue("HelloChartBedPwd", pwd); chartBedUser = user; chartBedPwd = pwd; popup.open('设置完毕,请重新点击', 'alert'); } } else if (chartBedAuthToken == null || !loginStatus) { authTokenStatus = true; popup.open('正在配置auth_token', 'alert'); chartBedAuthToken = await chartBed.getAuthToken(chartBedUrl); console.log("auth_token:" + chartBedAuthToken); if (chartBedAuthToken != null) { popup.open('正在登录Hello图床', 'alert'); let retloginStatus = await chartBed.login(chartBedUrl, chartBedUser, chartBedPwd, chartBedAuthToken); if (retloginStatus) { loginStatus = true; $("#hellofiledata").click(); } else if (retloginStatus == false) { clearData(); } } authTokenStatus = false; } else { $("#hellofiledata").click(); } }) $("#hellofiledata").on("change", (e) => { let chooseImageFiles = e.currentTarget.files; if (chooseImageFiles.length == 0) { return }; popup.open("上传图片中...请稍后", "alert"); $.each(chooseImageFiles, async (i) => { let imageFile = chooseImageFiles[i]; let uploadImageReturn = await chartBed.uploadImage(chartBedUrl, chartBedAuthToken, imageFile); if (uploadImageReturn["json_data"] != null) { let image_id_encoded = uploadImageReturn["json_data"]["image"]["id_encoded"]; let image_url = uploadImageReturn["json_data"]["image"]["url"]; let image_thumb_url = uploadImageReturn["json_data"]["image"]["thumb"]["url"]; let image_name = uploadImageReturn["json_data"]["image"]["filename"]; let image_uri = uploadImageReturn["imageUri"]; let uploadImageHTML = ` 插入 `; $("#imglist_hello").append($(uploadImageHTML)); chartBed.storage.add("hello", image_id_encoded, image_url, image_thumb_url, image_name); } }) $("#hellofiledata").val(""); }) $("#imglist_hello").on("click", ".delImg", async (e) => { e.preventDefault(); popup.open('删除中,请稍后', 'alert'); let id_encoded = e.currentTarget.getAttribute("id-encode"); if (!id_encoded) { popup.open('获取id_encoded失败,请自行去Hello图床删除', 'alert'); return; } let deleteStatus = await chartBed.deleteImage(chartBedUrl, chartBedAuthToken, id_encoded); if (deleteStatus) { e.currentTarget.parentElement.remove(); chartBed.storage.delete("hello", id_encoded); } }) } function chatZ4AChartBed() { // 聊天快捷图片上传Z4A图床 if (!GM_getValue("v41")) { return }; let imgUploadBtn = ` 50MB `; let imgMenu = `z4a图床`; $("#comiis_img_chartbed_key").append($(imgMenu)); $(".comiis_minibq .imgboxlist").append($(imgUploadBtn)); $("#menu_z4a").on("click", (e) => { $("#menu_z4a").addClass("menuclicked"); // 添加点击菜单背景白色 $("#menu_kggzs").removeClass("menuclicked"); $("#menu_hello").removeClass("menuclicked"); $("#menu_chartbed_history").removeClass("menuclicked"); $(".comiis_upbox").hide(); $(".comiis_upbox.z4achartbed").show(); }); let chartBedUrl = "https://www.z4a.net"; let chartBedUser = GM_getValue("Z4AChartBedUser"); let chartBedPwd = GM_getValue("Z4AChartBedPwd"); let chartBedAuthToken = null; let loginStatus = false; // 登录状态 let authTokenStatus = false; //authToken状态 let clearData = () => { GM_deleteValue("Z4AChartBedUser"); GM_deleteValue("Z4AChartBedPwd"); loginStatus = false; authTokenStatus = false; chartBedUser = ""; chartBedPwd = ""; chartBedAuthToken = null; } $("#z4aChartBedBtnUpload i").on("click", async function () { if (authTokenStatus) { popup.open('正在配置中...', 'alert'); return; } if (!chartBedUser || !chartBedPwd) { let userInput = prompt('请输入Z4A图床的用户和密码,使用空格分割'); if (userInput) { let userInputSplit = userInput.split(" "); let user = userInputSplit[0]; let pwd = userInputSplit[1]; GM_setValue("Z4AChartBedUser", user); GM_setValue("Z4AChartBedPwd", pwd); chartBedUser = user; chartBedPwd = pwd; popup.open('设置完毕,请重新点击', 'alert'); } } else if (chartBedAuthToken == null || !loginStatus) { authTokenStatus = true; popup.open('正在配置auth_token', 'alert'); chartBedAuthToken = await chartBed.getAuthToken(chartBedUrl); console.log("auth_token:" + chartBedAuthToken); if (chartBedAuthToken != null) { popup.open('正在登录Z4A图床', 'alert'); let retloginStatus = await chartBed.login(chartBedUrl, chartBedUser, chartBedPwd, chartBedAuthToken); if (retloginStatus) { loginStatus = true; $("#z4afiledata").click(); } else if (retloginStatus == false) { clearData(); } } authTokenStatus = false; } else { $("#z4afiledata").click(); } }) $("#z4afiledata").on("change", (e) => { let chooseImageFiles = e.currentTarget.files; if (chooseImageFiles.length == 0) { return }; popup.open("上传图片中...请稍后", "alert"); $.each(chooseImageFiles, async (i) => { let imageFile = chooseImageFiles[i]; let uploadImageReturn = await chartBed.uploadImage(chartBedUrl, chartBedAuthToken, imageFile); if (uploadImageReturn["json_data"] != null) { let image_id_encoded = uploadImageReturn["json_data"]["image"]["id_encoded"]; let image_url = uploadImageReturn["json_data"]["image"]["url"]; let image_thumb_url = uploadImageReturn["json_data"]["image"]["thumb"]["url"]; let image_name = uploadImageReturn["json_data"]["image"]["filename"]; let image_uri = uploadImageReturn["imageUri"]; let uploadImageHTML = ` 插入 `; $("#imglist_z4a").append($(uploadImageHTML)); chartBed.storage.add("z4a", image_id_encoded, image_url, image_thumb_url, image_name); } }) $("#z4afiledata").val(""); }) $("#imglist_z4a").on("click", ".delImg", async (e) => { e.preventDefault(); popup.open('删除中,请稍后', 'alert'); let id_encoded = e.currentTarget.getAttribute("id-encode"); if (!id_encoded) { popup.open('获取id_encoded失败,请自行去Z4A图床删除', 'alert'); return; } let deleteStatus = await chartBed.deleteImage(chartBedUrl, chartBedAuthToken, id_encoded); if (deleteStatus) { e.currentTarget.parentElement.remove(); chartBed.storage.delete("z4a", id_encoded); } }) } function chatHistoryChartBedImages() { // 聊天快捷图片上传中 所有图床历史上传过的图片 let historyImages = chartBed.storage.get(); let imageMenu = `历史图片`; $("#comiis_img_chartbed_key").append($(imageMenu)); let imageArea = ` `; $(".comiis_minibq .imgboxlist").append($(imageArea)); $("#menu_chartbed_history").on("click", (e) => { $("#menu_chartbed_history").addClass("menuclicked"); // 添加点击菜单背景白色 $("#menu_z4a").removeClass("menuclicked"); $("#menu_hello").removeClass("menuclicked"); $(".comiis_upbox").hide(); $(".comiis_upbox.chartbedhistory").show(); }); $.each(historyImages, (i) => { let _web = historyImages[i]["web"]; let _url = historyImages[i]["url"]; let _thumb_url = historyImages[i]["thumb_url"]; let _name = historyImages[i]["name"]; let _imageHTML = ` ${_web} `; $("#imglist_history").append($(_imageHTML)); }) $("#imglist_history").on("click", ".delImg", async (e) => { e.preventDefault(); let _t_index = e.currentTarget.getAttribute("t-index"); let imageItem = historyImages[_t_index]; let web = imageItem["web"]; let id_encoded = imageItem["id_encoded"]; e.currentTarget.parentElement.remove(); chartBed.storage.delete(web, id_encoded); }) } function paymentSubjectReminder() { // 付费主题白嫖提醒 let urlForumPostMatchStatus = window.location.href.match(mt_config.rexp.forum_post); let urlHomeSpaceMatchStatus = window.location.href.match(mt_config.rexp.home_space_url); let urlGuideMatchStatus = window.location.href.match(mt_config.rexp.forum_guide_url); let urlCommunityMatchStatus = window.location.href.match(mt_config.rexp.community_url) || window.location.href.match(mt_config.rexp.plate_url); let urlBBSMatchStatus = window.location.href.match(/bbs.binmt.cc/); let storageMatchStatus = GM_getValue("v44") != null; let setTipForumPostList = GM_getValue("tipToFreeSubjectForumPost") == null ? [] : GM_getValue("tipToFreeSubjectForumPost"); const paymentSubjectReminderHome = { getData() { // 获取数据 return GM_getValue("tipToFreeSubjectForumPost") == null ? [] : GM_getValue("tipToFreeSubjectForumPost"); }, setData(data) { // 设置数据 GM_setValue("tipToFreeSubjectForumPost", data); }, async insertButtonView() { // 插入-底部导航-我的-付费主题白嫖列表(按钮) await GM_asyncLoadScript("https://www.jq22.com/demo/NZ-Plugin-MsgBox202201130154/Js/NZ-Plugin/Js/NZ-MsgBox.min.js"); await GM_asyncLoadScript("https://www.jq22.com/demo/NZ-Plugin-MsgBox202201130154/Js/NZ-Plugin/Js/NZ-Drag.min.js"); await GM_asyncLoadStyleSheet("https://www.jq22.com/demo/NZ-Plugin-MsgBox202201130154/Js/NZ-Plugin/Css/NZ-MsgBox.min.css"); let paymentSubjectReminderHomeBtn = document.createElement("a"); paymentSubjectReminderHomeBtn.setAttribute("href", "javascript:;"); paymentSubjectReminderHomeBtn.className = "comiis_flex comiis_styli bg_f b_t cl paymentsubjectreminder"; paymentSubjectReminderHomeBtn.innerHTML = ` 付费主题白嫖列表 `; GM_addStyle(` .NZ-MsgBox-alert .msgcontainer .msgtitle { text-align: center !important; } #autolist .k_misign_lu img { width: 40px; height: 40px; -moz-border-radius: 20px; -webkit-border-radius: 20px; border-radius: 20px; } .k_misign_lc .f_c{ margin: 5px 0px; } `) paymentSubjectReminderHomeBtn.onclick = () => { paymentSubjectReminderHome.showView(); } let parent_ele = document.querySelectorAll(".comiis_myinfo_list.bg_f.cl"); parent_ele[2].append(paymentSubjectReminderHomeBtn); }, showView() { // 显示-付费主题白嫖列表(dialog) let data = paymentSubjectReminderHome.getData(); $.NZ_MsgBox.alert({ title: "付费主题白嫖列表", content: "获取中", type: "", location: "center", buttons: { confirm: { text: "确定" } } }); let notVisitedTipContent = "" //可白嫖且未访问 let notVisitedNums = 0; //可白嫖且未访问的数量 let isFreeContent = ""; // 可白嫖帖子-未读的加左上边红点 let isPaidContent = ""; // 需付费帖子 let isFreeNotVisitedContentList = []; let isFreeContentList = []; let isPaidContentList = []; $.each(data, (i, v) => { let timeColor = "#f91212"; let leftRedBtn = ""; if (new Date().getTime() > v["expirationTimeStamp"]) { // 可白嫖 timeColor = "#1e90ff"; if (v["isVisited"] == false) { leftRedBtn = '' notVisitedNums = notVisitedNums + 1; } } let concatList = { "content": ` ${leftRedBtn} ${v["title"]} ${v["expirationTime"]} `, "timestamp": v["expirationTimeStamp"] }; if (new Date().getTime() > v["expirationTimeStamp"]) { // 可白嫖 if (leftRedBtn != '') { isFreeNotVisitedContentList = isFreeNotVisitedContentList.concat(concatList); } else { isFreeContentList = isFreeContentList.concat(concatList); } } else { isPaidContentList = isPaidContentList.concat(concatList); } }); isFreeNotVisitedContentList.sort(utils.listCompareAscByValue("timestamp")); isFreeContentList.sort(utils.listCompareAscByValue("timestamp")); isFreeContent = utils.listToStringByValue(isFreeNotVisitedContentList, "content") + utils.listToStringByValue(isFreeContentList, "content"); isPaidContent = utils.listToStringByValue(isPaidContentList, "content"); if (notVisitedNums > 0) { notVisitedTipContent = `${notVisitedNums}`; } let dialogIsFreeContent = '可白嫖' + notVisitedTipContent + '' + isFreeContent + ""; let dialogIsPaidContent = '需付费' + isPaidContent + ""; $(".msgcon").html(""); $(".msgcon").append(dialogIsFreeContent); $(".msgcon").append(dialogIsPaidContent); $(".NZ-MsgBox-alert.NZ-MsgBox--motion").css("top", "100px"); $(".msgcon").css("height", "400px"); $(".delsubjecttip i.comiis_font").on("click", (e) => { var confirmStatus = confirm("确定移出提醒?"); var t_index = e.target.parentElement.getAttribute("t-index"); if (confirmStatus) { data.splice(t_index, 1); console.log(data); paymentSubjectReminderHome.setData(data); e.target.parentElement.parentElement.parentElement.parentElement.parentElement.remove(); } }); $("#paymentSubjectReminderIsFreeList").on("click", "a", (e) => { var t_index = e.target.getAttribute("t-index"); var t_href = e.target.getAttribute("t-href"); console.log(t_index, t_href); data[t_index]["isVisited"] = true; paymentSubjectReminderHome.setData(data); window.open(t_href, "_blank"); e.target.setAttribute("style", "color: #000000;"); if (e.target.parentElement.parentElement.children[0].className != "icon_msgs bg_del") { return; } e.target.parentElement.parentElement.children[0].remove(); $("#paymentSubjectReminderIsFreeList").append(e.target.parentElement.parentElement.parentElement.parentElement.parentElement); let notVisitedNums = $(".subjectcanvisit summary span.icon_msgs.bg_del.f_f").text(); notVisitedNums = parseInt(notVisitedNums) - 1; if (notVisitedNums > 0) { $(".subjectcanvisit summary span.icon_msgs.bg_del.f_f").html(notVisitedNums); } else { $(".subjectcanvisit summary span.icon_msgs.bg_del.f_f").remove(); } }) $("#paymentSubjectReminderIsPaidList").on("click", "a", (e) => { var t_index = e.target.getAttribute("t-index"); var t_href = e.target.getAttribute("t-href"); console.log(t_index, t_href); window.open(t_href, "_blank"); e.target.setAttribute("style", "color: #000000;"); }) } } if (storageMatchStatus && urlForumPostMatchStatus) { // 帖子内部-添加进提醒的按钮或者已添加进提醒的按钮点击移出 let paySubjectTip = $("span.kmren"); // 购买主题的元素 if (paySubjectTip.length != 0) { log.success("当前帖子存在需要购买主题"); let isAddTip = false; let tipBtnHTML = ''; Array.from(setTipForumPostList).forEach((item, index) => { if (window.location.href.match(item["url"])) { isAddTip = true; return; } }); if (isAddTip) { log.success("已设置提醒"); tipBtnHTML = $(``); tipBtnHTML.on("click", () => { let confirmStatus = confirm("确定移出提醒?"); if (confirmStatus) { Array.from(setTipForumPostList).forEach((item, index) => { if (window.location.href.match(item["url"])) { setTipForumPostList.splice(index, 1); GM_setValue("tipToFreeSubjectForumPost", setTipForumPostList); popup.open("移出成功", "alert"); setTimeout(function () { window.location.reload(); }, 1500); return; } }); } }); } else { log.success("未设置提醒"); tipBtnHTML = $(``); tipBtnHTML.on("click", () => { let expirationTimeMatch = $(".kmren").parent().text().replace(/\t|\n/g, "").match(/[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}[\s]{1}[0-9]{1,2}:[0-9]{1,2}/); if (expirationTimeMatch.length == 0) { popup.open("获取付费主题到期时间失败", "alert"); return; } let expirationTime = expirationTimeMatch[0]; let expirationTimeStamp = utils.dateStringFormatToStamp(expirationTime); setTipForumPostList = setTipForumPostList.concat({ "url": window.location.href, "title": document.title.replace(" - MT论坛", ""), "expirationTime": expirationTime, "expirationTimeStamp": expirationTimeStamp, "isVisited": false }); GM_setValue("tipToFreeSubjectForumPost", setTipForumPostList); popup.open("添加成功", "alert"); setTimeout(function () { window.location.reload(); }, 1500); }); } $(".comiis_head.f_top .header_y").append(tipBtnHTML); }; } if (storageMatchStatus && urlHomeSpaceMatchStatus) { // 底部导航-我的-提供类似小黑屋这种可查看设置提醒的帖子 paymentSubjectReminderHome.insertButtonView(); } if (storageMatchStatus) { // 设置提醒小红点 function getTipNums() { let needTipNums = 0; Array.from(paymentSubjectReminderHome.getData()).forEach((item, index) => { if (new Date().getTime() > item["expirationTimeStamp"] && item["isVisited"] == false) { needTipNums += 1; } }); return needTipNums; } if (urlHomeSpaceMatchStatus || urlGuideMatchStatus || urlCommunityMatchStatus) { // 当前网页为,底部导航-我的 let redBtn = $(".icon_msgs.bg_del.f_f"); // 底部导航-我的-右上角小红点 let tipNums = 0; if (redBtn.length) { tipNums = parseInt(redBtn.text()); $(".icon_msgs.bg_del.f_f").html(tipNums + getTipNums()); $(".comiis_head .header_z .kmuser em").append($(``)); } else { let tipnums = getTipNums(); if (tipnums) { $("ul.comiis_flex li.flex a[title='我的'] i.comiis_font").append($(`${tipnums}`)); $(".comiis_head .header_z .kmuser em").append($(``)); } } } if (urlHomeSpaceMatchStatus) { // 当前网页为,底部导航-我的-付费主题白嫖列表中最右边 let tipnums = getTipNums(); if (tipnums) { $(".comiis_flex.comiis_styli.paymentsubjectreminder div.flex").after($(`${tipnums}`)); } } if (urlBBSMatchStatus) { // 当前网页为,全部 let redBtn = $(".sidenv_num.bg_del.f_f"); // 侧边栏-头像-右上角小红点 let tipNums = 0; if (redBtn.length) { tipNums = parseInt(redBtn.text()); $(".sidenv_num.bg_del.f_f").html(tipNums + getTipNums()); } else { let tipnums = getTipNums(); if (tipnums) { $(".sidenv_user em").before($(`${tipnums}`)); } } } } } function userCheckBoxSettings() { // 设置的html function checkboxNode(){ return $(".whitesevcheckbox"); } function selectedNodeText(){ let selectedVal = selectNode().val(); return $(`.beauty-select option[value='${selectedVal}']`).text(); } function selectNode(){ return $(".beauty-select"); } function setCodeNodeCheckedStatus(status){ // 设置 开关的状态 if(status){ checkboxNode().removeClass("comiis_checkbox_close"); }else{ checkboxNode().addClass("comiis_checkbox_close"); } } function setLastClickItem() { //初始化设置上次点击的select内容 let selectNodeNormalVal = GM_getValue("last") == null ? "v2":GM_getValue("last"); selectNode().val(selectNodeNormalVal); setCodeNodeCheckedStatus(GM_getValue(selectNodeNormalVal) != null ? true : false); } function setSelectNodeChangeEvent() { // 设置选项的change事件 selectNode().change(function () { let selected_value = $('.beauty-select').val(); GM_setValue("last", selected_value); let check_value = GM_getValue(selected_value) != null ? true:false; setCodeNodeCheckedStatus(check_value); }); } function setCodeNodeClickEvent() { // 设置开关的click事件 checkboxNode().on("click",(e)=>{ let selected_value = selectNode().val(); let check_value = GM_getValue(selected_value) != null ? false:true; if(check_value){ GM_setValue(selected_value,true); }else{ GM_deleteValue(selected_value); } // let showText = check_value ? `${selectedNodeText()}开启` : `${selectedNodeText()}关闭`; // iosOverlay({ // text: showText, // duration: 1500, // icon: "https://www.helloimg.com/images/2022/05/24/ZoDS05.png" // }); let showText = check_value ? '设置-开启' : '设置-关闭'; popup.open(showText,"alert"); setCodeNodeCheckedStatus(check_value); }) } function setSelectNodeCSS() { GM_addStyle(` .beauty-select{ background-color: #fff; height:28px; width:180px; line-height:28px; border: 1px solid #ececec; background: url(w.png) no-repeat; background-position: 95% 50%; -webkit-appearance: none; /*去掉样式 for chrome*/ appearance:none;/*去掉样式*/ -moz-appearance:none;/*去掉样式*/ }`); } if (window.location.href.match(mt_config.rexp.home_space_url) != null) { var setting_content = document.createElement("li"); setting_content.className = "f_b"; setting_content.innerHTML = '' + '识别链接<\/option>' + '自动签到<\/option>' + '自动展开帖子<\/option>' + '自适应帖子内图片的宽度<\/option>' + '显示用户的UID<\/option>' + '显示搜索历史<\/option>' + '移除帖子字体效果<\/option>' + '移除评论区字体效果<\/option>' + '评论区开启点评<\/option>' + '自动加载上一页评论<\/option>' + '自动加载下一页评论<\/option>' + '小黑屋<\/option>' + '快捷回复UBB代码<\/option>' + '完整回复UBB代码<\/option>' + '今日签到之星<\/option>' + '帖外预览图片<\/option>' + '修复搜索的清空按钮<\/option>' + '修复无法正确进入别人的空间<\/option>' + '康哥图床-帖子内(20MB)<\/option>' + 'Hello图床-帖子内(20MB)<\/option>' + 'Z4A图床-帖子内<\/option>' + '康哥图床-聊天内(20MB)<\/option>' + 'Hello图床-聊天内(20MB)<\/option>' + 'Z4A图床-聊天内(50MB)<\/option>' + '付费主题白嫖提醒<\/option>' + '<\/select>' + '' + '<\/div>'; setting_content.style = "margin: 0px 15px;display: flex;align-items: center;border-top: 1px solid rgb(239, 239, 239) !important;height: 47px;"; let mt_commis_menu = document.getElementsByClassName("comiis_myinfo_list bg_f cl")[1]; mt_commis_menu.appendChild(setting_content); tryCatch(setSelectNodeCSS); tryCatch(setLastClickItem); tryCatch(setCodeNodeClickEvent); tryCatch(setSelectNodeChangeEvent); // tryCatch(loadCheckboxTipResource); } } function mobileMainRunScript() { tryCatch(commentsAddReviews); tryCatch(recoveryIMGWidth); tryCatch(identifyLinks); tryCatch(showUserUID); tryCatch(previewPictures); tryCatch(removeForumPostFontStyle); tryCatch(modifyForumPostFontColor); tryCatch(autoSignIn); tryCatch(autoExpendFullTextByForumPost); tryCatch(searchHistory); tryCatch(loadNextComments, '', '$("#loading-comment-tip").text("加载评论失败")'); tryCatch(loadPrevComments, '', '$("#loading-comment-tip-prev").text("加载评论失败")'); tryCatch(repairClearSearchInput); tryCatch(repairUnableToEnterOtherSpaceCorrectly); tryCatch(postForumKGChartBed); tryCatch(postForumHelloChartBed); tryCatch(postForumZ4aChartBed); tryCatch(chatChartBed); tryCatch(paymentSubjectReminder); } function entrance() { //这是入口 var usa = navigator.userAgent.match(mt_config.rexp.pc_useragent); if (usa != null) { tryCatch(repairPCNoLoadResource); $(document).ready(function () { tryCatch(latestReleaseForumPost); // tryCatch(detectUserOnlineStatus); tryCatch(identifyLinks); tryCatch(collectionForumPost); tryCatch(quickReply); tryCatch(showUserLevel); tryCatch(autoSignIn); }); } else { $(document).ready(function () { tryCatch(compatiblePartialFunction); mobileMainRunScript(); tryCatch(shieldUser); tryCatch(shieldPlate); tryCatch(userCheckBoxSettings); // 选项主要界面内容 tryCatch(blackHome.insertMobileBlackHomeButton); tryCatch(quickUBB.insertQuickReplyUBB); tryCatch(quickUBB.insertReplayUBB); tryCatch(blacklistShieldUsersOrBlocks); tryCatch(showTodayStar); tryCatch(showSignInRanking); pageAfterDOMChangeRunFunction(); }) } } //function entrance()的结束处 $(document).ready(function () { entrance() }); })();
月天数 ` + people["monthDays"] + ` 天 , 上次奖励 ` + people["reward"] + `
操作行为: ` + value["action"] + `
过期时间: ` + value["groupexpiry"] + `
操作人员: ` + value["operator"] + `
' + e + '<\/a><\/p>Lv'; c.appendChild(d); } } function showUserUID() { //显示用户的uid if (GM_getValue("v15") && ((window.location.href.match(mt_config.rexp.forum_post_guide_url) || (window.location.href.match(mt_config.rexp.forum_post)) || (window.location.href.match(mt_config.rexp.plate_url)) || (window.location.href.match(mt_config.rexp.search_url)) ))) { window.findUserFormList = false; window.findUserFormListNums = 0; let findSetInval = setInterval(function () { let formList = mt_config.dom_obj.comiis_formlist() ? mt_config.dom_obj.comiis_formlist() : []; formList = formList.length == 0 ? mt_config.dom_obj.comiis_postli() : formList; formList = formList.length == 0 ? mt_config.dom_obj.comiis_mmlist() : formList; window.findUserFormList = formList.length ? true : false; if (findUserFormListNums >= 10) { console.log("未出现,清理定时器"); clearInterval(findSetInval); } if (window.findUserFormList) { GM_addStyle(` .comiis_postli_top.bg_f.b_t h2{ height: auto; }`); function matchUIDByArray(data) { for (let i = 0; i < data.length; i++) { let url = data[i].href; let uid = url.match(mt_config.rexp.mt_uid); if (uid) { return uid[1]; } } return null } $.each(formList, (index, value) => { let mtUIDOM = value.getElementsByClassName("mt_uid_set"); if (!mtUIDOM.length) { let childrenByATagetElement = value.getElementsByTagName("a"); let mt_uid = null; mt_uid = matchUIDByArray(childrenByATagetElement); if (mt_uid != null) { let uid_control = document.createElement("a"); let mtUidDomInsertElement = value.getElementsByClassName("top_lev")[0]; let uid_control_height = getComputedStyle(mtUidDomInsertElement, null)["height"]; let uid_control_margin = getComputedStyle(mtUidDomInsertElement, null)["margin"]; let uid_control_padding = getComputedStyle(mtUidDomInsertElement, null)["padding"]; let uid_control_line_height = getComputedStyle(mtUidDomInsertElement, null)["line-height"]; let uid_control_font = getComputedStyle(mtUidDomInsertElement, null)["font"]; uid_control.className = "mt_uid_set"; uid_control.style = ` font: ${uid_control_font}; background: rgb(255, 118, 0); color: white; float: left; margin: ${uid_control_margin}; padding: ${uid_control_padding}; height: ${uid_control_height}; line-height: ${uid_control_line_height}; border-radius: 1.5px;`; uid_control.innerHTML = "UID:" + mt_uid; uid_control.onclick = function () { try { GM_setClipboard(mt_uid); popup.open(`${mt_uid}已复制`,"alert"); // iosOverlay({ // text: mt_uid + "已复制", // duration: 2000, // icon: "https://www.helloimg.com/images/2022/05/24/ZoDS05.png" // }); console.log("复制:", mt_uid) } catch (err) { popup.open(`${mt_uid}复制失败`,"alert"); console.log("复制失败:"+mt_uid, err); // iosOverlay({ // text: mt_uid + "复制失败", // duration: 2000, // icon: "https://whitesev.gitee.io/static_resource/ios_loading/img/cross.png" // }); } } mtUidDomInsertElement.parentElement.append(uid_control); } } }) console.log("出现,清理定时器"); clearInterval(findSetInval); } else { findUserFormListNums += 1; } }, 800) } } function shieldUser() { // 屏蔽用户 if (window.location.href.match(mt_config.rexp.forum_guide_url) || window.location.href.match(mt_config.rexp.plate_url)) { console.log("屏蔽YH——1"); let infos = document.querySelectorAll(".comiis_forumlist .forumlist_li"); let black_list = GM_getValue("blacklistuid") ? GM_getValue("blacklistuid") : ""; let black_list_array = black_list.split(","); Array.from(infos).forEach((info) => { let usr = info.getElementsByClassName("wblist_tximg")[0].href; let usr_uid = usr.match(mt_config.rexp.mt_uid)[1]; if (black_list_array.indexOf(usr_uid) != -1) { console.log("屏蔽用户:" + usr_uid); info.setAttribute("style", "display:none !important;"); } }) } if (window.location.href.match(mt_config.rexp.forum_post)) { console.log("屏蔽YH——2"); let comments = document.querySelectorAll(".comiis_postlist .comiis_postli"); let black_list = GM_getValue("blacklistuid") ? GM_getValue("blacklistuid") : ""; let black_list_array = black_list.split(","); Array.from(comments).forEach((comment) => { let usr = comment.getElementsByClassName("postli_top_tximg")[0].href; let usr_uid = usr.match(mt_config.rexp.mt_uid)[1]; if (black_list_array.indexOf(usr_uid) != -1) { console.log("屏蔽用户:" + usr_uid); comment.setAttribute("style", "display:none !important;"); } }) } } function shieldPlate() { // 屏蔽板块 if (window.location.href.match(mt_config.rexp.forum_guide_url)) { console.log("屏蔽BK"); let infos = document.querySelectorAll(".comiis_forumlist .forumlist_li"); let black_list = GM_getValue("blacklistplate") ? GM_getValue("blacklistplate") : ""; let black_list_array = black_list.split("、"); Array.from(infos).forEach((info) => { let from_plate = info.querySelector(".forumlist_li_time a.f_d").text; from_plate = from_plate.replace(/\s*/g, ""); from_plate = from_plate.replace("来自", ""); if (black_list_array.indexOf(from_plate) != -1) { console.log("屏蔽板块:" + from_plate); info.setAttribute("style", "display:none !important;"); } }) } } function autoExpendFullTextByForumPost() { //自动展开帖子内容 if (GM_getValue("v18") && location.href.match(mt_config.rexp.forum_post)) { GM_addStyle(` div.comiis_message.bg_f.view_one.b_b.cl.message > div.comiis_messages.comiis_aimg_show.cl{ max-height: inherit !important; overflow-y: inherit !important; position: inherit !important; } .comiis_lookfulltext_key, .comiis_lookfulltext_bg{ display: none !important; }`) } } function recoveryIMGWidth() { // 修复图片宽度 if (GM_getValue("v16") && location.href.match(mt_config.rexp.forum_post)) { GM_addStyle(` .comiis_messages img{ max-width: 100% !important; } `) } } function needRepeatLoadingJSResource() { //帖子内需要重复执行的js tryCatch(shieldUser); tryCatch(commentsAddReviews); tryCatch(identifyLinks); tryCatch(showUserUID); tryCatch(previewPictures); tryCatch(modifyForumPostFontColor); popup.init(); } function loadNextComments() { // 加载下一页的评论 function autoLoadNextPageComments(post_comments_list) { //自动加载下一页的评论 $("#loading-comment-tip")[0].parentElement.style.display = ""; let next_page_url = post_comments_list.children[2].href let isloding_flag = false; console.log("获取下一页:", next_page_url); if (next_page_url.indexOf("javascript:;") != -1) { console.log(post_comments_list); console.log("无多页评论"); $("#loading-comment-tip")[0].parentElement.style.display = "none"; return; } function _loadNextComments_() { if (isloding_flag == false) { isloding_flag = true; $("#loading-comment-tip").text("正在加载评论中..."); $("#loading-comment-tip")[0].parentElement.style.display = ""; $.get(next_page_url, function (data, status, xhr) { console.log("正在请求的下一页url", next_page_url); let postlist = $(data); let kqideSourceNode = $(".comiis_postlist.kqide"); let postDOM = postlist.find(".comiis_postlist.kqide").html(); let get_next_page_url = postlist.find(".nxt"); if (get_next_page_url.length != 0) { console.log("成功获取到下一页-评论"); next_page_url = get_next_page_url.attr("href"); $("#loading-comment-tip")[0].parentElement.style.display = "none"; } else { console.log("评论全部加载完毕,关闭监听事件"); $(".comiis_page.bg_f").remove(); $("#loading-comment-tip").text("已加载完所有评论") $("#loading-comment-tip")[0].parentElement.style.display = ""; $("#loading-comment-tip").unbind("click", _loadNextComments_); $(window).unbind("scroll"); } isloding_flag = false; kqideSourceNode.append(postDOM); needRepeatLoadingJSResource(); }) } else { console.log("正在加载中请稍后"); } } $(window).bind("scroll", function () { // scroll at bottom if (Math.ceil($(window).scrollTop() + $(window).height() + 150) >= $(document).height()) { // load data _loadNextComments_(); } }) $("#loading-comment-tip").text("请上下滑动或点击加载"); $("#loading-comment-tip").bind("click", _loadNextComments_); } if (GM_getValue("v21") && window.location.href.match(mt_config.rexp.forum_post)) { let tip_html = ` 正在等待页面加载完毕 `; $(".comiis_bodybox").append($(tip_html)); let commentsEle = document.querySelector(".comiis_pltit span.f_d") || document.querySelector("#comiis_foot_memu .comiis_kmvnum"); if (document.querySelector(".comiis_pltit h2") && document.querySelector(".comiis_pltit h2").textContent.indexOf("暂无评论") != -1) { console.log("暂无评论"); $("#loading-comment-tip")[0].parentElement.style.display = "none"; return; } let commentsNum = parseInt(commentsEle.textContent); if (commentsNum >= 10) { let setAutoLoadInterval = setInterval(function () { let post_comments_list = document.querySelector(".comiis_page.bg_f"); //评论列表 if (post_comments_list) { autoLoadNextPageComments(post_comments_list); clearInterval(setAutoLoadInterval); } else { console.log("正在等待下一页列表元素出现"); } }, 500) } else { console.log("无多页评论"); $("#loading-comment-tip")[0].parentElement.style.display = "none"; } } } function loadPrevComments() { //加载上一页的评论 function autoLoadPrevPageComments() { //自动加载上一页的评论 let post_comments_list = document.querySelector(".comiis_page.bg_f"); let prev_page_url = post_comments_list.children[0].href let isloding_flag = false; console.log("获取上一页:", prev_page_url); $("#loading-comment-tip-prev").text("请上下滑动或点击加载"); $("#loading-comment-tip-prev").bind("click", loadPrevComments); function loadPrevComments() { if (isloding_flag) { console.log("正在加载上一页中请稍后"); } else { isloding_flag = true; $("#loading-comment-tip-prev").text("正在加载评论中..."); $("#loading-comment-tip-prev")[0].parentElement.style.display = ""; $.get(prev_page_url, function (data, status, xhr) { console.log("正在请求的上一页评论:", prev_page_url); let postlist = $(data); let kqideSourceNode = $(".comiis_postlist.kqide"); let postDOM = postlist.find(".comiis_postlist.kqide").html(); let get_pregv_page_url = postlist.find(".prev"); if (get_pregv_page_url.length != 0) { console.log("成功获取到上一页-评论"); prev_page_url = get_pregv_page_url.attr("href"); $("#loading-comment-tip-prev")[0].parentElement.style.display = "none"; isloding_flag = false; kqideSourceNode.prepend(postDOM); needRepeatLoadingJSResource(); } else { isloding_flag = false; kqideSourceNode.prepend(postDOM); console.log("上一页评论全部加载完毕,关闭监听事件"); let page_title = postlist.find(".comiis_viewtit")[0].outerHTML; console.log($(page_title)); kqideSourceNode.prepend($(page_title)[0]); needRepeatLoadingJSResource(); // $(".comiis_page.bg_f").remove(); $("#loading-comment-tip-prev").remove(); $("#loading-comment-tip-prev").unbind("click", loadPrevComments); $(window).unbind("scroll"); } }) } // $(window).unbind("scroll",loadPrevComments); } $(window).bind("scroll", function () { if ($(window).scrollTop() <= 50) { loadPrevComments(); } }); } if (GM_getValue("v32") && window.location.href.match(mt_config.rexp.forum_post)) { if (!document.querySelector(".comiis_pltit span.f_d")) { console.log("当前不在第一页,加载上一页评论"); let tip_html = ` 正在等待页面加载完毕 `; $(".comiis_bodybox script")[0].after($(tip_html)[0]); if (document.querySelector(".comiis_pltit h2") && document.querySelector(".comiis_pltit h2").textContent.indexOf("暂无评论") != -1) { console.log("暂无上一页评论"); $("#loading-comment-tip-prev")[0].parentElement.style.display = "none"; return; } autoLoadPrevPageComments(); } } } function Hooks() { // hook?用不到 return { initEnv: function () { Function.prototype.hook = function (realFunc, hookFunc, context) { var _context = null; //函数上下文 var _funcName = null; //函数名 _context = context || window; _funcName = getFuncName(this); _context['realFunc_' + _funcName] = this; console.log(window); if (_context[_funcName].prototype && _context[_funcName].prototype.isHooked) { console.log("Already has been hooked,unhook first"); return false; } function getFuncName(fn) { // 获取函数名 var strFunc = fn.toString(); var _regex = /function\s+(\w+)\s*\(/; var patten = strFunc.match(_regex); if (patten) { return patten[1]; }; return ''; } try { eval('_context[_funcName] = function ' + _funcName + '(){\n' + 'var args = Array.prototype.slice.call(arguments,0);\n' + 'var obj = this;\n' + 'hookFunc.apply(obj,args);\n' + "return _context['realFunc_" + _funcName + "'].apply(obj,args);\n" + '};'); _context[_funcName].prototype.isHooked = true; return true; } catch (e) { console.log("Hook failed,check the params."); return false; } } Function.prototype.unhook = function (realFunc, funcName, context) { var _context = null; var _funcName = null; _context = context || window; _funcName = funcName; if (!_context[_funcName].prototype.isHooked) { console.log("No function is hooked on"); return false; } _context[_funcName] = _context['realFunc' + _funcName]; delete _context['realFunc_' + _funcName]; return true; } }, cleanEnv: function () { if (Function.prototype.hasOwnProperty("hook")) { delete Function.prototype.hook; } if (Function.prototype.hasOwnProperty("unhook")) { delete Function.prototype.unhook; } return true; } }; } function pageAfterDOMChangeRunFunction() { // 当页面内容元素添加时需要执行的函数 if (window.location.href.match(/bbs.binmt.cc\/forum/)) { function beforeHookRun() { tryCatch(showUserUID); tryCatch(previewPictures); tryCatch(shieldUser); tryCatch(shieldPlate); } document.body.addEventListener("DOMNodeInserted", (event) => { let ele = event.target; if (ele.className != null && ele.className.indexOf("comiis_forumlist") != -1) { beforeHookRun(); } }) } } function previewPictures() { // 贴外预览图片 if (GM_getValue("v34") && ((window.location.href.match(mt_config.rexp.forum_post_guide_url) || (window.location.href.match(mt_config.rexp.forum_post)) || (window.location.href.match(mt_config.rexp.plate_url)) || (window.location.href.match(mt_config.rexp.search_url)) ))) { function getFormList() { let formList = mt_config.dom_obj.comiis_formlist() ? mt_config.dom_obj.comiis_formlist() : []; formList = formList.length == 0 ? mt_config.dom_obj.comiis_postli() : formList; formList = formList.length == 0 ? mt_config.dom_obj.comiis_mmlist() : formList; return formList; } let formlist = null; let isFindFormList = false; let findFormListNums = 0; let waitFormListAppear = setInterval(function () { if (isFindFormList) { formlist = getFormList(); main(); clearInterval(waitFormListAppear) } else { if (findFormListNums >= 10) { console.log("未出现帖子或寻找贴子超时,清理定时器"); clearInterval(waitFormListAppear); } isFindFormList = getFormList().length ? true : false; findFormListNums += 1; } }, 800); function getPreviewPicturesEle(dom) { let pre_dom = document.createElement("li"); pre_dom.className = "f_c"; pre_dom.setAttribute("style", "width:25vw;"); let imageDOM = dom.querySelectorAll(".comiis_pyqlist_img").length ? dom.querySelectorAll(".comiis_pyqlist_img") : dom.querySelectorAll(".comiis_pyqlist_imgs"); if (imageDOM.length) { pre_dom.innerHTML = '预览图片'; $.each(imageDOM, function (i, v) { let imgs = v.querySelectorAll("img"); Array.from(imgs).forEach(_img_ => { pre_dom.innerHTML = pre_dom.innerHTML + ``; }) }) pre_dom.onclick = function () { let img_list = $(this)[0].querySelectorAll("img"); let img_items = []; let now_picture_num = 1; for (var k = 0; k < img_list.length; k++) { let img_url = img_list[k].getAttribute("data-src"); let img_dict = {}; let full_picture = null; if (img_url.match(/res-bbs.mt2.cn/) && img_url.match(/size=[\d]*x9999/)) { console.log("gif图"); full_picture = img_url; } else { // full_picture = img_url.replace(/size=[\d]*x[\d]*/, "size=600x1000"); // full_picture = full_picture.replace(/_[\d]*_[\d]*.jpg/, "_600_1000.jpg"); full_picture = img_url; } img_dict["src"] = full_picture; img_dict["srct"] = img_url; img_dict["title"] = "图片" + now_picture_num.toString(); img_dict["ID"] = hex_md5(img_url); img_items.push(img_dict); now_picture_num = now_picture_num + 1; } $('#picture_review').nanogallery2('destroy'); jQuery("#picture_review").nanogallery2({ thumbnailWidth: 150, thumbnailHeight: 150, items: img_items, thumbnailSelectable: false }); window.location.hash = '#nanogallery/picture_review/0/' + img_items[0]["ID"]; } return pre_dom; } else { // pre_dom.innerHTML = '无'; return null; } } function main() { // blackHome.loadJS("https://lf26-cdn-tos.bytecdntp.com/cdn/expire-1-M/nanogallery2/3.0.5/jquery.nanogallery2.min.js"); if (window.hasOwnProperty("loadPreviewPictureCSS")) { console.log("已加载过预览图片"); } else { GM_asyncLoadStyleSheet("https://lf3-cdn-tos.bytecdntp.com/cdn/expire-1-M/nanogallery2/3.0.5/css/nanogallery2.min.css"); GM_asyncLoadStyleSheet("https://lf3-cdn-tos.bytecdntp.com/cdn/expire-1-M/nanogallery2/3.0.5/css/nanogallery2.woff.min.css"); window.loadPreviewPictureCSS = true; } let global_review = document.createElement("div"); global_review.id = "picture_review"; // $(".comiis_bodybox")[0].prepend(global_review); // debug使用 global_review.setAttribute("style", "display:none"); document.body.append(global_review); $.each(formlist, function (index, value) { let formBottomEle = value.querySelectorAll(".comiis_znalist_bottom.b_t.cl ul.cl li"); if (formBottomEle.length == 3) { let clParentEle = formBottomEle[0].parentElement; let previewPicturesEle = getPreviewPicturesEle(value); if (previewPicturesEle != null) { Array.from(formBottomEle).forEach(e => { e.setAttribute("style", "width: 25vw"); }); clParentEle.append(previewPicturesEle); } } else if (formBottomEle.length == 4) { console.log("已经插入过预览图片"); } else { console.log("没有阅读、评论、赞"); } }) } } } function repairClearSearchInput() { // 修复搜索的清空按钮 if (GM_getValue("v36") && window.location.href.match(mt_config.rexp.search_url)) { let $search_input = $(".ssclose.bg_e.f_e"); if ($search_input) { $search_input.click(function (e) { e.preventDefault(); $("#scform_srchtxt").val("") }) } else { log.error("搜索界面: 获取清空按钮失败"); } } } function repairUnableToEnterOtherSpaceCorrectly() { // 修复无法正确进入别人的空间 if (GM_getValue("v37") && window.location.href.match(mt_config.rexp.home_url_brief)) { let href_params = window.location.href.match(/home.php\?(.+)/gi); href_params = href_params[href_params.length - 1]; let params_split = href_params.split("&"); if (params_split.length == 2 && href_params.indexOf("uid=") != -1 && href_params.indexOf("mod=space") != -1) { window.location.href = window.location.href + "&do=profile"; } } } function postForumKGChartBed() { // 发帖快捷图片上传 康哥图床 if (!window.location.href.match(mt_config.rexp.post_forum) && !window.location.href.match(mt_config.rexp.edit_forum) && !window.location.href.match(mt_config.rexp.reply_forum) && !window.location.href.match(mt_config.rexp.forum_post) || !GM_getValue("v42")) { return }; GM_addStyle(` .comiis_post_imglist li.up_btn_kggzs a{ display: block; width: 50px; height: 50px; line-height: 50px; padding: 4px; border-radius: 2px; border-style: dashed; } .comiis_post_imglist li.up_btn_kggzs a i { position: absolute; top: 11px; left: 5px; z-index: 8; font-size: 26px; width: 50px; height: 50px; line-height: 50px; text-align: center; } .comiis_post_imglist li.up_btn_kggzs a input { position:absolute; top:11px; left:5px; height:50px; width:50px; z-index:10; opacity:0 } .comiis_post_imglist li .delImg { position:absolute; top:-5px; left:-5px } .comiis_post_imglist li .delImg i { font-size:24px; background:#fff; border-radius:50% } #imglist_kggzs{ overflow-y: auto; max-height: 200px; } #kggzsfiledata{ display:none; } `); let imgListParent = $(".comiis_upbox.comiis_allowpostimg.bg_f.cl"); if (!imgListParent.length) { imgListParent = $("#comiis_post_tab .comiis_upbox.bg_f.b_t.b_b.cl"); if (!imgListParent.length) { console.log("未找到图片列表父元素"); return; } }; let imgUploadBtn = `
kggzs
20MB
Hello
Z4A
50MB