diff --git a/config.py b/config.py index 0d1a799..cfb6e62 100644 --- a/config.py +++ b/config.py @@ -1,12 +1,15 @@ import os import json from loghelper import log +from ruamel.yaml import YAML # 这个字段现在还没找好塞什么地方好,就先塞config这里了 serverless = False +# 提示需要更新config版本 +update_config_need = False config = { - 'enable': True, 'version': 5, + 'enable': True, 'version': 6, 'account': { 'cookie': '', 'login_ticket': '', @@ -15,11 +18,13 @@ config = { }, '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 + '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': []}, @@ -32,70 +37,74 @@ config = { } } - path = os.path.dirname(os.path.realpath(__file__)) + "/config" -config_Path = f"{path}/config.json" +config_Path_json = f"{path}/config.json" +config_Path = f"{path}/config.yaml" -def load_v4(data: dict): - 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_posts"] = data["mihoyobbs"]["bbs_Read_posts"] - config["mihoyobbs"]["like_posts"] = 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"]["auto_checkin"] = data["genshin_Auto_sign"] - config["games"]["cn"]["honkai3rd"]["auto_checkin"] = data["honkai3rd_Auto_sign"] - - -def load_config(): - global config - with open(config_Path, "r") as f: +def load_config_json(): + with open(config_Path_json, "r") as f: data = json.load(f) if data.get('version') == 5: - config = data + config_json = data try: - config["mihoyobbs"]["like_post"] + config_json["mihoyobbs"]["like_post"] except KeyError: pass else: - config["mihoyobbs"]["read_posts"] = config["mihoyobbs"]["read_post"] - config["mihoyobbs"]["like_posts"] = config["mihoyobbs"]["like_post"] - del config["mihoyobbs"]["like_post"] - del config["mihoyobbs"]["read_post"] - save_config() + 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: - load_v4(data) - log.info("升级v5 config") - # 直接升级到v5 config - save_config() - f.close() - log.info("Config加载完毕") + 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'] + save_config() + log.info('config更新完毕') + if not serverless: + os.remove(config_Path_json) + else: + log.error("请本地更新一下config") + + +def load_config(): + yaml = YAML() + global config + with open(config_Path, "r", encoding='utf-8') as f: + config = yaml.load(f) + log.info("Config加载完毕") def save_config(): global serverless + yaml = YAML() if serverless: log.info("云函数执行,无法保存") return None - with open(config_Path, "r+") as f: - temp_text = json.dumps(config, sort_keys=False, indent=4, separators=(', ', ': ')) + with open(config_Path, "w+") as f: try: f.seek(0) f.truncate() - f.write(temp_text) + yaml.dump(config, f) f.flush() except OSError: serverless = True @@ -103,12 +112,12 @@ def save_config(): exit(-1) else: log.info("Config保存完毕") - f.close() def clear_cookies(): global config global serverless + yaml = YAML() if serverless: log.info("云函数执行,无法保存") return None @@ -118,18 +127,17 @@ def clear_cookies(): config["account"]["stuid"] = "" config["account"]["stoken"] = "" config["account"]["cookie"] = "CookieError" - temp_text = json.dumps(config, sort_keys=False, indent=4, separators=(', ', ': ')) try: f.seek(0) f.truncate() - f.write(temp_text) + yaml.dump(config, f) f.flush() except OSError: serverless = True log.info("Cookie删除失败") else: log.info("Cookie删除完毕") - f.close() + if __name__ == "__main__": # 初始化配置文件 @@ -140,4 +148,5 @@ if __name__ == "__main__": # except OSError: # pass # save_config() - pass \ No newline at end of file + # update_config() + pass diff --git a/config/config.json.example b/config/config.json.example deleted file mode 100644 index aec32bc..0000000 --- a/config/config.json.example +++ /dev/null @@ -1,49 +0,0 @@ -{ - "enable": true, - "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": [] - } - } - } -} \ No newline at end of file diff --git a/config/config.yaml.example b/config/config.yaml.example new file mode 100644 index 0000000..0ff9fa3 --- /dev/null +++ b/config/config.yaml.example @@ -0,0 +1,41 @@ +enable: true #这里控制整个config文件是否启用 +version: 6 #config的版本 +account: + cookie: "" #登入账号只需要修改这里就行了,下面会自动获取 + login_ticket: "" + stuid: "" + stoken: "" +mihoyobbs: + enable: true #控制bbs功能是否启用 + checkin: true #社区签到 + checkin_multi: true #多个社区签到,关闭后只签到大别野 + checkin_multi_list: #签到的社区列表 详情可以看config文件夹下面的readme + - 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" + #配置签到用的ua + genshin: #原神自动签到 + auto_checkin: true #控制是否启用签到,下面一致 + black_list: [] #这里是不签到的账号,填入文本型数据 示例[“114514“,"1919810"] 下面的一样 + hokai2: #崩坏2 + auto_checkin: false + black_list: [] + honkai3rd: #崩坏3 + auto_checkin: false + black_list: [] + tears_of_themis: #未定事件簿 + auto_checkin: false + black_list: [] + os: #外服控制区域,现在暂时无用 + enable: false + cookie: "" + genshin: + auto_checkin: false + black_list: [] diff --git a/main.py b/main.py index 9f0afdc..f5a8c6d 100644 --- a/main.py +++ b/main.py @@ -1,3 +1,4 @@ +import os import time import push import login @@ -103,6 +104,8 @@ def main(): if __name__ == "__main__": + if not os.path.exists(config.config_Path): + config.update_config() try: status_code, message = main() except CookieError: diff --git a/main_multi.py b/main_multi.py index 11444d8..afee281 100644 --- a/main_multi.py +++ b/main_multi.py @@ -11,10 +11,10 @@ from error import CookieError # 搜索配置文件 -def fund_config() -> list: +def fund_config(ext: str) -> list: file_name = [] for files in os.listdir(config.path): - if os.path.splitext(files)[1] == '.json': + if os.path.splitext(files)[1] == ext: file_name.append(files) return file_name @@ -22,9 +22,20 @@ def fund_config() -> list: def main_multi(autorun: bool): log.info("AutoMihoyoBBS Multi User mode") log.info("正在搜索配置文件!") - config_list = fund_config() + json_config = fund_config('.json') + if len(json_config) != 0: + log.info(f'已搜索到{len(json_config)}个旧版config文件,正在进行升级') + for i in json_config: + log.info(f'开始处理{i}') + config.config_Path_json = f"{config.path}/{i}" + config.config_Path = f"{config.path}/{i[:-4]}yaml" + config.update_config() + if config.serverless: + push.push(1, "云函数环境请手动执行一下脚本更新config文件!") + exit(1) + config_list = fund_config('.yaml') if len(config_list) == 0: - log.warning("未检测到配置文件,请确认config文件夹存在.json后缀名的配置文件!") + log.warning("未检测到配置文件,请确认config文件夹存在.yaml后缀名的配置文件!") exit(1) if autorun: log.info(f"已搜索到{len(config_list)}个配置文件,正在开始执行!")