Sleazy Fork is available in English.

海角社区免费版

可以免费观看海角社区钻石和金币付费帖子、vip帖子,包括视频、图片、音频。

// ==UserScript==
// @name         海角社区免费版
// @namespace    http://tampermonkey.net/
// @version      0.1.2
// @description  可以免费观看海角社区钻石和金币付费帖子、vip帖子,包括视频、图片、音频。
// @author       JamToday
// @match        https://*.haijiao.com/*
// @include      *://hj*.*/*
// @include      *://*.hj*.*/*
// @include      *://*.hai*.*/*
// @include      *://hai*.*/*
// @include      *://hj*/*
// @include      *://*.hj*/*
// @include      */post/details/*
// @match        *://*/post/details*
// @exclude      *://hjai*/*
// @exclude      *://haijiao.ai/*
// @exclude      *://haijiao.pro/*
// @exclude      *://*.kittymao.xyz/*
// @exclude      https://hjfb.org/*
// @exclude      *://tool.liumingye.cn/*
// @icon         https://www.hjadbf.top/images/common/project/favicon.ico
// @grant        none
// @run-at       document-start
// ==/UserScript==
(function () {
    let kitty_StatusColor = {
      success: "#67C23A",
      warning: "#E6A23C",
      info: "#909399",
      danger: "#F56C6C",
      200: "#67C23A",
      300: "#E6A23C",
      400: "#909399",
      500: "#F56C6C",
    };
    let kitty_config = {
      name: "海角社区免费版",
      id: "hjfree",
      version: "0.1.2",
      homePageName: "kitty猫",
      homePageUrl: "www.kittymao.xyz",
   
      update: 3,
      logListMaxLength: 19,
      logItemLength: 20,
   
      updateUrl: "https://sleazyfork.org/zh-CN/scripts/440819-cao",
      requestHostList: ["https://baixiaodu.uk/api"],
    };
    let kitty_isrun = {
      getNewVersion: false,
    };
    let kitty_tabIndex = 0;
    let kitty_logListTarget = [];
    let kitty_logList = new Proxy(kitty_logListTarget, {
      set: function (target, property, value) {
        if (property === "length") {
          console.log("Cannot change the length of the array.");
          return true;
        } else {
          target[property] = value;
          let appendDiv = document.createElement("div");
          appendDiv.innerHTML = value;
          let kitty_logListDiv =
            document.getElementsByClassName("kitty_logList")[0];
          kitty_logListDiv.appendChild(appendDiv);
          return true;
        }
      },
    });
    function kitty_setCookie(cname, cvalue, exdays) {
      var d = new Date();
      d.setTime(d.getTime() + exdays * 24 * 60 * 60 * 1000);
      var expires = "expires=" + d.toGMTString();
      document.cookie = cname + "=" + cvalue + "; " + expires;
    }
    function kitty_insertStyle() {
      let style = document.createElement("style");
      style.innerHTML = `
                /* 整体-start */
                #kitty_vipPanel {
                    width: 310px;
                    height: 500px;
                    box-shadow: 0 0 0 1px rgb(0 0 0 / 5%), 0 2px 4px 1px rgb(0 0 0 / 9%);
                    border-left: 1px solid transparent;
                    border-right: none;
                    border-top: 1px solid transparent;
                    border-bottom: 1px solid transparent;
                    background-color: #FFFFFF;
                    position: fixed;
                    left: 6px;
                    bottom: 6px;
                    z-index: 99999;
                    font-size: 16px;
                    --script-panel-main-color: #4178b0;
                }
                #kitty_vipPanel a {
                    text-decoration: underline;
                }
                .kitty_panelMain {
                    font-size: 0.85em;
                }
                .kitty_hiddenPanel {
                    left: -310px !important;
                }
                /* 整体-end */
                /* panelHead-start */
                .kitty_panelHead {
                    display: flex;
                    border-bottom: 1px solid #ececec;
                }
                .kitty_panelHead>div {
                    color: #444;
                    padding: 0 10px;
                    height: 40px;
                    line-height: 40px;
                    box-sizing: border-box;
                    user-select: none;
                    text-align: center;
                    width: 76px;
                    font-size: 1em;
                }
                .kitty_panelHead>div:not(.kitty_headDivActive):hover {
                    border-bottom: 3px solid #ccc;
                    cursor: pointer;
                }
                .kitty_headDivActive {
                    border-bottom: 3px solid var(--script-panel-main-color);
                    color: #444;
                    font-weight: bold;
                }
                /* panelHead-end */
                /* 界面显示按钮 */
                .kitty_showPanelBtn, .kitty_jiexiBtn {
                    position: absolute;
                    left: 320px;
                    top: 150px;
                    width: 50px;
                    height: 50px;
                    line-height: 50px;
                    color: var(--script-panel-main-color);
                    user-select: none;
                    background-color: #FFFFFF;
                    position: absolute;
                    bottom: 20px;
                    display: none;
                    cursor: pointer;
                    border-radius: 50px;
                    text-align: center;
                    box-shadow:0 0 0 1px rgb(0 0 0 / 5%), 0 2px 4px 1px rgb(0 0 0 / 9%);
                }
                .kitty_jiexiBtn {
                  top: 85px;
                }
                /* 身体 */
                .kitty_panelBody  {
                    padding: 0 10px;
                }
                .kitty_panelBody p {
                    margin: 10px 0;
                }
                /* 输入框-start */
                .kitty_searchInput {
                    width: 98%;
                    border-radius: 24px;
                    box-shadow: 0 0 0 1px rgb(0 0 0 / 5%), 0 2px 4px 1px rgb(0 0 0 / 9%);
                    height: 40px;
                    border-left: 1px solid transparent;
                    border-right: none;
                    border-top: 1px solid transparent;
                    border-bottom: 1px solid transparent;
                    overflow: hidden;
                    margin: 0 auto;
                    margin-top: 40px;
                    margin-bottom: 50px;
                    display: flex;
                }
                .kitty_searchInput:hover {
                    border-top-left-radius: 24px;
                    box-shadow: 0 0 0 1px rgb(0 0 0 / 10%), 0 2px 4px 1px rgb(0 0 0 / 18%);
                    border-left: 1px solid transparent;
                    border-right: none;
                    border-top: 1px solid transparent;
                    border-bottom: 1px solid transparent;
                }
                .kitty_searchInput input {
                    height: 100%;
                    border: 0;
                    outline: 0;
                    padding: 0 10px;
                    color: black;
                    width: 100%;
                }
                /* 输入框-end */
                /* go按钮-start */
                .kitty_goToVipBtn {
                    color: #FFFFFF;
                    font-weight: bold;
                    background-color: var(--script-panel-main-color);
                    height: 100px;
                    width: 100px;
                    border-radius: 50px;
                    text-align: center;
                    line-height: 100px;
                    margin: 20px auto;
                    box-shadow: 0 0 0 1px rgb(0 0 0 / 5%), 0 2px 4px 1px rgb(0 0 0 / 9%);
                    user-select: none;
                }
                .kitty_goToVipBtn:hover {
                    cursor: pointer;
                    box-shadow: 0 0 0 0 rgb(0 0 0 / 5%), 0 2px 4px 1px rgb(0 0 0 / 18%);
                    -webkit-box-shadow: 0 0 0 0 rgb(0 0 0 / 5%), 0 2px 4px 1px rgb(0 0 0 / 18%);
                    -moz-box-shadow: 0 0 0 0 rgba(0,0,0,.05),0 2px 4px 1px rgba(0,0,0,.18);
                }
                /* 动画 */
                @keyframes kitty_float {
                    0% {
                        transform: translateY(0px);
                    }
                    5% {
                        transform: translateY(-10px);
                    }
                    10%,100% {
                        transform: translateY(0px);
                    }
                }
    
                .kitty_navy {
                    position: relative;
                }
    
                .kitty_navy span {
                    position: relative;
                    display: inline-block;
                    color: white;
                    animation: kitty_float 9s ease-in-out infinite;
                    animation-delay: 2s;
                    font-size: 1.5em;
                }
                /* go按钮-end */
                .kitty_logOutput {
                    color: #71777d;
                    font-size: 0.9em;
                    margin-top: 10px;
                }
                .kitty_logOutput div {
                    margin: 0;
                    padding: 0;
                    line-height: 1.5;
                }
                .kitty_downloadText {
                    font-size: 20px;
                    font-weight: bold;
                }
                .kitty_downloadText a {
                    cursor:pointer;
                }
            `;
      document.querySelector("head").appendChild(style);
    }
    function kitty_createPanel() {
      let panel = document.createElement("div");
      panel.setAttribute("id", "kitty_vipPanel");
      panel.innerHTML = `
                <div class="kitty_showPanelBtn">显示</div>
                <div class="kitty_jiexiBtn">解析</div>
                <div class="kitty_panelMain">
                    <div class="kitty_panelHead">
                        <div class="kitty_headDivActive">运行日志</div>
                        <div>重要说明</div>
                        <div>使用指南</div>
                    </div>
                    <div class="kitty_panelBody kitty_panelBody_0">
                        <div class="kitty_logOutput">
                            <div>脚本--><span class="kitty_scriptName"></span>-<span class="kitty_version"></span>-<span class="kitty_update"></span></div>
                            <div>主页--><a class="kitty_homepage" target="_blank" href="">主页地址</a></div>
                            <div>邮箱-->JamJamToday@protonmail.com</div>
                            <div>操作--><span style="color: red;cursor:pointer;" class="kitty_hiddenPanelBtn">点此隐藏此脚本操作界面&lt;&lt;</span></div>
                            <div class="kitty_logList">
                            </div>
                        </div>
                    </div>
                    <div class="kitty_panelBody kitty_panelBody_1" style="display:none;">
                      <p>+ 本脚本完全免费</p>
                      <p>+ 本脚本无恶意代码放心使用</p>
                      <p>+ 更多脚本可看 <a target="_blank" href="https://docs.kittymao.xyz">www.kittymao.xyz</a></p>
                      <p>+ 脚本仅支持正版海角</p>
                      <p>+ 如果脚本在非正版海角网站运行, 请关闭即可</p>
                  </div>
                    <div class="kitty_panelBody kitty_panelBody_2" style="display:none;">
                        <p>+ 使用方法线路1: <a target="_blank" href="https://www.kittymao.xyz">www.kittymao.xyz</a></p>
                    </div>
                </div>
            `;
      document.body.appendChild(panel);
      let ishidden = localStorage.getItem("kitty_isHiddenPanel");
      if (ishidden) {
        ishidden = JSON.parse(ishidden);
        if (ishidden) {
          kitty_hiddenPanel();
        } else {
          kitty_showPanel();
        }
      }
    }
   
    function kitty_eventBind() {
      let tabs = document.querySelectorAll(".kitty_panelHead>div");
      for (let i = 0; i < tabs.length; i++) {
        tabs[i].addEventListener("click", function () {
          for (let ii = 0; ii < tabs.length; ii++) {
            tabs[ii].className = "";
          }
          tabs[i].className = "kitty_headDivActive";
          kitty_changeTab(i);
        });
      }
      document
        .querySelector(".kitty_hiddenPanelBtn")
        .addEventListener("click", function () {
          kitty_hiddenPanel();
        });
      document
        .querySelector(".kitty_showPanelBtn")
        .addEventListener("click", function () {
          kitty_showPanel();
        });
      document
        .querySelector(".kitty_jiexiBtn")
        .addEventListener("click", function () {
          if (location.href.includes("post/details?pid")) {
            if (kitty_isLogin()) {
              document.querySelector(".kitty_jiexiBtn").innerHTML = "稍等";
            } else {
              document.querySelector(".kitty_jiexiBtn").innerHTML = "暂无";
              kitty_checkLogin();
              kitty_showPanel();
            }
          } else {
            document.querySelector(".kitty_jiexiBtn").innerHTML = "暂无";
          }
        });
    }
   
    function kitty_changeTab(index) {
      kitty_tabIndex = index;
      let panelBodys = document.querySelectorAll(".kitty_panelBody");
      if (!panelBodys[kitty_tabIndex]) {
        return;
      }
      for (let i = 0; i < panelBodys.length; i++) {
        panelBodys[i].style.display = "none";
      }
      panelBodys[kitty_tabIndex].style.display = "block";
    }
   
    function kitty_hiddenPanel() {
      document.querySelector("#kitty_vipPanel").className = "kitty_hiddenPanel";
      document.querySelector(".kitty_showPanelBtn").style.display = "block";
      document.querySelector(".kitty_jiexiBtn").style.display = "block";
      localStorage.setItem("kitty_isHiddenPanel", JSON.stringify(true));
    }
    function kitty_showPanel() {
      document.querySelector("#kitty_vipPanel").className = "";
      document.querySelector(".kitty_showPanelBtn").style.display = "none";
      document.querySelector(".kitty_jiexiBtn").style.display = "none";
      localStorage.setItem("kitty_isHiddenPanel", JSON.stringify(false));
    }
    function kitty_getSuccessHost() {
      let successHost = localStorage.getItem("kitty_requestSuccessHost");
      if (successHost) {
        let findIndex = kitty_config.requestHostList.indexOf(successHost);
        if (findIndex != -1) {
          kitty_config.requestHostList.splice(findIndex, 1);
          kitty_config.requestHostList.unshift(successHost);
        }
      }
    }
    function kitty_getHost(index) {
      return kitty_config.requestHostList[index];
    }
   
    function kitty_getStatusTypeText(type) {
      let typeText = "提示";
      switch (type) {
        case "success":
          typeText = "成功";
          break;
        case "warning":
          typeText = "警告";
          break;
        case "info":
          typeText = "信息";
          break;
        case "danger":
          typeText = "失败";
          break;
        case "200":
          typeText = "成功";
          break;
        case "300":
          typeText = "警告";
          break;
        case "400":
          typeText = "信息";
          break;
        case "500":
          typeText = "失败";
          break;
      }
      return typeText;
    }
    function kitty_logListPush(item, type, isDom) {
      if (kitty_logList.length >= kitty_config.logListMaxLength) {
        kitty_logListShift();
      }
      let stringLength = item.length;
      let start = 0;
      let end = kitty_config.logItemLength - 1;
      let headLine = true;
   
      let typeText = `${kitty_getStatusTypeText(type)}-->`;
      let styleColor = "";
      if (type) {
        styleColor = type ? `color: ${kitty_StatusColor[type]}` : "";
      }
      if (isDom) {
        let pushStr = `<span style="${styleColor}">${typeText}${item}</span>`;
        kitty_logList.push(pushStr);
      } else {
        while (stringLength >= 0) {
          let pushStr = `<span style="${styleColor}">${
            headLine ? typeText : '<span style="opacity: 0;">续行--</span>&gt;'
          }${item.substring(start, end)}</span>`;
          kitty_logList.push(pushStr);
          start = end;
          end += end;
          stringLength = stringLength - kitty_config.logItemLength;
          headLine = false;
        }
      }
   
      // kitty_showLogList();
    }
    function kitty_logListShift() {
      kitty_logListTarget.shift();
      let kitty_logListChild0 =
        document.querySelectorAll(".kitty_logList div")[0];
      kitty_logListChild0.remove();
      // kitty_showLogList();
    }
    function kitty_setConfig() {
      document.getElementsByClassName("kitty_scriptName")[0].innerHTML =
        kitty_config.name;
      document.getElementsByClassName(
        "kitty_version"
      )[0].innerHTML = `v${kitty_config.version}`;
      let homepage = document.getElementsByClassName("kitty_homepage")[0];
      homepage.innerHTML =
        kitty_config.homePageName + `(${kitty_config.homePageUrl})`;
      homepage.href = "https://" + kitty_config.homePageUrl;
      if (kitty_config.update === 1) {
        let versionSpan = document.getElementsByClassName("kitty_update")[0];
        versionSpan.innerHTML = `已最新`;
        versionSpan.style = `color: ${kitty_StatusColor.success};`;
      } else if (kitty_config.update === 2) {
        let versionSpan = document.getElementsByClassName("kitty_update")[0];
        versionSpan.innerHTML = `<span class="kitty_toNewVersion" style="user-select: none;cursor: pointer;">点此更新</span>`;
        versionSpan.style = `color: ${kitty_StatusColor.warning};`;
        document
          .querySelector(".kitty_toNewVersion")
          .addEventListener("click", function () {
            window.open(kitty_config.updateUrl);
          });
      } else {
        let versionSpan = document.getElementsByClassName("kitty_update")[0];
        versionSpan.innerHTML = `<span class="kitty_checkVersion" style="user-select: none;cursor: pointer;">检查更新</span>`;
        versionSpan.style = `color: ${kitty_StatusColor.warning};`;
        document
          .querySelector(".kitty_checkVersion")
          .addEventListener("click", function () {
            kitty_getNewVersion(0, false);
          });
      }
    }
   
    function kitty_getNewVersion(index, change) {
      if (kitty_isrun.getNewVersion && !change) {
        return;
      }
      let host = kitty_getHost(index);
      if (!change) {
        kitty_logListPush("检查版本号中请耐心等待...", "info");
      }
      kitty_isrun.getNewVersion = true;
      let url = `${host}/getVersion`;
      fetch(url, {
        method: "post",
        headers: {
          "Content-Type": "application/json",
        },
        body: JSON.stringify({
          nickname: "hjfree",
        }),
      })
        .then((res) => res.json())
        .then((res) => {
          localStorage.setItem("kitty_requestSuccessHost", host);
          try {
            let data = res.data;
            if (data.version === kitty_config.version) {
              kitty_config.update = 1;
              kitty_logListPush("已是最新版", "success");
            } else {
              kitty_config.update = 2;
              kitty_config.updateUrl = data.updateUrl;
              kitty_logListPush("不是最新版,可能无法使用", "warning");
            }
            kitty_setConfig();
          } catch (e) {
            kitty_logListPush("失败,返回值处理有问题", "danger");
            console.log(e);
          }
          kitty_isrun.getNewVersion = false;
        })
        .catch((e) => {
          if (e.toString().includes("JSON")) {
            kitty_logListPush("JSON解析失败,请联系作者", "danger");
            kitty_isrun.getNewVersion = false;
          } else {
            console.log(e);
            index++;
            let getHost = kitty_getHost(index);
            if (getHost) {
              kitty_logListPush("请求失败,切换线路中请耐心等待...", "warning");
              kitty_getNewVersion(index, true);
            } else {
              kitty_logListPush("请求失败,请联系作者", "danger");
              kitty_isrun.getPermission = false;
            }
          }
        });
    }
    function kitty_vipPanelInit() {
      kitty_insertStyle();
      kitty_createPanel();
      kitty_getSuccessHost();
      kitty_eventBind();
      kitty_setConfig();
    }
   
    
   
    // ------------------------------------------
    // ------------------------------------------
    // ------------------------------------------
   
    let kitty_icons = {
      toTop:
        "data:image/png;base64,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",
      close:
        "data:image/png;base64,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",
    };
    let kitty_utils = {
      getCookie: function (name) {
        const cookies = document.cookie.split(";"); // 将 document.cookie 拆分为多个 Cookie 字符串
        for (const cookie of cookies) {
          const [cookieName, cookieValue] = cookie.split("=");
          const trimmedCookieName = cookieName.trim(); // 去除空格
          if (trimmedCookieName === name) {
            return decodeURIComponent(cookieValue); // 解码 Cookie 值
          }
        }
        return null; // 没有找到匹配的 Cookie
      },
      hjApiDecode: function (data) {
        let res;
        try {
          res = JSON.parse(atob(atob(atob(data))));
        } catch (e) {
          console.log("ab error");
          return "";
        }
        return res;
      },
      hjApiEecode: function (data) {
        return btoa(btoa(btoa(JSON.stringify(data))));
      },
      getElement: function (selector) {
        return new Promise((success, reject) => {
          let ele;
          function querySelectorAll_() {
            ele = document.querySelectorAll(selector);
            if (ele.length != 0) {
              success(ele);
              return true;
            } else {
              return false;
            }
          }
          if (!querySelectorAll_()) {
            let count = 1;
            let interval = setInterval(() => {
              if (count > 75) {
                reject("未获取元素: ", selector);
                clearInterval(interval);
              }
              if (!querySelectorAll_()) {
                count++;
              } else {
                success(ele);
                clearInterval(interval);
              }
            }, 50);
          }
        });
      },
      isMobileDevice: function () {
        return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(
          navigator.userAgent
        );
      },
    };
    let isMobileDevice = kitty_utils.isMobileDevice();
    function kitty_hjPicEdcoder() {
      var e = "ABCD*EFGHIJKLMNOPQRSTUVWX#YZabcdefghijklmnopqrstuvwxyz1234567890",
        t =
          ((this.encode = function (i) {
            var a,
              n,
              o,
              r,
              s,
              c,
              l = "",
              d = 0;
            for (i = t(i); d < i.length; )
              (o = (a = i.charCodeAt(d++)) >> 2),
                (r = ((3 & a) << 4) | ((a = i.charCodeAt(d++)) >> 4)),
                (s = ((15 & a) << 2) | ((n = i.charCodeAt(d++)) >> 6)),
                (c = 63 & n),
                isNaN(a) ? (s = c = 64) : isNaN(n) && (c = 64),
                (l = l + e.charAt(o) + e.charAt(r) + e.charAt(s) + e.charAt(c));
            return l;
          }),
          (this.decode = function (t) {
            var a,
              n,
              o,
              r,
              s,
              c,
              l = "",
              d = 0;
            for (t = t.replace(/[^A-Za-z0-9\*\#]/g, ""); d < t.length; )
              (o = e.indexOf(t.charAt(d++))),
                (a =
                  ((15 & (r = e.indexOf(t.charAt(d++)))) << 4) |
                  ((s = e.indexOf(t.charAt(d++))) >> 2)),
                (n = ((3 & s) << 6) | (c = e.indexOf(t.charAt(d++)))),
                (l += String.fromCharCode((o << 2) | (r >> 4))),
                64 != s && (l += String.fromCharCode(a)),
                64 != c && (l += String.fromCharCode(n));
            return i(l);
          }),
          function (e) {
            e = e.replace(/\r\n/g, "\n");
            for (var t = "", i = 0; i < e.length; i++) {
              var a = e.charCodeAt(i);
              a < 128
                ? (t += String.fromCharCode(a))
                : (t =
                    127 < a && a < 2048
                      ? (t += String.fromCharCode((a >> 6) | 192)) +
                        String.fromCharCode((63 & a) | 128)
                      : (t =
                          (t += String.fromCharCode((a >> 12) | 224)) +
                          String.fromCharCode(((a >> 6) & 63) | 128)) +
                        String.fromCharCode((63 & a) | 128));
            }
            return t;
          }),
        i = function (e) {
          for (var t, i, a = "", n = 0, o = 0; n < e.length; )
            (t = e.charCodeAt(n)) < 128
              ? ((a += String.fromCharCode(t)), n++)
              : 191 < t && t < 224
              ? ((o = e.charCodeAt(n + 1)),
                (a += String.fromCharCode(((31 & t) << 6) | (63 & o))),
                (n += 2))
              : ((o = e.charCodeAt(n + 1)),
                (i = e.charCodeAt(n + 2)),
                (a += String.fromCharCode(
                  ((15 & t) << 12) | ((63 & o) << 6) | (63 & i)
                )),
                (n += 3));
          return a;
        };
    }
    
    let kitty_topicData = null
   
    function kitty_coverAddContent(innerhtml) {
      kitty_utils.getElement(".kitty_coverInnerBox").then((ele) => {
        let element = ele[0];
        let p = document.createElement("p");
        p.innerHTML = innerhtml;
        element.append(p);
      });
    }
    // 请求拦截
    function kitty_xhrIntercept() {
      let xhrOpen = XMLHttpRequest.prototype.open;
      XMLHttpRequest.prototype.open = function (method, url, async) {
        
        if (location.href.includes("post/details?pid")) {
          if (url.includes("hjstore/images")) {
            kitty_cacheImgs(method, url, this);
          }
          const locationParams = new URLSearchParams(location.search);
          const pid = locationParams.get("pid");
          if (url.includes("api/topic/" + pid)) {
            let kitty_topicDataTarget = {
              hasVideo: false,
              hasAudio: false,
              hasPic: false,
              saleType: 0, // 0:不出售 1:金币 2:钻石
              vipLimit: 0, // 0:不需要vip 1:需要vip1级 2:需要vip2级 3:...
              picsList: [],
              audsList: [],
              videoData: null,
              isFree: false,
              topicId: 0,
              imageInserted: [],
              catchedImgs: null,
              wholeM3u8Url: null,
              wholeM3u8UrlType: "",
              picDomList: [],
              topicDataSetOver: false,
              createTime: "",
              isH5: isMobileDevice,
              runHref: "",
              codeList: null,
            };
            kitty_topicData = new Proxy(kitty_topicDataTarget, {
              get: (target, key, proxy) => {
                return target[key];
              },
              set: (target, key, value, proxy) => {
                if (target[key] !== value) {
                  target[key] = value;
                  if (key == "topicDataSetOver") {
                    kitty_topicDataSetOver();
                  }
                  if (key == "wholeM3u8Url") {
                    kitty_insertVideoDom();
                  }
                }
                return true;
              },
            });
          }
          let onreadystatechange_ = this.onreadystatechange;
          this.onreadystatechange = function () {
            if (this.readyState == 4 && this.status == 200) {
              kitty_xhrResponseProcess(method, url, this);
            }
            if (onreadystatechange_) {
              onreadystatechange_();
            }
          };
          if (isMobileDevice) {
            // 手机端
            let onload_ = this.onload;
            this.onload = function () {
              kitty_xhrResponseProcess(method, url, this);
              if (onload_) {
                onload_();
              }
            };
          }
        }
        return xhrOpen.call(this, method, url, async);
      };
    }
    // 请求前处理
    function kitty_cacheImgs(method, url, xhr) {
      if (url.includes("hjstore/images")) {
        if (kitty_topicData.hasPic) {
          if (!kitty_topicData.catchedImgs) {
            kitty_topicData.catchedImgs = [];
          }
          let find = kitty_topicData.catchedImgs.find((item) => {
            return item.url == url;
          });
          if (!find) {
            kitty_topicData.catchedImgs.push({
              url: url,
              data: null,
            });
          }
        }
      }
    }
    // 请求后返回值处理
    function kitty_xhrResponseProcess(method, url, xhr) {
      const locationParams = new URLSearchParams(location.search);
      const pid = locationParams.get("pid");
      if (url.includes("api/topic/" + pid)) {
        let responseText = JSON.parse(xhr.responseText);
        let decodeData = kitty_utils.hjApiDecode(responseText.data);
        let newData = kitty_utils.hjApiEecode(kitty_setTopicData(decodeData));
        responseText.data = newData;
        let jsonRes = JSON.stringify(responseText);
        Object.defineProperty(xhr, "responseText", {
          get: () => {
            return jsonRes;
          },
        });
        Object.defineProperty(xhr, "response", {
          get: () => {
            return jsonRes;
          },
        });
      }
      if (url.includes("hjstore/images")) {
        let findCatchedImg = kitty_topicData.catchedImgs.find((item) => {
          return item.url == url;
        });
        if (findCatchedImg) {
          if (!findCatchedImg.data) {
            findCatchedImg.data = new kitty_hjPicEdcoder().decode(
              xhr.responseText
            );
            let findImgDom = kitty_topicData.picDomList.find((item) => {
              return item.dataset.imgUrl == url;
            });
            if (findImgDom) {
              findImgDom.src = findCatchedImg.data;
            }
          }
        }
      }
    }
    // /api/topic/id 接口返回值处理
    function kitty_setTopicData(data) {
      const locationParams = new URLSearchParams(location.search);
      const pid = locationParams.get("pid");
      kitty_topicData.topicId = pid;
      if (data.sale) {
        // 付费类型
        kitty_topicData.saleType = data.sale.money_type;
      }
   
      let hasAudio = false;
      let hasVideo = false;
      let hasPic = false;
      // 附件处理
      data.attachments.forEach((item) => {
        if (item.category == "images") {
          hasPic = true;
          kitty_topicData.picsList.push(item.remoteUrl);
        } else if (item.category == "video") {
          hasVideo = true;
          kitty_topicData.videoData = item;
        } else if (item.category == "audio") {
          hasAudio = true;
          kitty_topicData.audsList.push(item.remoteUrl);
        }
      });
      if (hasPic) {
        kitty_topicData.hasPic = true;
      }
      if (hasVideo) {
        kitty_topicData.hasVideo = true;
      }
      if (hasAudio) {
        kitty_topicData.hasAudio = true;
      }
   
      if (data.node) {
        kitty_topicData.vipLimit = data.node.vipLimit;
        // 去除viplimit弹框
        data.node.vipLimit = 0;
      }
      // 是否是免费
      if (!data.sale && kitty_topicData.vipLimit == 0) {
        kitty_topicData.isFree = true;
      }
      kitty_topicData.createTime = data.createTime;
      kitty_topicData.topicDataSetOver = true;
      //delete data.content
      return data;
    }
    // 如果是vip内容
    function kitty_topicViplimit() {
      if (kitty_topicData.vipLimit > 0) {
        if (kitty_topicData.hasPic) {
          let count = 0;
          let interval = setInterval(() => {
            if (count >= kitty_topicData.picsList.length) {
              return clearInterval(interval);
            }
            let item = kitty_topicData.picsList[count];
            let x = new XMLHttpRequest();
            x.open("get", item);
            x.send();
            count++;
          }, 500);
        }
      }
    }
    // 插入图片
    function kitty_insertPayImgsDom(url) {
      kitty_utils.getElement(".kitty_coverInnerBox").then((ele) => {
        let element = ele[0];
        kitty_topicData.picsList.forEach((url, index) => {
          if (!kitty_topicData.imageInserted.includes(url)) {
            let p = document.createElement("p");
            let img = document.createElement("img");
            img.className = "kitty_topicImg";
            img.src = "/images/common/project/loading.gif";
            img.title = "点击查看大图";
            img.dataset.imgUrl = url;
            img.addEventListener("click", function () {
              img.classList.toggle("imgwidth100");
            });
            p.appendChild(img);
            element.appendChild(p);
            kitty_topicData.imageInserted.push(url);
            kitty_topicData.picDomList.push(img);
          }
        });
      });
    }
    function kitty_getVideoUrl() {
      if (kitty_topicData.isFree) {
        return;
      }
      if (kitty_topicData.hasVideo) {
        kitty_coverAddContent("正在获取视频信息,请稍后...");
        fetch("https://baixiaodu.uk/api/hj/findu8", {
          method: "post",
          headers: {
            "Content-Type": "application/json",
          },
          body: JSON.stringify({
            pid: parseInt(kitty_topicData.topicId),
          }),
        })
          .then((res) => res.json())
          .then((res) => {
            if (res.success) {
              kitty_topicData.wholeM3u8UrlType = res.data.type;
              kitty_topicData.wholeM3u8Url = res.data.url;
            } else {
              kitty_logListPush(res.message, "warning");
              kitty_coverAddContent(res.message);
              kitty_showPanel();
            }
          });
      }
    }
    // 插入视频
    function kitty_insertVideoDom() {
      if (kitty_topicData.wholeM3u8UrlType == "page") {
        kitty_coverAddContent(
          `视频需至haijiao.ai观看: <a target='_blank' href="${kitty_topicData.wholeM3u8Url}">点此观看</a>`
        );
        return;
      }
   
      kitty_coverAddContent(
        `请点击观看视频: <a target='_blank' href="https://file.kittymao.xyz/file/other/m3u8Player.html?url=${kitty_topicData.wholeM3u8Url}">点此播放</a>`
      );
    }
    // 插入音频
    function kitty_insertAudioDom() {
      kitty_topicData.audsList.forEach((item) => {
        let audio = document.createElement("audio");
        audio.controls = true;
        let source = document.createElement("source");
        source.type = "audio/mpeg";
        source.src = item;
        audio.append(source);
        kitty_utils.getElement(".kitty_coverInnerBox").then((res) => {
          res[0].append(audio);
        });
      });
    }
   
    function KittyCover() {
      this.createCover = function () {
        let topicType = `${kitty_topicData.isFree ? "免费" : ""}${
          kitty_topicData.vipLimit > 0 ? "vip" : ""
        }${kitty_topicData.saleType == 1 ? "金币" : ""}${
          kitty_topicData.saleType == 2 ? "钻石" : ""
        }`;
        let coverDiv = document.querySelector(".kitty_coverBox")
        let cover = coverDiv?coverDiv:document.createElement("div");
        cover.className = "kitty_coverBox kitty_coverBoxHidden";
        cover.innerHTML = `<div class="kitty_coverInnerBox">
            <div class="kitty_operateCover">
                <img class="kitty_closeCover" src="${kitty_icons.close}"></img>
                <img class="kitty_toTop" src="${kitty_icons.toTop}"></img>
                <img class="kitty_toBottom" src="${kitty_icons.toTop}"></img>
            </div>
            <h2>海角社区脚本</h2>
            <p>这个帖是${topicType}帖,脚本已经获取${topicType}内容,包含${
          kitty_topicData.hasAudio ? "音频 " : ""
        }${kitty_topicData.hasPic ? "图片 " : ""}${
          kitty_topicData.hasVideo ? "视频 " : ""
        }</p>
            <p>点击图片可放大, 再次点击可缩小</p>
        </div>`;
        if (!coverDiv) {
          document.body.append(cover);
        }
        kitty_utils.getElement(".kitty_closeCover").then((res) => {
          res[0].addEventListener("click", this.hiddenCover);
        });
        kitty_utils.getElement(".kitty_toTop").then((res) => {
          res[0].addEventListener("click", function () {
            kitty_utils.getElement(".kitty_coverInnerBox").then((box) => {
              box[0].scrollTop = 0;
            });
          });
        });
        kitty_utils.getElement(".kitty_toBottom").then((res) => {
          res[0].addEventListener("click", function () {
            kitty_utils.getElement(".kitty_coverInnerBox").then((box) => {
              box[0].scrollTop = box[0].scrollHeight;
            });
          });
        });
        kitty_utils.getElement("head").then((res) => {
          let style = document.createElement("style");
          style.innerHTML = `
          .kitty_coverInnerBox img.imgwidth100 {
            width: 100%;
          }
              .kitty_coverBoxHidden {
                display:none;
              }.kitty_coverBoxShow {
                display:block;
              }
              .kitty_coverBox {
                width: 100vw;
                height: 100vh;
                position: fixed;
                left: 0;
                top: 0;
                background: rgba(0,0,0, 0.5);
                z-index: 99999;
              }
              .kitty_coverInnerBox {
                position: relative;
                margin: 0 auto;
                width: ${isMobileDevice ? "100%" : "50%"};
                min-width: 300px;
                height: 100vh;
                overflow-y: scroll;
                text-align:center;
                background-color: white;
                padding-bottom: 100px;
              }
              .kitty_coverInnerBox p {
                padding: 10px;
                margin: 10px;
                font-size: 16px;
              }
              .kitty_closeCover {
                margin-bottom: 100px;
              }
              .kitty_operateCover {
                position: sticky;
                left: 100%;
                width: 50px;
                top: 20px;
                height: 30px;
              }
              .kitty_coverInnerBox img {
                cursor: pointer;
                width: 250px;
              }
              .kitty_coverInnerBox .kitty_operateCover img {
                width: 30px;
                display: block;
              }
              .kitty_toBottom {
                transform: rotate(180deg);
                margin-top: 20px;
              }
          `;
          res[0].append(style);
        });
      };
      this.hiddenCover = function () {
        kitty_utils.getElement(".kitty_coverBox").then((kitty_coverBox) => {
          kitty_coverBox[0].classList.add("kitty_coverBoxHidden");
          let audios = kitty_coverBox[0].querySelectorAll("audio");
          audios.forEach((audio) => {
            audio.pause();
          });
          let videos = kitty_coverBox[0].querySelectorAll("video");
          videos.forEach((video) => {
            video.pause();
          });
        });
      };
      this.showCover = function () {
        kitty_utils.getElement(".kitty_coverBox").then((kitty_coverBox) => {
          kitty_coverBox[0].classList.remove("kitty_coverBoxHidden");
        });
      };
    }
    function kitty_topicDataSetOver() {
      let cover = new KittyCover();
      cover.createCover();
      kitty_logListPush(
        `${
          kitty_topicData.isFree
            ? "<span class='kitty_contentGetOver'>这个帖子是免费的</span>"
            : "<span class='kitty_contentGetOver' style='cursor:pointer;'>帖子内容获取完毕, 请点此查看</span>"
        }`,
        "success",
        true
      );
      if (kitty_topicData.isFree) {
        document.querySelector(".kitty_jiexiBtn").innerHTML = "免费";
      } else {
        document.querySelector(".kitty_jiexiBtn").innerHTML = "解析";
      }
      document
        .querySelector(".kitty_jiexiBtn")
        .addEventListener("click", function () {
          if (!location.href.includes("post/details?pid")) {
            document.querySelector(".kitty_jiexiBtn").innerHTML = "暂无";
            return;
          }
          if (kitty_topicData.isFree) {
            document.querySelector(".kitty_jiexiBtn").innerHTML = "免费";
          } else {
            document.querySelector(".kitty_jiexiBtn").innerHTML = "解析";
            cover.showCover();
          }
        });
   
      kitty_utils.getElement(".kitty_contentGetOver").then((ele) => {
        ele[0].addEventListener("click", function () {
          if (!location.href.includes("post/details?pid")) {
            kitty_logListPush("没有帖子...", "warning");
            return;
          }
          cover.showCover();
          kitty_hiddenPanel();
        });
      });
   
      if (kitty_topicData.vipLimit) {
        kitty_topicViplimit();
      }
   
      if (kitty_topicData.hasPic) {
        kitty_insertPayImgsDom();
      }
      if (kitty_topicData.hasAudio) {
        kitty_insertAudioDom();
      }
      if (kitty_topicData.hasVideo) {
        // 发送请求到kittymao
        kitty_getVideoUrl();
      } else {
        kitty_coverAddContent(`<span style='color:red;'>这个帖子没有视频</span>`);
      }
      //cover.showCover();
    }
    function kitty_main() {
      
      kitty_xhrIntercept();
    }
    function kitty_checkLogin() {
      if (!kitty_isLogin()) {
        let interval = setInterval(() => {
          kitty_logListPush("没有登录海角账号,可能无法解析", "warning");
          if (kitty_isLogin()) {
            clearInterval(interval);
            location.reload();
          }
        }, 1000);
        return false;
      } else {
        kitty_logListPush("脚本运行成功,请尝试观看帖子", "success");
        return true;
      }
    }
    function kitty_isLogin() {
      if (kitty_utils.getCookie("uid") && kitty_utils.getCookie("token")) {
        return true;
      } else {
        return false;
      }
    }
    function kitty_copyTextToClipboard(text) {
      const textArea = document.createElement("textarea");
      textArea.value = text;
      document.body.appendChild(textArea);
      textArea.select();
      document.execCommand("copy");
      document.body.removeChild(textArea);
      console.log("文本已复制到剪贴板");
    }
    function kitty_isRun() {
      let run = false;
      if (
        document.querySelector("#kitty_vipPanel") ||
        document.querySelector("#vipPanel")
      ) {
        run = true;
      }
      if (!run) {
        console.log("panelInit");
        kitty_vipPanelInit();
        if (kitty_checkLogin()) {
          console.log("login");
          kitty_main();
        } else {
          kitty_showPanel();
        }
      }
    }
    kitty_isRun();
  })();