MihoyoBBSTools/config.py
2022-08-27 21:51:38 +08:00

157 lines
4.9 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import os
import json
import yaml
from loghelper import log
# 这个字段现在还没找好塞什么地方好就先塞config这里了
serverless = False
# 提示需要更新config版本
update_config_need = False
config = {
'enable': True, 'version': 6,
'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, 'cancel_like_posts': True, 'share_post': True
},
'games': {
'cn': {
'enable': True,
'useragent': 'Mozilla/5.0 (Linux; Android 12; Unspecified Device) AppleWebKit/537.36 (KHTML, like Gecko) '
'Version/4.0 Chrome/103.0.5060.129 Mobile Safari/537.36',
'genshin': {'auto_checkin': True, 'black_list': []},
'hokai2': {'auto_checkin': False, 'black_list': []},
'honkai3rd': {'auto_checkin': False, 'black_list': []},
'tears_of_themis': {'auto_checkin': False, 'black_list': []},
},
'os': {
'enable': False, 'cookie': '',
'genshin': {'auto_checkin': False, 'black_list': []}
}
},
'cloud_genshin': {
'token': '',
'enable': False
}
}
path = os.path.dirname(os.path.realpath(__file__)) + "/config"
config_Path_json = f"{path}/config.json"
config_Path = f"{path}/config.yaml"
def load_config_json():
with open(config_Path_json, "r") as f:
data = json.load(f)
if data.get('version') == 5:
config_json = data
try:
config_json["mihoyobbs"]["like_post"]
except KeyError:
pass
else:
config_json["mihoyobbs"]["read_posts"] = config_json["mihoyobbs"]["read_post"]
config_json["mihoyobbs"]["like_posts"] = config_json["mihoyobbs"]["like_post"]
del config_json["mihoyobbs"]["like_post"]
del config_json["mihoyobbs"]["read_post"]
else:
log.error("config版本过低请手动更新到基于yaml版本的新版本配置文件更新完成后请删除json版的配置文件")
exit(1)
log.info("v5Config加载完毕")
return config_json
def update_config():
global config
global update_config_need
update_config_need = True
log.info("正在更新config....")
config_json = load_config_json()
config['account'] = config_json['account']
config['mihoyobbs'].update(config_json['mihoyobbs'])
del config['mihoyobbs']['un_like']
config['mihoyobbs']['cancel_like_posts'] = config_json['mihoyobbs']['un_like']
for i in config_json['games']['cn'].keys():
if i == 'enable':
continue
config['games']['cn'][i] = config_json['games']['cn'][i]
config['games']['os'] = config_json['games']['os']
config['cloud_genshin']['token'] = config_json['cloud_genshin']['token']
config['cloud_genshin']['enable'] = config_json['cloud_genshin']['enable']
print(config)
save_config()
log.info('config更新完毕')
if not serverless:
os.remove(config_Path_json)
else:
log.error("请本地更新一下config")
def load_config():
global config
with open(config_Path, "r", encoding='utf-8') as f:
config = yaml.load(f, Loader=yaml.FullLoader)
log.info("Config加载完毕")
def save_config():
global serverless
if serverless:
log.info("云函数执行,无法保存")
return None
with open(config_Path, "w+") as f:
try:
f.seek(0)
f.truncate()
f.write(yaml.dump(config, Dumper=yaml.Dumper, sort_keys=False))
f.flush()
except OSError:
serverless = True
log.info("Cookie保存失败")
exit(-1)
else:
log.info("Config保存完毕")
def clear_cookies():
global config
global serverless
if serverless:
log.info("云函数执行,无法保存")
return None
with open(config_Path, "r+") as f:
config["enable"] = False
config["account"]["login_ticket"] = ""
config["account"]["stuid"] = ""
config["account"]["stoken"] = ""
config["account"]["cookie"] = "CookieError"
try:
f.seek(0)
f.truncate()
f.write(yaml.dump(config, Dumper=yaml.Dumper, sort_keys=False))
f.flush()
except OSError:
serverless = True
log.info("Cookie删除失败")
else:
log.info("Cookie删除完毕")
if __name__ == "__main__":
# 初始化配置文件
# try:
# account_cookie = config['account']['cookie']
# config = load_config()
# config['account']['cookie'] = account_cookie
# except OSError:
# pass
# save_config()
# update_config()
pass