mirror of
https://github.com/truewhile/MeBox.git
synced 2026-10-01 20:16:36 +08:00
开发
This commit is contained in:
@@ -0,0 +1,117 @@
|
||||
// 测试用 jsLib:模拟聚合类书源的公共函数库结构。
|
||||
//
|
||||
// 真实书源(如光遇聚合)的 jsLib 有十几万字符,但关键结构就是这些:
|
||||
// 用 source.getVariable 做设置读写、用 cookie 存取凭证、用 BaseUrl() 拼接口地址。
|
||||
// 该文件由 JSRunner 在创建时执行一次,其函数对后续所有规则 JS 可见。
|
||||
// 同时保留了源码里常见的 lexical 声明(let hosts),验证跨执行可见性。
|
||||
|
||||
// 当前书源版本号
|
||||
let localVersion = '26.9.29.1';
|
||||
|
||||
// 初始服务器列表
|
||||
let hosts = [
|
||||
'https://v1.example-aggregate.com',
|
||||
'https://v2.example-aggregate.com'
|
||||
];
|
||||
|
||||
// 源变量默认值
|
||||
const defaultConfig = {
|
||||
线路: hosts[0],
|
||||
发现页来源: '番茄'
|
||||
};
|
||||
|
||||
// 获取源变量
|
||||
function getVariable(k) {
|
||||
if (k == undefined) k = "";
|
||||
let parsed = {};
|
||||
try {
|
||||
parsed = JSON.parse(source.getVariable());
|
||||
} catch (e) {}
|
||||
if (k == "") {
|
||||
return parsed;
|
||||
}
|
||||
let value = parsed[k];
|
||||
if (value == undefined) {
|
||||
value = defaultConfig[k];
|
||||
}
|
||||
return value != undefined ? value : "";
|
||||
}
|
||||
|
||||
// 设置源变量
|
||||
function setVariable(k, v, t) {
|
||||
if (t == undefined) t = true;
|
||||
const vs = getVariable();
|
||||
vs[k] = v;
|
||||
source.setVariable(JSON.stringify(vs, null, 4));
|
||||
if (k != '云端配置' && t) {
|
||||
java.toast('设置 ' + k + ' 为 ' + v);
|
||||
}
|
||||
}
|
||||
|
||||
// 获取正在使用的线路
|
||||
function BaseUrl() {
|
||||
let h = getVariable("线路");
|
||||
if (!h || String(h) == "undefined") {
|
||||
h = hosts[0];
|
||||
}
|
||||
return h;
|
||||
}
|
||||
|
||||
// 获取登陆 token
|
||||
function getToken() {
|
||||
let hostsbk = getVariable('云端配置') && getVariable('云端配置')['hosts'] || hosts;
|
||||
for (let i = 0; i < hostsbk.length; i++) {
|
||||
let cookieValue = String(cookie.getCookie(hostsbk[i]));
|
||||
let parts = cookieValue.split(";");
|
||||
for (let j = 0; j < parts.length; j++) {
|
||||
if (parts[j].indexOf("qttoken") != -1) {
|
||||
return parts[j].split("=")[1];
|
||||
}
|
||||
}
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
// 设置 ck
|
||||
function setAllCookies(ck) {
|
||||
let hostsbk = hosts;
|
||||
for (let i = 0; i < hostsbk.length; i++) {
|
||||
cookie.setCookie(hostsbk[i], ck);
|
||||
}
|
||||
}
|
||||
|
||||
// 移除 ck
|
||||
function removeAllCookies() {
|
||||
for (let i = 0; i < hosts.length; i++) {
|
||||
cookie.removeCookie(hosts[i]);
|
||||
}
|
||||
java.toast('已退出登陆');
|
||||
}
|
||||
|
||||
// 请求封装(自动带 token)
|
||||
function request(url, method, body) {
|
||||
if (method == undefined) method = 'GET';
|
||||
if (body == undefined) body = {};
|
||||
let urla = url;
|
||||
if (url.indexOf('http') != 0) {
|
||||
urla = BaseUrl() + url;
|
||||
}
|
||||
let qttoken = getToken();
|
||||
let options = {
|
||||
method: method,
|
||||
headers: {
|
||||
'cookie': 'qttoken=' + qttoken,
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
body: JSON.stringify(body)
|
||||
};
|
||||
return java.ajax(urla + ',' + JSON.stringify(options));
|
||||
}
|
||||
|
||||
function parseJsonSafely(str) {
|
||||
try {
|
||||
return JSON.parse(str);
|
||||
} catch (e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user