[自改]妖火网增强插件

修改:1.评论默认全表情展示、2.评论全UBB、3.Via可用、3. 获得焦点时回复框自动停靠、加载更多楼层、回复任意楼层、异步评论、双击定位评论区、发帖增强、图床直达、超链图片回复、表情展开

目前为 2023-01-22 提交的版本,查看 最新版本

// ==UserScript==
// @name         [自改]妖火网增强插件
// @namespace    https://yaohuo.me/
// @version      0.46.6
// @description  修改:1.评论默认全表情展示、2.评论全UBB、3.Via可用、3. 获得焦点时回复框自动停靠、加载更多楼层、回复任意楼层、异步评论、双击定位评论区、发帖增强、图床直达、超链图片回复、表情展开
// @author       原作:外卖不用券(id:23825)
// @match        https://yaohuo.me/*
// @icon         https://yaohuo.me/css/favicon.ico
// @license      MIT
// ==/UserScript==

// 是否自动吃肉,默认不吃  改为true 吃
var isAutoEat = false; // 是否自动吃肉,默认不吃  改为 true 则吃

const viewPage = ["/bbs/book_re.aspx", "/bbs/book_view.aspx"];
const postPage = ["/bbs/book_view_add.aspx", "/bbs/book_view_sendmoney.aspx", "/bbs/book_view_addvote.aspx", "/bbs/book_view_addfile.aspx", "/bbs/book_view_mod.aspx"];
const faceList = ['踩.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'];
const spanstyle = 'color: #fff; padding: 2px 4px; font-size: 14px; background-color: #ccc;';

if (/^\/bbs-.*\.html$/.test(window.location.pathname) || viewPage.includes(window.location.pathname)) {
    const form = document.getElementsByName('f')[0];
    const face = form.getElementsByTagName('select')[0];
    const sendmsg = form.getElementsByTagName('select')[1];
    const content = form.getElementsByTagName('textarea')[0];
    const replyBtn = document.getElementsByName('g')[0];

    content.insertAdjacentHTML('beforebegin', '<div id="facearea"></div>');;
    const facearea = document.getElementById('facearea');

    let allfacehtml = '';
    faceList.slice(0, faceList.length).forEach((faceStr, i) => {
        allfacehtml += '<img id="setFace' + i  + '" style="width: 32px; height: 32px" src="face/' + faceStr + '" value="' + faceStr.split('.')[0] + '.gif"></img>';
    })
    facearea.innerHTML += allfacehtml;
    for (let i = 0; i < faceList.length; i++) {
        document.getElementById('setFace' + i).onclick = function setFace() {
            face.value = faceList[i];
        };
    }



    // 妖火图床、超链接、图片
    form.removeChild(form.lastChild);
    form.insertAdjacentHTML(
        "beforeend",
        `
        <hr>
        <span id='ubb_url' style="${spanstyle}">链接</span>
        <span id='ubb_img' style="${spanstyle}">图片</span>
        <span id='ubb_audio' style="${spanstyle}">音频</span>
        <span id='ubb_movie' style="${spanstyle}">视频</span>
        <br>
        <span id='ubb_text' style="${spanstyle}">半角</span>
        <span id='ubb_br' style="${spanstyle}">换行</span>
        <span id='ubb_b' style="${spanstyle}">加粗</span>
        <span id='ubb_i' style="${spanstyle}">斜体</span>
        <span id='ubb_color' style="${spanstyle}">颜色字</span>
        <span id='ubb_u' style="${spanstyle}">下划线</span>
        <span id='ubb_strike' style="${spanstyle}">删除线</span>
        <span id='ubb_hr' style="${spanstyle}">分割线</span>
        <br>
        <span id='ubb_sms' style="${spanstyle}">短信</span>
        <span id='ubb_call' style="${spanstyle}">拨号</span>
        <span id='ubb_now' style="${spanstyle}">时间</span>
        <span id='ubb_codo' style="${spanstyle}">倒计天</span>
        <br>
        <a href='https://yaohuo.me/tuchuang/' target="_blank" style="${spanstyle}">图床</a>
        <a href='https://aapi.eu.org/ppx' target="_blank" style="${spanstyle}">皮皮</a>
        <a href='https://aapi.eu.org/bili' target="_blank" style="${spanstyle}">b站</a>
        <a href='https://aapi.eu.org/dy' target="_blank" style="${spanstyle}">抖音</a>
        <a href='https://aapi.eu.org/ks' target="_blank" style="${spanstyle}">快手</a>
        <a href='https://pan.whgpc.com/upload.php' target="_blank" style="${spanstyle}">外链</a>
        <a href='https://urlify.cn/' target="_blank" style="${spanstyle}">短链接</a>
        <hr>
        `
    );

    // 超链接
    const textarea = document.querySelector(
        "body > div.sticky > form > textarea"
    );
    document.getElementById("ubb_url").addEventListener("click", (e) => {
        e.preventDefault();
        insertText(textarea, "[url=网址]文字说明[/url]", 0);
    });
    document.getElementById("ubb_movie").addEventListener("click", (e) => {
        e.preventDefault();
        insertText(textarea, "[movie=100%*100%]视频直链地址|封面图片地址[/movie]", 0);
    });

    document.getElementById("ubb_text").addEventListener("click", (e) => {
        e.preventDefault();
        insertText(textarea, "全角转半角:[text]代码内容[/text]", 0);
    });
    document.getElementById("ubb_br").addEventListener("click", (e) => {
        e.preventDefault();
        insertText(textarea, "///", 0);
    });

    document.getElementById("ubb_hr").addEventListener("click", (e) => {
        e.preventDefault();
        insertText(textarea, "[hr]", 0);
    });

    document.getElementById("ubb_b").addEventListener("click", (e) => {
        e.preventDefault();
        insertText(textarea, "[b]加粗文字[/b]", 0);
    });
    document.getElementById("ubb_i").addEventListener("click", (e) => {
        e.preventDefault();
        insertText(textarea, "[i]斜体文字[/i]", 0);
    });
    document.getElementById("ubb_u").addEventListener("click", (e) => {
        e.preventDefault();
        insertText(textarea, "[u]下划线文字[/y]", 0);
    });
    document.getElementById("ubb_color").addEventListener("click", (e) => {
        e.preventDefault();
        insertText(textarea, "[forecolor=red]颜色文字,默认红[/forecolor]", 0);
    });
    document.getElementById("ubb_img").addEventListener("click", (e) => {
        e.preventDefault();
        insertText(textarea, "[img]图片链接[/img]", 0);
    });
    document.getElementById("ubb_strike").addEventListener("click", (e) => {
        e.preventDefault();
        insertText(textarea, "[strike]删除线文字[/strike]", 0);
    });
    document.getElementById("ubb_call").addEventListener("click", (e) => {
        e.preventDefault();
        insertText(textarea, "[call]拨号手机号码[/call]", 0);
    });
    document.getElementById("ubb_sms").addEventListener("click", (e) => {
        e.preventDefault();
        insertText(textarea, "[url=sms:手机号码?body=短信内容]点此发送[/url]", 0);
    });
    document.getElementById("ubb_now").addEventListener("click", (e) => {
        e.preventDefault();
        insertText(textarea, "当前系统日期和时间:[now]", 0);
    });
    document.getElementById("ubb_codo").addEventListener("click", (e) => {
        e.preventDefault();
        insertText(textarea, "倒计天:[codo]2030-01-01[/codo]", 0);
    });
    document.getElementById("ubb_audio").addEventListener("click", (e) => {
        e.preventDefault();
        insertText(textarea, "[audio=X]音频直链地址[/audio]", 0);
    });




    // 吃肉 必须放在后面
    const fileTag = document.querySelector("body > div.sticky > form > a");
    var eatMeat = document.createElement('input');
    eatMeat.type = 'submit';
    eatMeat.value="一键吃肉"
    eatMeat.addEventListener("click", (e) => {
        e.preventDefault();
        var eatWordsArr = ["吃..","吃了..","吃肉..","口乞..","chile..","7肉..","7了.."];
        var index = Math.round((Math.random()*10)% (eatWordsArr.length - 1));
        console.log("吃肉回复:",eatWordsArr[index])
        insertText(textarea, eatWordsArr[index], 0);
        replyBtn.click()
    });

    const meatTag = document.querySelector("body > div.content > div.paibi > span.shengyu > span.yushuzi");

    if (!isAutoEat){
        console.log("未开启自动吃肉,可在编辑脚本进行开启")
    }else{
        if(meatTag == undefined){
            console.log("非肉勿7")
        }
        else if (parseInt(meatTag.innerHTML) <= 0){
            console.log("无肉怎7")
        }else {
            console.log("有肉快7")
            eatMeat.click()
        }
    }

    form.insertBefore(eatMeat,fileTag )
    // 吃肉 END



} else if (
    postPage.includes(window.location.pathname)
) {
    // 发帖UBB增强
    let bookContent = document.getElementsByName("book_content")[0];
    bookContent.insertAdjacentHTML(
        "beforebegin",
        `<div class='btBox'>
          <div class='bt2'>
              <a style='width:25%' id='ubb_a'>超链接</a>
              <a style='width:25%' id='ubb_img'>图片</a>
              <a style='width:25%' id='ubb_movie'>视频</a>
              <a style='width:25%' id='ubb_more'">更多...</a>
          </div>
      </div>
      <div class='more_ubb_tools' style='display: none'>
          <div class='btBox'>
              <div class='bt2'>
                  <a style='width:25%' id='ubb_f'>颜色</a>
                  <a style='width:25%' id='ubb_b'">加粗</a>
                  <a style='width:25%' id='ubb_s'>删除</a>
                  <a style='width:25%' id='ubb_audio'>音频</a>
              </div>
          </div>
          <div class='btBox'>
              <div class='bt2'>
                  <a href='https://yaohuo.me/tuchuang/'>妖火专用图床</a>
                  <a href='https://aapi.eu.org/dy'>抖音视频解析</a>
                  <a href='https://aapi.eu.org/ks'>快手视频解析</a>
                  <a href='https://aapi.eu.org/ppx'>皮皮虾解析</a>
                  <a href='https://aapi.eu.org/bili'>b站视频解析</a>
                  <a href='https://pan.whgpc.com/upload.php'>外链网盘</a>
                  <a href='https://www.yaohuo.me/bbs/book_view_ubb.aspx?action=class&siteid=1000&classid=177&page=1&backurl=bbs%2fbook_view_add.aspx%3fsiteid%3d1000%26classid%3d177'>UBB使用方法</a>
                  <a href='https://urlify.cn/'>短链生成防吞</a>
              </div>
          </div>
      </div>`
    );
    document.getElementById("ubb_a").addEventListener("click", () => insertText(bookContent, "[url][/url]", 6));
    document.getElementById("ubb_f").addEventListener("click", () => insertText(bookContent, "[forecolor=#FF0000][/forecolor]", 12));
    document.getElementById("ubb_b").addEventListener("click", () => insertText(bookContent, "[b][/b]", 4));
    document.getElementById("ubb_s").addEventListener("click", () => insertText(bookContent, "[strike][/strike]", 9));
    document.getElementById("ubb_img").addEventListener("click", () => insertText(bookContent, "[img][/img]", 6));
    document.getElementById("ubb_movie").addEventListener("click", () => insertText(bookContent, "[movie=100%*100%][/movie]", 8));
    document.getElementById("ubb_audio").addEventListener("click", () => insertText(bookContent, "[audio=X][/audio]", 8));
    document.getElementById("ubb_more").addEventListener("click", () => {
        let ubb_tool = document.getElementsByClassName("more_ubb_tools")[0];
        ubb_tool.style.display = ubb_tool.style.display === "none" ? "block" : "none";
    });
}

function insertText(obj, str, offset) {
    if (document.selection) {
        var sel = document.selection.createRange();
        sel.text = str;
    } else if (
        typeof obj.selectionStart === "number" &&
        typeof obj.selectionEnd === "number"
    ) {
        var startPos = obj.selectionStart,
            endPos = obj.selectionEnd,
            cursorPos = startPos,
            tmpStr = obj.value;
        obj.value =
            tmpStr.substring(0, startPos) +
            str +
            tmpStr.substring(endPos, tmpStr.length);
        cursorPos += str.length;
        obj.selectionStart = obj.selectionEnd = cursorPos - offset;
    } else {
        obj.value += str;
    }
    obj.focus();
}