MihoyoBBSTools/config.py
2022-11-03 08:37:58 +08:00

152 lines
4.2 KiB
Python
Raw Permalink 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 yaml
import setting
from loghelper import log
# 这个字段现在还没找好塞什么地方好就先塞config这里了
serverless = False
# 提示需要更新config版本
update_config_need = False
config = {
'enable': True, 'version': 7,
'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_games': {
"genshin": {
'enable': False,
'token': ''
}
}
}
config_raw = {}
config_raw.update(config)
path = os.path.dirname(os.path.realpath(__file__)) + "/config"
if os.getenv("AutoMihoyoBBS_config_path") is not None:
path = os.getenv("AutoMihoyoBBS_config_path")
config_Path = f"{path}/config.yaml"
def copy_config():
return config_raw
def config_v7_update(data: dict):
global update_config_need
update_config_need = True
data['version'] = 7
data['cloud_games'] = {"genshin": {'enable': False, 'token': ''}}
log.info("config已升级到: 7")
return data
def load_config(p_path=None):
global config
if not p_path:
p_path = config_Path
with open(p_path, "r", encoding='utf-8') as f:
data = yaml.load(f, Loader=yaml.FullLoader)
if data['version'] == 7:
config = data
else:
config = config_v7_update(data)
save_config()
log.info("Config加载完毕")
return config
def save_config(p_path=None, p_config=None):
global serverless
if serverless:
log.info("云函数执行,无法保存")
return None
if not p_path:
p_path = config_Path
if not p_config:
p_config = config
with open(p_path, "w+") as f:
try:
f.seek(0)
f.truncate()
f.write(yaml.dump(p_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
if serverless:
log.info("云函数执行,无法保存")
return None
config["enable"] = False
config["account"]["login_ticket"] = ""
config["account"]["stuid"] = ""
config["account"]["stoken"] = ""
config["account"]["cookie"] = "CookieError"
log.info("Cookie已删除")
save_config()
def clear_cookie_game(game_id: str):
global config
if serverless:
log.info("云函数执行,无法保存")
return None
config["account"]["cookie"] = "GameCookieError"
config["games"]["cn"][setting.game_id2config[game_id]]["auto_checkin"] = False
log.info(f"游戏签到Cookie已删除")
save_config()
def clear_cookie_cloudgame():
global config
if serverless:
log.info("云函数执行,无法保存")
return None
config['cloud_games']['genshin']["enable"] = False
config['cloud_games']['genshin']['token'] = ""
log.info("云原神Cookie删除完毕")
save_config()
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