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