// ==UserScript== // @name 妖火网增强插件 // @namespace https://yaohuo.me/ // @version 0.14 // @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 // @2022/3/12 增加论坛表情包展开可视化选择 // @downloadURL none // ==/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) // 回复成功! 获得妖晶:30,获得经验:10
跳转中... 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', ''); let uploadimg = document.getElementsByName("upload-image")[0]; uploadimg.addEventListener('change', function () { uploadImage(); }) } /* * 表情展开 */ let faceSelect = document.getElementsByName("face")[0]; if (faceSelect) { faceSelect.style.cssText = 'display: none;';// 隐藏表情下拉组件 // 创建新的表情选框 faceSelect.insertAdjacentHTML('afterend', ''); let newface = document.getElementsByName("new-face")[0]; newface.addEventListener('click', function () { // console.log('展开新表情'); let newFaceBox = document.getElementsByName('new-face-box')[0]; if (newFaceBox.style.display == "none") { newFaceBox.style.display = "block"; } else newFaceBox.style.display = "none"; }); // 创建表情图标 createNewFace(); } function createNewFace() { let content = document.getElementsByName("content")[0]; if (content) { let faceHtml = '
'; const faces = ["踩.gif", "狂踩.gif", "淡定.gif", "囧.gif", "不要.gif", "重拳出击.gif", "砳砳.gif", "滑稽砳砳.gif", "沙发.gif", "汗.gif", "亲亲.gif", "太开心.gif", "酷.gif", "思考.gif", "发呆.gif", "得瑟.gif", "哈哈.gif", "泪流满面.gif", "放电.gif", "困.gif", "超人.gif", "害羞.gif", "呃.gif", "哇哦.gif", "要死了.gif", "谢谢.gif", "抓狂.gif", "无奈.gif", "不好笑.gif", "呦呵.gif", "感动.gif", "喜欢.gif", "疑问.gif", "委屈.gif", "你不行.gif", "流口水.gif", "潜水.gif", "咒骂.gif", "耶耶.gif", "被揍.gif", "抱走.gif",]; for (const face of faces) { faceHtml += '' + face + ''; } faceHtml += '
'; content.insertAdjacentHTML('beforebegin', faceHtml); // 注册点击事件 let faceIcons = document.getElementsByName("face-icon"); let newFaceBox = document.getElementsByName('new-face-box')[0]; let newface = document.getElementsByName("new-face")[0]; let face = document.getElementsByName("face")[0]; for (const faceIcon of faceIcons) { faceIcon.addEventListener('click', function () { let faceName = faceIcon.alt; if (newFaceBox.style.display == "none") { newFaceBox.style.display = "block"; } else newFaceBox.style.display = "none"; face.value = newface.value = faceName; }) } }; }