Greasy Fork

妖火网增强插件

妖火网回复增强

当前为 2022-03-12 提交的版本,查看 最新版本

// ==UserScript==
// @name         妖火网增强插件
// @namespace    https://yaohuo.me/
// @version      0.13
// @description  妖火网回复增强
// @author       外卖不用券(id:23825)
// @match        https://yaohuo.me/*
// @icon         https://yaohuo.me/css/favicon.ico
// @grant        unsafeWindow
// @license      MIT
// @2022/3/11    增加无跳转回复帖子
// @2022/3/11    去除jQuery,使用原生方式获取元素,支持非油猴手机浏览器
// @2022/3/12    回帖增加图床,自动插入图片UBB
// ==/UserScript==

console.log("妖火网分享你我!")

// 表单对象序列化
function stringify(obj, sep, eq) {
    sep = sep || '&';
    eq = eq || '=';
    let str = "";
    for (var k in obj) {
        str += k + eq + unescape(obj[k]) + sep
    }
    return str.slice(0, -1)
};

// POST表单封装
async function postData(url = '', data = {}) {
    const response = await fetch(url, {
        method: 'POST',
        mode: 'cors',
        cache: 'no-cache',
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded',
        },
        redirect: 'follow',
        referrerPolicy: 'no-referrer',
        body: stringify(data)
    });
    return response; // parses JSON response into native JavaScript objects
}

/*
 * 无跳转回帖
 */
let replyButton = document.getElementsByName("g")[0]
if (replyButton && replyButton.value == "快速回复") {
    replyButton.addEventListener('click', function (event) {
        event.preventDefault();
        var content = document.getElementsByName("content")[0].value;
        console.log('test');
        if (content.length) {
            // 获取form表单参数
            var face = document.getElementsByName("face")[0].value;
            var sendmsg = document.getElementsByName("sendmsg")[0].value;
            var action = document.getElementsByName("action")[0].value;
            var id = document.getElementsByName("id")[0].value;
            var siteid = document.getElementsByName("siteid")[0].value;
            var lpage = document.getElementsByName("lpage")[0].value;
            var classid = document.getElementsByName("classid")[0].value;
            var sid = document.getElementsByName("sid")[0].value;
            var g = document.getElementsByName("g")[0].value;
            // console.log(face, sendmsg, content, action, id, siteid, lpage, classid, sid, g);
            // 发表回复
            postData('/bbs/book_re.aspx', {
                face: face,
                sendmsg: sendmsg,
                content: content,
                action: action,
                id: id,
                siteid: siteid,
                lpage: lpage,
                classid: classid,
                sid: sid,
                g: g
            }).then(data => {
                // console.log(data) // 回复成功!</b> 获得妖晶:30,获得经验:10<br/> 跳转中...
                location.reload(); // 直接刷新页面,没有优化处理
            }
            )
        }
    })
}

/*
* 图床传图
*/
let PIC_UPLOAD_API = "https://kf.dianping.com/api/file/burstUploadFile"
function uploadImage() {
    console.log("上传图片");
    let uploadimg = document.getElementsByName("upload-image")[0];
    // 构造表单
    const formData = new FormData();
    formData.append('files', uploadimg.files[0]);
    formData.append('fileName', uploadimg.files[0].name);
    formData.append('part', '0');
    formData.append('partSize', '1');
    formData.append('fileID', new Date().getTime());
    // console.log(uploadimg.files[0].name)
    // 请求头
    let headers = {
        // 'Content-Type': 'multipart/form-data; boundary=----WebKitFormBoundaryquEEr8JAZtzApAYM',
        // 'Content-Length': uploadimg.files[0].size,
        'Host': 'kf.dianping.com',
        'CSC-VisitId': 'access-0ef0c9ff-03d9-42b9-952a-0a221e9c0e3a', // access-a55670d1-e246-423c-ac81-f20d4830ccdc
        'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36'
    };
    postImage(PIC_UPLOAD_API, formData, headers)
        .then(data => {
            // console.log(data);
            if (data.code == 200) {
                let uploadPath = data.data.uploadPath;
                // 粘贴UBB代码到文本框
                let content = document.getElementsByName("content")[0];
                content.value += '\r\n[img]' + uploadPath + '[/img]';
            }
        })
        .catch(error => {
            console.log(error);
        })
}

// POST图片封装
async function postImage(url = '', data = {}, headers = {}) {
    const response = await fetch(url, {
        method: 'POST',
        headers: headers,
        body: data
    });
    return response.json();
}

// 创建上传文件按钮、自动上传
let replyForm = document.getElementsByName("f")[0];
if (replyForm) {
    let sendmsg = document.getElementsByName("sendmsg")[0];
    sendmsg.insertAdjacentHTML('afterend', '<input type="file" style="width: 50%" name="upload-image" accept="image/*" value="">');
    let uploadimg = document.getElementsByName("upload-image")[0];
    uploadimg.addEventListener('change', function () {
        uploadImage();
    })
}