Rules-For-Quantumult-X/Scripts/SignIn/Bubei/bubei.js

142 lines
4.6 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

var appName = '不背单词'
var bubei = init()
var URL = bubei.getdata("UrlBB")
var KEY = bubei.getdata("CookieBB")
let isGetCookie = typeof $request !== 'undefined'
if (isGetCookie) {
getcookie()
} else {
sign()
}
function getcookie() {
var url = $request.url;
if (url) {
var UrlKeyBB = "UrlBB";
var UrlValueBB = url;
if (bubei.getdata(UrlKeyBB) != (undefined || null)) {
if (bubei.getdata(UrlKeyBB) != UrlValueBB) {
var url = bubei.setdata(UrlValueBB, UrlKeyBB);
if (!url) {
bubei.msg("更新" + appName + "Url失败‼", "", "");
} else {
bubei.msg("更新" + appName + "Url成功🎉", "", "");
}
} else {
bubei.msg(appName + "Url未变化❗", "", "");
}
} else {
var url = bubei.setdata(UrlValueBB, UrlKeyBB);
if (!url) {
bubei.msg("首次写入" + appName + "Url失败‼", "", "");
} else {
bubei.msg("首次写入" + appName + "Url成功🎉", "", "");
}
}
} else {
bubei.msg("写入" + appName + "Url失败‼", "", "配置错误, 无法读取URL, ");
}
if ($request.headers) {
var CookieKeyBB = "CookieBB";
var CookieValueBB = JSON.stringify($request.headers);
if (bubei.getdata(CookieKeyBB) != (undefined || null)) {
if (bubei.getdata(CookieKeyBB) != CookieValueBB) {
var cookie = bubei.setdata(CookieValueBB, CookieKeyBB);
if (!cookie) {
bubei.msg("更新" + appName + "Cookie失败‼", "", "");
} else {
bubei.msg("更新" + appName + "Cookie成功🎉", "", "");
}
} else {
bubei.msg(appName + "Cookie未变化❗", "", "");
}
} else {
var cookie = bubei.setdata(CookieValueBB, CookieKeyBB);
if (!cookie) {
bubei.msg("首次写入" + appName + "Cookie失败‼", "", "");
} else {
bubei.msg("首次写入" + appName + "Cookie成功🎉", "", "");
}
}
} else {
bubei.msg("写入" + appName + "Cookie失败‼", "", "配置错误, 无法读取请求头, ");
}
bubei.done()
}
function sign() {
var t1 = new Date().getTime()
var t2 = t1 + 1
URL = URL.replace(/by-sign-in\/\d*/g, "by-sign-in/" + t1).replace(/timestamp=\d*/g, "timestamp=" + t2)
const url = {url: URL, headers: JSON.parse(KEY)}
bubei.get(url, (error, response, data) => {
bubei.log(`${appName}, data: ${data}`)
const title = `${appName}`
let subTitle = ''
let detail = ''
const result = JSON.parse(data)
if (result.result_code == 200) {
subTitle = `签到结果: 成功`
} else {
subTitle = `签到结果: 未知`
detail = `说明: ${result.error_body.user_msg}`
}
bubei.msg(title, subTitle, detail)
bubei.done()
})
}
function init() {
isSurge = () => {
return undefined === this.$httpClient ? false : true
}
isQuanX = () => {
return undefined === this.$task ? false : true
}
getdata = (key) => {
if (isSurge()) return $persistentStore.read(key)
if (isQuanX()) return $prefs.valueForKey(key)
}
setdata = (key, val) => {
if (isSurge()) return $persistentStore.write(key, val)
if (isQuanX()) return $prefs.setValueForKey(key, val)
}
msg = (title, subtitle, body) => {
if (isSurge()) $notification.post(title, subtitle, body)
if (isQuanX()) $notify(title, subtitle, body)
}
log = (message) => console.log(message)
get = (url, cb) => {
if (isSurge()) {
$httpClient.get(url, cb)
}
if (isQuanX()) {
url.method = 'GET'
$task.fetch(url).then((resp) => cb(null, {}, resp.body))
}
}
post = (url, cb) => {
if (isSurge()) {
$httpClient.post(url, cb)
}
if (isQuanX()) {
url.method = 'POST'
$task.fetch(url).then((resp) => cb(null, {}, resp.body))
}
}
put = (url, cb) => {
if (isSurge()) {
$httpClient.put(url, cb)
}
if (isQuanX()) {
url.method = 'PUT'
$task.fetch(url).then((resp) => cb(null, {}, resp.body))
}
}
done = (value = {}) => {
$done(value)
}
return {isSurge, isQuanX, msg, log, getdata, setdata, get, post, put, done}
}