// ==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">点此隐藏此脚本操作界面<<</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>>'
}${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();
})();