MCBBS Report

快速水龙头举报

Versione datata 17/10/2020. Vedi la nuova versione l'ultima versione.

// ==UserScript==
// @name         MCBBS Report
// @namespace    http://tampermonkey.net/
// @version      0.2
// @description  快速水龙头举报
// @author       CaveNightingale
// @match        https://www.mcbbs.net/*
// @grant        none
// ==/UserScript==

//搜索自己的上一个未处理举报的页数,1即为只搜索第1页,2即为搜索前2页,3即为搜索前3页,以此类推
//一般来说john180的处理速度还算可以,搜索两三页应该够了,如果设置过高可能会带来性能问题,设置过低可能导致违反版规概率上升
//根据个人实际情况填写
const searchrange = 2;
//是否在一个新的标签页内举报
const newtab = true;
//所使用的水龙头图片的地址
//可以像这样的base64直接把整张图片弄进来,也可以外链
const imageurl = "data:image/ico;base64,AAABAAEAEBAQAAAAAAAoAQAAFgAAACgAAAAQAAAAIAAAAAEABAAAAAAAgAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAND/AOhGOgA/6OIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiAAAAAAAAACIAAAAAAAAAIgAAAAAAAAAAAAAAAAAAABEAAAAzMQABEQAAARMzEBERARERETMxERAAAAARMzEAAAAAAAETMwAAAAAAABEwAAAAAAAAERAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAD/+QAA//kAAP/5AAD/8AAA+DAAAPAgAAAAAAAAAAEAAAADAADwDwAA/B8AAPwfAAD8HwAA/j8AAP4/AADwBwAA";

(() => {
    'use strict';
    if(!(searchrange > 0)){
        console.error("[MCBBS Report]搜索上次举报范围填写错误,MCBBS Report无法运行。");
        return;
    }

    function byId(id){
        return document.getElementById(id);
    }

    function isEditing(){//判断是否在编辑举报
        let args = window.location.search.substring(1).split("&");
        return args.indexOf("mod=post") >= 0 && args.indexOf("action=edit") >= 0 && args.indexOf("tid=557610") >= 0;
    }

    function findEditableReportInThisPage(){//找到一个未处理的举报帖
        for(let btn of byId("postlist").getElementsByClassName("editp")){
            let post = btn.parentElement.parentElement.parentElement.parentElement.parentElement.parentElement.parentElement.parentElement;//编辑键向上走8层
            if(byId(post.id.replace("post", "ratelog")) == null){//判断举报是否被处理是依据是否有评分
                return btn.href;
            }
        }
        return null;
    }

    let uhd = byId("uhd");
    if(uhd){//在个人主页
        let p = uhd.children[0].children[0];
        if(p.children.length >= 2){
            let target = document.createElement("li");
            let a = document.createElement("a");
            target.appendChild(a);
            a.className = "cavenightingale_report";
            a.href = `https://www.mcbbs.net/thread-557610-${searchrange}-1.html`;
            if(newtab){
                a.target = "_blank";
            }
            let link = document.createTextNode("举报水龙头");
            a.appendChild(link);
            p.appendChild(target);
            a.onclick = function(){
                localStorage["cavenightingale:report_context"] =//这段内容来自版规
`违规者用户名(必填):${uhd.children[1].children[1].innerHTML.replace("\n","")}
违规者个人资料链接(必填):${uhd.children[1].children[2].children[0].innerHTML}
违规类型(必填):[签名档违规/头像违规/用户名违规/水龙头,可多选]水龙头
违规截图(可选, 水龙头举报无需附图):`;
            }
        }
    }

    if(localStorage["cavenightingale:report_context"]){
        if(isEditing()){//在编辑举报
            let context = byId("e_textarea");
            let report = localStorage["cavenightingale:report_context"];
            if(context.value.indexOf(report.split("\n")[0]) >= 0 ? confirm("您对此用户的上一个举报尚未被处理!\n继续举报可能违规\n点击“确定”继续举报") : true){
                context.value += "\n\n" + report;
                delete localStorage["cavenightingale:report_context"];
            }
        }

        let url = String(window.location);
        if(RegExp("https://www.mcbbs.net/thread-557610-[1-9][0-9]*-1\\.html").exec(url)){//在举报专用帖下
            let pageno = parseInt(url.substring("https://www.mcbbs.net/thread-557610-".length));//获取页码
            let last = findEditableReportInThisPage();//跳转到未处理的举报帖编辑
            if(last != null){
                window.location = last;
            }else{
                if(pageno == 1){
                    let context = byId("fastpostmessage");
                    context.value = localStorage["cavenightingale:report_context"];
                    delete localStorage["cavenightingale:report_context"];
                    context.focus();
                }else{
                    window.location = `https://www.mcbbs.net/thread-557610-${pageno - 1}-1.html`;
                }
            }
        }
    }

    let style = document.createElement("style");
    style.innerHTML =
`.cavenightingale_report{
    background: url(${imageurl}) no-repeat 1px 2px!important;
    background-size: 16px!important;
}`;
    document.body.appendChild(style);
})();