// ==UserScript==
// @name 头歌助手低调版
// @namespace http://tampermonkey.net/
// @version 1.0.5
// @description 题库仅仅针对uva题目 可复制粘贴
// @author SunSeaLucky&&Jser
// @match https://trustie.educoder.net/*
// @icon none
// @grant none
// @run-at document-start
// @license MIT
// @require https://cdn.jsdelivr.net/npm/js-base64@3.7.5/base64.min.js
// @downloadURL https://update.greasyfork.icu/scripts/480963/%E5%A4%B4%E6%AD%8C%E5%8A%A9%E6%89%8B%E4%BD%8E%E8%B0%83%E7%89%88.user.js
// @updateURL https://update.greasyfork.icu/scripts/480963/%E5%A4%B4%E6%AD%8C%E5%8A%A9%E6%89%8B%E4%BD%8E%E8%B0%83%E7%89%88.meta.js
// ==/UserScript==
//设置随机测试时间区间上限
const max = 30000;
//设置随机测试时间区间下限
const min = 5000;
// 目前设置随机时间的方法出现严重Bug,请谨慎使用!若仍想快速刷时间,请进入微信头歌小程序,在对应的实例界面左右滑动,可快速刷到int最大值
const setRandomTime = false;
(function () {
//响应劫持 破解复制粘贴
let oldFetch = fetch;
function hookFetch(...args) {
return new Promise((resolve, reject) => {
oldFetch.apply(this, arguments).then((response) => {
//匹配响应对应的请求
if (arguments[0].indexOf('homework_common_id') !== -1) {
const oldJson = response.json;
response.json = function () {
return new Promise((resolve, reject) => {
oldJson.apply(this, arguments).then((result) => {
//修改响应部分
if (setRandomTime) result.game.cost_time = Math.floor(Math.random() * (max - min + 1)) + min;
result.shixun.forbid_copy = false;
result.shixun.vip = true;
//修改响应部分
resolve(result);
});
});
};
}
resolve(response);
});
});
}
// 劫持fetch
window.fetch = hookFetch;
//加载完毕 响应窗口
window.onload = function () {
// 创建 link 元素
var linkElement = document.createElement('link');
linkElement.rel = 'stylesheet';
linkElement.href = 'https://cdn.jsdelivr.net/npm/picnic';
// 将 link 元素添加到 head 元素中
document.head.appendChild(linkElement);
// 创建一个
元素
var div = document.createElement("div");
div.classList.add('JSer_Mian');
// 添加窗口样式
div.style.position = "fixed";
div.style.top = "25%";
div.style.left = "25%";
div.style.transform = "translate(-50%, -50%)";
div.style.width = "400px";
div.style.maxHeight = "400px";
div.style.height = "200x";
div.style.overflowY = "scroll";
div.style.backgroundColor = "lightgray";
div.style.border = "1px solid gray";
div.style.borderRadius = "5px";
div.style.padding = "20px";
div.style.boxShadow = "0px 2px 5px rgba(0, 0, 0, 0.3)";
div.style.zIndex = "9999";
div.style.transition = "transform 0.3s ease-in-out"; // 添加过渡效果
div.style.display = "block";
// 添加内容
// 将
元素插入到页面中
document.body.appendChild(div);
// 添加按下 F2 键隐藏/显示功能
let isview = true;
document.addEventListener("keydown", function (event) {
if (event.key === "F2") {
if (isview) {
div.style.display = "block";
}
else {
div.style.display = "none";
}
isview = !isview;
}
});
// 设置容器
let con = document.createElement("div");
con.style.width = "350px";
con.style.height = "auto";
con.style.display = "flex";
con.style.flexDirection = "column";
// con.style.justifyContent = "center";
div.appendChild(con);
// 创建元素
let code = document.createElement("div");
code.classList.add('code');
let bt_select = document.createElement("button");
let bt_find = document.createElement("button");
let codenum = document.createElement("input");
// 元素样式
codenum.style.width = "100px";
codenum.style.height = "30px";
codenum.placeholder = "序号即可"
bt_select.style.width = "100px";
bt_select.style.height = "30px";
bt_select.textContent = "全选";
bt_select.style.fontSize = "12px";
bt_select.classList.add('success');
bt_find.style.width = "100px";
bt_find.style.height = "30px";
bt_find.textContent = "查找";
bt_find.style.fontSize = "12px";
// 转义pre标签内容
function filterString(str) {
const filteredStr = str.replace(//g, '>');
return filteredStr;
};
let msg = document.createElement("span");
msg.style.textAlign = "center";
con.appendChild(msg).textContent = "F2切换 隐藏/显示 可复制粘贴";
con.appendChild(codenum);
con.appendChild(bt_find);
con.appendChild(bt_select);
// 按钮点击事件监听 发出请求
bt_find.addEventListener('click', () => {
// console.log(`https://6k7f936939.yicp.fun/index.php?codeNumber=${codenum.value}`);//老接口 测试接口
fetch(`https://service-q3vdttin-1301163996.bj.apigw.tencentcs.com/release/FuckEducoder?question=${codenum.value}&vertification=DLloIbnmoTpobbpg6gKdm9pZCBwaWxlX29udG8oaW50IHAsIG`, {
method: "POST",
}).then(Response => {
if (Response.ok) {
return Response.text();
}
else {
throw new Error('请求失败');
}
}).then(data => {
// console.log(typeof(data));
data = Base64.decode(data);
let Htstr = filterString(data);
code.innerHTML = `
${Htstr}
`;
con.appendChild(code);
}).catch(error => {
console.log("NONO", error);
})
});
// 按钮点击事件监听 全选
bt_select.addEventListener('click', () => {
const codeElement = code.querySelector('pre');
const range = document.createRange();
range.selectNodeContents(codeElement);
const selection = window.getSelection();
selection.removeAllRanges();
selection.addRange(range);
codeElement.focus();
});
}
})();