开始以v5版本进行配置文件加载(未正式启用v5版本)

This commit is contained in:
Womsxd 2022-04-28 13:50:25 +08:00
parent e9749386f5
commit f455a56ecd
No known key found for this signature in database
GPG Key ID: 0FE76418EE689B68
9 changed files with 62 additions and 84 deletions

View File

@ -18,12 +18,12 @@ def stop_module(game_id: str) -> None:
# 崩坏2功能敬请期待
pass
elif game_id == "bh3_cn":
config.honkai3rd_Auto_sign = False
config.config["games"]["cn"]["honkai3rd"] = False
elif game_id == "nxx_cn":
# 未定好像没米游社签到
pass
elif game_id == "hk4e_cn":
config.genshin_Auto_sign = False
config.config["games"]["cn"]["genshin"] = False
else:
raise NameError
config.save_config()

View File

@ -5,69 +5,47 @@ from loghelper import log
# 这个字段现在还没找好塞什么地方好就先塞config这里了
serverless = False
# 是否启用config
enable = True
# 这里的内容会自动获取
login_ticket = ""
stuid = ""
stoken = ""
# 这里是米游社的cookie
cookies = ""
# 这个dist里面的内容和米游社有关
mihoyobbs = {
# 全局开关,关闭之后下面的都不执行
"bbs_Global": True,
# 讨论区签到
"bbs_Signin": True,
# 多个讨论区签到
"bbs_Signin_multi": True,
# 指定签到讨论区
# 1是崩坏3 2是原神 3是崩坏2 4是未定事件簿 5是大别墅
# 可以通过设置讨论区的id位置来设置主讨论区[5,1]就是大别墅为主社区
# 看帖子 点赞 分享帖子都是使用主社区获取到的列表
"bbs_Signin_multi_list": [],
# 浏览3个帖子
"bbs_Read_posts": True,
# 完成5次点赞
"bbs_Like_posts": True,
# 完成后取消点赞
"bbs_Unlike": True,
# 分享帖子
"bbs_Share": True,
}
# 原神自动签到
genshin_Auto_sign = True
# 崩坏3自动签到
honkai3rd_Auto_sign = True
v5_config = '{"enable":false,"version":5,"account":{"cookie":"","login_ticket":"","stuid":"","stoken":""},"mihoyobbs":{' \
'"enable":true,"checkin":true,"checkin_multi":true,"checkin_multi_list":[2,5],"read_posts":true,' \
'"like_posts":true,"un_like":true,"share_post":true},"games":{"cn":{"enable":true,"hokai2":{' \
'"auto_checkin":false,"black_list":[]},"honkai3rd":{"auto_checkin":false,"black_list":[]},' \
'"tears_of_themis":{"auto_checkin":false,"black_list":[]},"genshin":{"auto_checkin":false,"black_list":[' \
']}},"os":{"enable":false,"cookie":"","genshin":{"auto_checkin":false,"black_list":[]}}}} '
config = json.loads(v5_config)
path = os.path.dirname(os.path.realpath(__file__)) + "/config"
config_Path = f"{path}/config.json"
def load_v4(data: dict):
global enable
global login_ticket
global stuid
global stoken
global cookies
global mihoyobbs
global genshin_Auto_sign
global honkai3rd_Auto_sign
enable = data["enable_Config"]
login_ticket = data["mihoyobbs_Login_ticket"]
stuid = data["mihoyobbs_Stuid"]
stoken = data["mihoyobbs_Stoken"]
cookies = data["mihoyobbs_Cookies"]
mihoyobbs = data["mihoyobbs"]
genshin_Auto_sign = data["genshin_Auto_sign"]
honkai3rd_Auto_sign = data["honkai3rd_Auto_sign"]
global config
# 配置开关
config["enable"] = data["enable_Config"]
# 账号 cookie
config["account"]["login_ticket"] = data["mihoyobbs_Login_ticket"]
config["account"]["stuid"] = data["mihoyobbs_Stuid"]
config["account"]["stoken"] = data["mihoyobbs_Stoken"]
config["account"]["cookie"] = data["mihoyobbs_Cookies"]
# bbs 相关设置(自己之前造的孽)
config["mihoyobbs"]["enable"] = data["mihoyobbs"]["bbs_Global"]
config["mihoyobbs"]["checkin"] = data["mihoyobbs"]["bbs_Signin"]
config["mihoyobbs"]["checkin_multi"] = data["mihoyobbs"]["bbs_Signin_multi"]
config["mihoyobbs"]["checkin_multi_list"] = data["mihoyobbs"]["bbs_Signin_multi_list"]
config["mihoyobbs"]["read_post"] = data["mihoyobbs"]["bbs_Read_posts"]
config["mihoyobbs"]["like_post"] = data["mihoyobbs"]["bbs_Like_posts"]
config["mihoyobbs"]["un_like"] = data["mihoyobbs"]["bbs_Unlike"]
config["mihoyobbs"]["share_post"] = data["mihoyobbs"]["bbs_Share"]
# 游戏相关设置 v4只支持原神和崩坏3所以其他选项默认关闭
config["games"]["cn"]["genshin"] = data["genshin_Auto_sign"]
config["games"]["cn"]["honkai3rd"] = data["honkai3rd_Auto_sign"]
def load_config():
global config
with open(config_Path, "r") as f:
data = json.load(f)
if data.get('version') == 5:
pass
config = data
else:
load_v4(data)
f.close()
@ -81,9 +59,9 @@ def save_config():
return None
with open(config_Path, "r+") as f:
data = json.load(f)
data["mihoyobbs_Login_ticket"] = login_ticket
data["mihoyobbs_Stuid"] = stuid
data["mihoyobbs_Stoken"] = stoken
data["mihoyobbs_Login_ticket"] = config["account"]["login_ticket"]
data["mihoyobbs_Stuid"] = config["account"]["stuid"]
data["mihoyobbs_Stoken"] = config["account"]["stoken"]
temp_text = json.dumps(data, sort_keys=False, indent=4, separators=(', ', ': '))
try:
f.seek(0)

View File

@ -24,7 +24,7 @@ class Genshin:
'Accept-Encoding': 'gzip, deflate',
'Accept-Language': 'zh-CN,en-US;q=0.8',
'X-Requested-With': 'com.mihoyo.hyperion',
"Cookie": config.cookies,
"Cookie": config.config["account"]["cookie"],
'x-rpc-device_id': tools.get_device_id()
}
self.acc_List = get_account_list("hk4e_cn", self.headers)
@ -48,7 +48,7 @@ class Genshin:
if data["retcode"] != 0:
log.warning("获取账号签到信息失败!")
print(req.text)
config.genshin_Auto_sign = False
config.config["games"]["cn"]["genshin"] = False
config.save_config()
raise CookieError("BBS Cookie Errror")
return data["data"]

View File

@ -25,7 +25,7 @@ class Honkai2:
'Accept-Encoding': 'gzip, deflate',
'Accept-Language': 'zh-CN,en-US;q=0.8',
'X-Requested-With': 'com.mihoyo.hyperion',
"Cookie": config.cookies,
"Cookie": config.config["account"]["cookie"],
'x-rpc-device_id': tools.get_device_id()
}
self.acc_List = get_account_list("bh2_cn", self.headers)

View File

@ -24,7 +24,7 @@ class Honkai3rd:
'Accept-Encoding': 'gzip, deflate',
'Accept-Language': 'zh-CN,en-US;q=0.8',
'X-Requested-With': 'com.mihoyo.hyperion',
"Cookie": config.cookies,
"Cookie": config.config["account"]["cookie"],
'x-rpc-device_id': tools.get_device_id()
}
self.acc_List = get_account_list("bh3_cn", self.headers)

View File

@ -6,24 +6,24 @@ from error import CookieError
def login():
if config.cookies == '':
if config.config["account"]["cookie"] == '':
log.error("请填入Cookies!")
config.clear_cookies()
raise CookieError('No cookie')
# 判断Cookie里面是否有login_ticket 没有的话直接退了
if "login_ticket" in config.cookies:
temp_cookies = config.cookies.split(";")
if "login_ticket" in config.config["account"]["cookie"]:
temp_cookies = config.config["account"]["cookie"].split(";")
for i in temp_cookies:
if i.split("=")[0] == " login_ticket":
config.login_ticket = i.split("=")[1]
config.config["account"]["login_ticket"] = i.split("=")[1]
break
# 这里获取Stuid但是实际是可以直接拿cookie里面的Uid
data = http.get(url=setting.bbs_Cookie_url.format(config.login_ticket)).json()
data = http.get(url=setting.bbs_Cookie_url.format(config.config["account"]["login_ticket"])).json()
if "成功" in data["data"]["msg"]:
config.stuid = str(data["data"]["cookie_info"]["account_id"])
config.config["account"]["stuid"] = str(data["data"]["cookie_info"]["account_id"])
data = http.get(url=setting.bbs_Cookie_url2.format(
config.login_ticket, config.stuid)).json()
config.stoken = data["data"]["list"][0]["token"]
config.config["account"]["login_ticket"], config.config["account"]["stuid"])).json()
config.config["account"]["stoken"] = data["data"]["list"][0]["token"]
log.info("登录成功!")
log.info("正在保存Config")
config.save_config()

26
main.py
View File

@ -15,17 +15,17 @@ def main():
# 初始化,加载配置
return_data = "\n米游社: "
config.load_config()
if config.enable:
if config.config["enable"]:
# 检测参数是否齐全,如果缺少就进行登入操作
if config.login_ticket == "" or config.stuid == "" or config.stoken == "":
if config.config["account"]["login_ticket"] == "" or config.config["account"]["stuid"] == "" or config.config["account"]["stoken"] == "":
# 登入如果没开启bbs全局没打开就无需进行登入操作
if config.mihoyobbs["bbs_Global"]:
if config.config["mihoyobbs"]["enable"] :
login.login()
time.sleep(random.randint(2, 8))
# 获取要使用的BBS列表,#判断是否开启bbs_Signin_multi
if config.mihoyobbs["bbs_Signin_multi"]:
if config.config["mihoyobbs"]["checkin_multi"] :
# 用这里的方案可以实现当让id在第一个的时候为主社区
for i in config.mihoyobbs["bbs_Signin_multi_list"]:
for i in config.config["mihoyobbs"]["checkin_multi_list"] :
for i2 in setting.mihoyobbs_List:
if i == int(i2["id"]):
setting.mihoyobbs_List_Use.append(i2)
@ -35,7 +35,7 @@ def main():
if int(i["id"]) == 5:
setting.mihoyobbs_List_Use.append(i)
# 米游社签到
if config.mihoyobbs["bbs_Global"]:
if config.config["mihoyobbs"]["enable"] :
bbs = mihoyobbs.Mihoyobbs()
if bbs.Task_do["bbs_Sign"] and bbs.Task_do["bbs_Read_posts"] and bbs.Task_do["bbs_Like_posts"] and \
bbs.Task_do["bbs_Share"]:
@ -47,13 +47,13 @@ def main():
while mihoyobbs.today_get_coins != 0 and i < 3:
if i > 0:
bbs.refresh_list()
if config.mihoyobbs["bbs_Signin"]:
if config.config["mihoyobbs"]["checkin"] :
bbs.signing()
if config.mihoyobbs["bbs_Read_posts"]:
if config.config["mihoyobbs"]["read_post"] :
bbs.read_posts()
if config.mihoyobbs["bbs_Like_posts"]:
if config.config["mihoyobbs"]["like_post"] :
bbs.like_posts()
if config.mihoyobbs["bbs_Share"]:
if config.config["mihoyobbs"]["share_post"] :
bbs.share_post()
bbs.get_tasks_list()
i += 1
@ -66,7 +66,7 @@ def main():
return_data += "\n" + "米游社功能未启用!"
log.info("米游社功能未启用!")
# 原神签到
if config.genshin_Auto_sign:
if config.config["games"]["cn"]["genshin"]:
log.info("正在进行原神签到")
genshin_help = genshin.Genshin()
return_data += "\n\n" + genshin_help.sign_account()
@ -74,14 +74,14 @@ def main():
else:
log.info("原神签到功能未启用!")
# 崩坏3签到
if config.honkai3rd_Auto_sign:
if config.config["games"]["cn"]["honkai3rd"]:
log.info("正在进行崩坏3签到")
honkai3rd_help = honkai3rd.Honkai3rd()
return_data += "\n\n" + honkai3rd_help.sign_account()
else:
log.info("崩坏3签到功能未启用")
return 0, return_data
elif config.cookies == "CookieError":
elif config.config["account"]["cookie"] == "CookieError":
raise CookieError('Cookie expires')
else:
log.warning("Config未启用")

View File

@ -16,7 +16,7 @@ class Mihoyobbs:
def __init__(self):
self.headers = {
"DS": tools.get_ds(web=False, web_old=False),
"cookie": f"stuid={config.stuid};stoken={config.stoken}",
"cookie": f'stuid={config.config["account"]["stuid"]};stoken={config.config["account"]["stoken"]}',
"x-rpc-client_type": setting.mihoyobbs_Client_type,
"x-rpc-app_version": setting.mihoyobbs_Version,
"x-rpc-sys_version": "6.0.1",
@ -159,7 +159,7 @@ class Mihoyobbs:
if data["message"] == "OK":
log.debug("点赞:{} 成功".format(self.postsList[i][1]))
# 判断取消点赞是否打开
if config.mihoyobbs["bbs_Unlike"]:
if config.config["mihoyobbs"]["un_like"] :
time.sleep(random.randint(2, 8))
req = http.post(url=setting.bbs_Like_url, headers=self.headers,
json={"post_id": self.postsList[i][0], "is_cancel": True})

View File

@ -41,7 +41,7 @@ def get_ds(web: bool, web_old: bool) -> str:
# 生成一个device id
def get_device_id() -> str:
return str(uuid.uuid3(uuid.NAMESPACE_URL, config.cookies)).replace(
return str(uuid.uuid3(uuid.NAMESPACE_URL, config.config["account"]["cookie"])).replace(
'-', '').upper()