1
1
/**
2
2
* @name 米游社小助手
3
- * @version v2.0.3
3
+ * @version v2.1.0
4
4
* @description 摆脱米游社 每天定时自动执行相关任务.
5
5
* @author kayanouriko
6
6
* @homepage https://github.com/kayanouriko/quantumultx-mihoyobbs-auto-helper
@@ -76,7 +76,6 @@ const msgText = {
76
76
} ,
77
77
// 崩坏3rd签到相关
78
78
honkai3rd : {
79
- awards : '判断签到状态遇到未知错误.' ,
80
79
signed : '舰长"{0}"今日已领取过奖励.' ,
81
80
success : '崩坏3rd签到操作完成!\n舰长"{0}"领取了奖励({1}x{2}).\n\n' ,
82
81
error : '崩坏3rd签到操作未完成!\n{0}\n\n'
@@ -95,11 +94,11 @@ const boards = {
95
94
forumid : 1 ,
96
95
key : 'honkai3rd' ,
97
96
biz : 'bh3_cn' ,
98
- actid : 'ea20211026151532 ' ,
97
+ actid : 'e202207181446311 ' ,
99
98
name : '崩坏3rd' ,
100
99
url : "https://bbs.mihoyo.com/bh3/" ,
101
100
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`
103
102
}
104
103
} ,
105
104
genshin : {
@@ -167,10 +166,12 @@ const api = {
167
166
postSign : 'https://api-takumi.mihoyo.com/event/bbs_sign_reward/sign'
168
167
} ,
169
168
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®ion={0}&act_id={1}&uid={2}' ,
171
+ // 奖励信息
172
+ getSignAwards : 'https://api-takumi.mihoyo.com/event/luna/home?lang=zh-cn&act_id={0}' ,
172
173
// 签到操作
173
- postSign : 'https://api-takumi.mihoyo.com/common/eutheniav2 /sign'
174
+ postSign : 'https://api-takumi.mihoyo.com/event/luna /sign'
174
175
} ,
175
176
getApi ( type ) {
176
177
return this [ type ]
@@ -228,7 +229,6 @@ async function main() {
228
229
await checkBBSCookie ( )
229
230
const micoinResult = await micoinTask ( )
230
231
results += micoinResult
231
-
232
232
break
233
233
case 2 :
234
234
await checkSignCookie ( )
@@ -560,8 +560,10 @@ async function honkai3rdSignTask() {
560
560
try {
561
561
// 获取账号信息
562
562
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 )
565
567
// 签到操作
566
568
await postSign ( boards . honkai3rd , game_uid , region )
567
569
return Promise . resolve ( String . format ( msgText . honkai3rd . success , nickname , name , count ) )
@@ -570,7 +572,7 @@ async function honkai3rdSignTask() {
570
572
}
571
573
}
572
574
573
- // 获取签到状态和奖励信息
575
+ // 获取签到状态
574
576
function getHonkai3rdSignInfo ( game_uid , region , nickname ) {
575
577
const option = {
576
578
url : String . format ( api . honkai3rd . getSignInfo , region , boards . honkai3rd . actid , game_uid ) ,
@@ -581,41 +583,44 @@ function getHonkai3rdSignInfo(game_uid, region, nickname) {
581
583
if ( retcode !== 0 ) {
582
584
return Promise . reject ( String . format ( msgText . common . sign , message ) )
583
585
}
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
613
594
} else {
614
595
return Promise . reject ( msgText . common . today )
615
596
}
616
597
} )
617
598
}
618
599
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
+
619
624
//==== 签到任务 ====
620
625
// @todo 签到任务大概率是接口通用的, 只是部分参数不一样, 可以构造通用方法, 方便后续整合崩2, 事件簿, 铁道等
621
626
0 commit comments