Skip to content
This repository was archived by the owner on Dec 17, 2022. It is now read-only.

Commit 38cb7c7

Browse files
committed
🐛 fixed #2
1 parent 0decef9 commit 38cb7c7

File tree

3 files changed

+60
-41
lines changed

3 files changed

+60
-41
lines changed

.gitignore

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2+
3+
# dependencies
4+
/node_modules
5+
6+
# misc
7+
.DS_Store
8+
9+
# vscode
10+
.vscode

README.md

+5-1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
别家应用的用户可以自行测试一下, 行就行, 不行也别找我了Orz
1717

1818
## 更新日志
19+
* v2.1.0
20+
1. 适配 崩坏3rd 签到新接口. [@接口改版抓包讨论](https://github.com/Womsxd/AutoMihoyoBBS/issues/151)
1921
* v2.0.3
2022
1. 修复分享任务代码造成的米游币任务完成提示文本错误
2123
* v2.0.2
@@ -37,7 +39,9 @@
3739

3840
## 如何使用(2.x)
3941

40-
v2.0.0开始, 在 quantumultx 中全面转为远程更新和执行, 配置一次, 自动更新, 永久运行.
42+
v2.0.0开始, 在 quantumultx 中全面转为远程更新和执行, 配置一次, 自动更新, 永久运行.
43+
44+
目前 qx 并不会自动升级远程配置的脚本, 当你发现脚本功能不可用时, 可先看该项目是否已经更新修复了, 再尝试在 qx 内更新脚本以获取最新的修复.
4145

4246
### 引入资源
4347

src/mihoyobbs-auto-helper.js

+45-40
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/**
22
* @name 米游社小助手
3-
* @version v2.0.3
3+
* @version v2.1.0
44
* @description 摆脱米游社 每天定时自动执行相关任务.
55
* @author kayanouriko
66
* @homepage https://github.com/kayanouriko/quantumultx-mihoyobbs-auto-helper
@@ -76,7 +76,6 @@ const msgText = {
7676
},
7777
// 崩坏3rd签到相关
7878
honkai3rd: {
79-
awards: '判断签到状态遇到未知错误.',
8079
signed: '舰长"{0}"今日已领取过奖励.',
8180
success: '崩坏3rd签到操作完成!\n舰长"{0}"领取了奖励({1}x{2}).\n\n',
8281
error: '崩坏3rd签到操作未完成!\n{0}\n\n'
@@ -95,11 +94,11 @@ const boards = {
9594
forumid: 1,
9695
key: 'honkai3rd',
9796
biz: 'bh3_cn',
98-
actid: 'ea20211026151532',
97+
actid: 'e202207181446311',
9998
name: '崩坏3rd',
10099
url: "https://bbs.mihoyo.com/bh3/",
101100
getReferer() {
102-
return `https://webstatic.mihoyo.com/bh3/event/euthenia/index.html?bbs_presentation_style=fullscreen&bbs_game_role_required=${this.biz}&bbs_auth_required=true&act_id=${this.actid}&utm_source=bbs&utm_medium=mys&utm_campaign=icon`
101+
return `https://webstatic.mihoyo.com/bbs/event/signin/bh3/index.html?bbs_auth_required=true&act_id=${this.actid}&bbs_presentation_style=fullscreen&utm_source=bbs&utm_medium=mys&utm_campaign=icon`
103102
}
104103
},
105104
genshin: {
@@ -167,10 +166,12 @@ const api = {
167166
postSign: 'https://api-takumi.mihoyo.com/event/bbs_sign_reward/sign'
168167
},
169168
honkai3rd: {
170-
// 签到状态 / 奖励详细
171-
getSignInfo: 'https://api-takumi.mihoyo.com/common/eutheniav2/index?region={0}&act_id={1}&uid={2}',
169+
// 签到状态
170+
getSignInfo: 'https://api-takumi.mihoyo.com/event/luna/info?lang=zh-cn&region={0}&act_id={1}&uid={2}',
171+
// 奖励信息
172+
getSignAwards: 'https://api-takumi.mihoyo.com/event/luna/home?lang=zh-cn&act_id={0}',
172173
// 签到操作
173-
postSign: 'https://api-takumi.mihoyo.com/common/eutheniav2/sign'
174+
postSign: 'https://api-takumi.mihoyo.com/event/luna/sign'
174175
},
175176
getApi(type) {
176177
return this[type]
@@ -228,7 +229,6 @@ async function main() {
228229
await checkBBSCookie()
229230
const micoinResult = await micoinTask()
230231
results += micoinResult
231-
232232
break
233233
case 2:
234234
await checkSignCookie()
@@ -560,8 +560,10 @@ async function honkai3rdSignTask() {
560560
try {
561561
// 获取账号信息
562562
const { game_uid, region, nickname } = await getUserInfo(boards.honkai3rd)
563-
// 获取签到信息和奖励信息
564-
const { name, count } = await getHonkai3rdSignInfo(game_uid, region, nickname)
563+
// 获取签到信息
564+
const total = await getHonkai3rdSignInfo(game_uid, region, nickname)
565+
// 获取奖励信息
566+
const { name, count } = await getHonkai3rdSignAwards(total)
565567
// 签到操作
566568
await postSign(boards.honkai3rd, game_uid, region)
567569
return Promise.resolve(String.format(msgText.honkai3rd.success, nickname, name, count))
@@ -570,7 +572,7 @@ async function honkai3rdSignTask() {
570572
}
571573
}
572574

573-
// 获取签到状态和奖励信息
575+
// 获取签到状态
574576
function getHonkai3rdSignInfo(game_uid, region, nickname) {
575577
const option = {
576578
url: String.format(api.honkai3rd.getSignInfo, region, boards.honkai3rd.actid, game_uid),
@@ -581,41 +583,44 @@ function getHonkai3rdSignInfo(game_uid, region, nickname) {
581583
if (retcode !== 0) {
582584
return Promise.reject(String.format(msgText.common.sign, message))
583585
}
584-
const list = data?.sign?.list
585-
const signCount = data?.sign?.['sign_cnt']
586-
if (list && signCount !== undefined) {
587-
const award = list?.[signCount]
588-
const status = award?.status
589-
// status 2 已签到, 1 未签到, 0 未到签到时间
590-
if (status === 0) {
591-
// 未到签到时间, 说明今天已签到, 当前奖励已经领取
592-
return Promise.reject(String.format(msgText.honkai3rd.signed, nickname))
593-
} else if (status === 1) {
594-
// 未签到
595-
const name = award?.name
596-
const count = award?.cnt
597-
if (name && count) {
598-
if (status === 2) {
599-
600-
} else {
601-
return {
602-
name,
603-
count
604-
}
605-
}
606-
} else {
607-
return Promise.reject(msgText.common.award)
608-
}
609-
} else {
610-
// status 2 永远不会遇到, 遇到说明接口数据有变动
611-
return Promise.reject(msgText.honkai3rd.awards)
612-
}
586+
const isSign = data?.['is_sign'] ?? false
587+
if (isSign) {
588+
// 已经签到完成
589+
return Promise.reject(String.format(msgText.honkai3rd.signed, nickname))
590+
}
591+
const total = data?.['total_sign_day']
592+
if (total !== undefined) {
593+
return total
613594
} else {
614595
return Promise.reject(msgText.common.today)
615596
}
616597
})
617598
}
618599

600+
// 获取奖励信息
601+
function getHonkai3rdSignAwards(total) {
602+
const option = {
603+
url: String.format(api.honkai3rd.getSignAwards, boards.honkai3rd.actid),
604+
headers: getHeaders(boards.honkai3rd)
605+
}
606+
return $.http.get(option).then(res => {
607+
const { retcode, message, data } = JSON.parse(res.body)
608+
if (retcode !== 0) {
609+
return Promise.reject(String.format(msgText.common.awards, message))
610+
}
611+
const name = data?.awards?.[total]?.name
612+
const cnt = data?.awards?.[total]?.cnt
613+
if (name && cnt) {
614+
return {
615+
name,
616+
count: cnt
617+
}
618+
} else {
619+
return Promise.reject(msgText.common.award)
620+
}
621+
})
622+
}
623+
619624
//==== 签到任务 ====
620625
// @todo 签到任务大概率是接口通用的, 只是部分参数不一样, 可以构造通用方法, 方便后续整合崩2, 事件簿, 铁道等
621626

0 commit comments

Comments
 (0)