未定事件簿签到

This commit is contained in:
Womsxd 2022-07-19 16:30:10 +08:00
parent 7fd6967090
commit 42d799fe2c
No known key found for this signature in database
GPG Key ID: 0FE76418EE689B68
3 changed files with 93 additions and 2 deletions

View File

@ -6,7 +6,8 @@
* 此项目的用途 * 此项目的用途
这是一个米游社的辅助签到项目包含了米游币、崩坏2、崩坏3、原神后续会支持未定事件簿 这是一个米游社的辅助签到项目包含了米游币、崩坏2、崩坏3、原神、未定事件簿
已经支持米哈游国内正在运营的全部游戏的米游社签到(2022-7-19)
## 如何使用程序 ## 如何使用程序

View File

@ -8,6 +8,7 @@ import genshin
import setting import setting
import mihoyobbs import mihoyobbs
import honkai3rd import honkai3rd
import tearsofthemis
from loghelper import log from loghelper import log
from error import CookieError from error import CookieError
@ -78,6 +79,11 @@ def main():
log.info("正在进行崩坏3签到") log.info("正在进行崩坏3签到")
honkai3rd_help = honkai3rd.Honkai3rd() honkai3rd_help = honkai3rd.Honkai3rd()
return_data += "\n\n" + honkai3rd_help.sign_account() return_data += "\n\n" + honkai3rd_help.sign_account()
# 崩坏3签到
if config.config["games"]["cn"]["tears_of_themis"]["auto_checkin"]:
log.info("正在进行未定事件簿签到")
tearsofthemis_help = tearsofthemis.Tears_of_themis()
return_data += "\n\n" + tearsofthemis_help.sign_account()
# 原神签到 # 原神签到
if config.config["games"]["cn"]["genshin"]["auto_checkin"]: if config.config["games"]["cn"]["genshin"]["auto_checkin"]:
log.info("正在进行原神签到") log.info("正在进行原神签到")

View File

@ -1,3 +1,87 @@
import time
import tools
import config
import random
import setting
from request import http
from loghelper import log
from error import CookieError
from account import get_account_list
class Tears_of_themis: class Tears_of_themis:
def __init__(self) -> None: def __init__(self) -> None:
pass self.headers = setting.headers
self.headers['DS'] = tools.get_ds(web=True, web_old=True)
self.headers['Referer'] = 'https://webstatic.mihoyo.com/bbs/event/signin/bh2/index.html?bbs_auth_required' \
f'=true&act_id={setting.tearsofthemis_Act_id}&bbs_presentation_style=fullscreen' \
'&utm_source=bbs&utm_medium=mys&utm_campaign=icon'
self.headers['Cookie'] = config.config["account"]["cookie"]
self.headers['x-rpc-device_id'] = tools.get_device_id()
self.account_list = get_account_list("nxx_cn", self.headers)
self.sign_day = 0
if len(self.account_list) != 0:
self.checkin_rewards = self.get_checkin_rewards()
def get_checkin_rewards(self) -> list:
log.info("正在获取签到奖励列表...")
req = http.get(setting.honkai2_checkin_rewards, headers=self.headers)
data = req.json()
if data["retcode"] != 0:
log.warning("获取签到奖励列表失败")
print(req.text)
return data["data"]["awards"]
# 判断签到
def is_sign(self, region: str, uid: str) -> dict:
req = http.get(setting.honkai2_Is_signurl.format(setting.honkai2_Act_id, region, uid), headers=self.headers)
data = req.json()
if data["retcode"] != 0:
log.warning("获取账号签到信息失败!")
print(req.text)
config.config["games"]["cn"]["tears_of_themis"]["auto_checkin"] = False
config.save_config()
raise CookieError("BBS Cookie Errror")
return data["data"]
# 签到
def sign_account(self) -> str:
return_data = "未定事件簿: "
if len(self.account_list) != 0:
for i in self.account_list:
if i[1] in config.config["games"]["cn"]["tears_of_themis"]["black_list"]:
continue
log.info(f"正在为未定事件簿玩家: {i[0]}进行签到...")
time.sleep(random.randint(2, 8))
is_data = self.is_sign(region=i[2], uid=i[1])
# if not is_data["is_sub"]: # 这个字段不知道干啥的,就先塞这里了
if False: # 算了先改成false
log.warning(f"旅行者{i[0]}是第一次绑定米游社,请先手动签到一次")
else:
sign_days = is_data["total_sign_day"] - 1
ok = True
if is_data["is_sign"]:
log.info(f"未定事件簿玩家:{i[0]}今天已经签到过了~\r\n今天获得的奖励是{tools.get_item(self.checkin_rewards[sign_days])}")
sign_days += 1
else:
time.sleep(random.randint(2, 8))
req = http.post(url=setting.honkai2_Sign_url, headers=self.headers,
json={'act_id': setting.tearsofthemis_Act_id, 'region': i[2], 'uid': i[1]})
data = req.json()
if data["retcode"] == 0:
log.info(f"未定事件簿玩家:{i[0]}签到成功~\r\n今天获得的奖励是"
f"{tools.get_item(self.checkin_rewards[0 if sign_days == 0 else sign_days + 1])}")
sign_days += 2
elif data["retcode"] == -5003:
log.info(f"未定事件簿玩家:{i[0]}今天已经签到过了~\r\n今天获得的奖励是{tools.get_item(self.checkin_rewards[sign_days])}")
else:
log.warning("账号签到失败!")
ok = False
if ok:
return_data += f"\n{i[0]}已连续签到{sign_days}\n今天获得的奖励是{tools.get_item(self.checkin_rewards[sign_days - 1])}"
else:
return_data += f"\n{i[0]},本次签到失败"
else:
log.warning("账号没有绑定任何未定事件簿账号!")
return_data += "\n并没有绑定任何未定事件簿账号"
return return_data