新增 BiliBili 漫画签到脚本

This commit is contained in:
sve1r 2020-12-25 09:34:03 +08:00
parent bdf6cf9440
commit f1bc013840
No known key found for this signature in database
GPG Key ID: 390824526E1ED148
1 changed files with 144 additions and 0 deletions

View File

@ -0,0 +1,144 @@
/*
哔哩哔哩漫画签到
脚本兼容: QuantumultX, Surge, Loon
电报频道@NobyDa
问题反馈@NobyDa_bot
如果转载请注明出处
说明
打开哔哩哔哩漫画后 (AppStore中国区)单击"我的", 如果通知获取cookie成功, 则可以使用此脚本.
脚本将在每天上午9点执行 您可以修改执行时间
~~~~~~~~~~~~~~~~
Surge 4.2.0+ :
[Script]
Bili漫画签到 = type=cron,cronexp=0 9 * * *,wake-system=1,script-path=https://raw.githubusercontent.com/NobyDa/Script/master/Bilibili-DailyBonus/Manga.js
Bili漫画Cookie = type=http-request,pattern=^https:\/\/passport\.biligame\.com\/api\/login\/sso.+?version%22%3A%22(3|4|5),script-path=https://raw.githubusercontent.com/NobyDa/Script/master/Bilibili-DailyBonus/Manga.js
[MITM]
hostname = passport.biligame.com
~~~~~~~~~~~~~~~~
QX 1.0.10+ :
[task_local]
0 9 * * * https://raw.githubusercontent.com/NobyDa/Script/master/Bilibili-DailyBonus/Manga.js, tag=Bili漫画签到
[rewrite_local]
#获取Bili漫画Cookie
^https:\/\/passport\.biligame\.com\/api\/login\/sso.+?version%22%3A%22(3|4|5) url script-request-header https://raw.githubusercontent.com/NobyDa/Script/master/Bilibili-DailyBonus/Manga.js
[mitm]
hostname = passport.biligame.com
~~~~~~~~~~~~~~~~
*/
const $nobyda = nobyda();
if ($nobyda.isRequest) {
GetCookie()
} else {
checkin()
}
function checkin() {
const bilibili = {
url: 'https://manga.bilibili.com/twirp/activity.v1.Activity/ClockIn',
headers: {
Cookie: $nobyda.read("CookieBM"),
},
body: "platform=ios"
};
$nobyda.post(bilibili, function (error, response, data) {
if (!error) {
if (parseInt(response.status) == 200) {
console.log("bilibili success response : \n" + data)
$nobyda.notify("哔哩哔哩漫画 - 签到成功!🎉", "", "")
} else {
console.log("bilibili failed response : \n" + data)
if (data.match(/duplicate/)) {
$nobyda.notify("哔哩哔哩漫画 - 今日已签过 ⚠️", "", "")
} else if (data.match(/uid must/)) {
$nobyda.notify("哔哩哔哩漫画 - Cookie无效 ‼️‼️", "", "")
} else {
$nobyda.notify("哔哩哔哩漫画 - 签到失败 ‼️", "", data)
}
}
} else {
$nobyda.notify("哔哩哔哩漫画 - 签到接口请求失败", "", error)
}
$nobyda.end()
})
}
function GetCookie() {
var CookieName = "B站漫画";
var CookieKey = "CookieBM";
var regex = /SESSDATA=.+?;/;
if ($request.headers) {
var header = $request.headers['Cookie'] ? $request.headers['Cookie'] : "";
if (header.indexOf("SESSDATA=") != -1) {
var CookieValue = regex.exec(header)[0];
if ($nobyda.read(CookieKey)) {
if ($nobyda.read(CookieKey) != CookieValue) {
var cookie = $nobyda.write(CookieValue, CookieKey);
if (!cookie) {
$nobyda.notify("更新" + CookieName + "Cookie失败‼", "", "");
} else {
$nobyda.notify("更新" + CookieName + "Cookie成功 🎉", "", "");
}
}
} else {
var cookie = $nobyda.write(CookieValue, CookieKey);
if (!cookie) {
$nobyda.notify("首次写入" + CookieName + "Cookie失败‼", "", "");
} else {
$nobyda.notify("首次写入" + CookieName + "Cookie成功 🎉", "", "");
}
}
} else {
$nobyda.notify("写入" + CookieName + "Cookie失败‼", "", "Cookie关键值缺失");
}
} else {
$nobyda.notify("写入" + CookieName + "Cookie失败‼", "", "配置错误, 无法读取请求头,");
}
$nobyda.end()
}
function nobyda() {
const isRequest = typeof $request != "undefined"
const isSurge = typeof $httpClient != "undefined"
const isQuanX = typeof $task != "undefined"
const notify = (title, subtitle, message) => {
if (isQuanX) $notify(title, subtitle, message)
if (isSurge) $notification.post(title, subtitle, message)
}
const write = (value, key) => {
if (isQuanX) return $prefs.setValueForKey(value, key)
if (isSurge) return $persistentStore.write(value, key)
}
const read = (key) => {
if (isQuanX) return $prefs.valueForKey(key)
if (isSurge) return $persistentStore.read(key)
}
const post = (options, callback) => {
if (isQuanX) {
if (typeof options == "string") options = {url: options}
options["method"] = "POST"
$task.fetch(options).then(response => {
response["status"] = response.statusCode
callback(null, response, response.body)
}, reason => callback(reason.error, null, null))
}
if (isSurge) $httpClient.post(options, callback)
}
const end = () => {
if (isQuanX) return $done({})
if (isSurge) isRequest ? $done({}) : $done()
}
return {isRequest, isQuanX, isSurge, notify, write, read, post, end}
};