diff --git a/.gitignore b/.gitignore index cb4e9d0..68415ac 100644 --- a/.gitignore +++ b/.gitignore @@ -131,6 +131,9 @@ dmypy.json # VSCode .vscode/ +# idea +.idea/ + #自己用的推送(( push_main.py diff --git a/README.md b/README.md index 087d408..1a087ef 100644 --- a/README.md +++ b/README.md @@ -1,121 +1,124 @@ -# 米游社辅助签到 - -基于Python3的米游社辅助签到项目 - -本项目米游币部分参考[XiaoMiku01/miyoubiAuto](https://github.com/XiaoMiku01/miyoubiAuto)进行编写 - -* 此项目的用途 - - 这是一个米游社的辅助签到项目,包含了米游币和原神以及崩坏3 - -## 如何使用程序 - -* **部署方法** - - 1. 使用[Git](https://git-scm.com/)或[点击此处](https://github.com/Womsxd/AutoMihoyoBBS/archive/refs/heads/master.zip)下载本项目 - - 2. 下载[Python3](https://www.python.org/downloads/) - - 3. 解压本项目压缩包,在解压目录中**Shift+右键** 打开你的命令提示符cmd或powershell - - 4. [requirements.txt](https://raw.githubusercontent.com/Womsxd/AutoMihoyoBBS/master/requirements.txt) 是所需第三方模块,执行 `pip install -r requirements.txt` 安装模块 - - 5. 打开目录中的**config文件夹**复制`config.json.example`并改名为`config.json`,脚本的多用户功能靠读取不同的配置文件实现,你可以创建无数个`自定义名字.json`,脚本会扫描**config**目录下`json`为拓展名的文件,并按照名称顺序依次执行。 - - 6. 请使用vscode/notepad++等文本编辑器打开上一步复制好的配置文件 - - 7. **使用[获取Cookie](#获取米游社Cookie)里面的方法来获取米游社Cookie** - - 8. 将复制的Cookie粘贴到`config.json`的`"mihoyobbs_Cookies":" "`中 - - 例子 - - > ```json - > "mihoyobbs_Cookies": "你复制的cookie" - > ``` - - 9. 在命令提示符(cmd)/powershell,输入`python main.py`来进行执行 - - 10. 多用户的请使用`python main_multi.py`,多用户在需要自动执行的情况下请使用`python main_multi.py autorun` - -## 获取米游社Cookie - -1. 打开你的浏览器,进入**无痕/隐身模式** - -2. 由于米哈游修改了bbs可以获取的Cookie,导致一次获取的Cookie缺失,所以需要增加步骤 - -3. 打开`http://bbs.mihoyo.com/ys/`并进行登入操作 - -4. 在上一步登入完成后新建标签页,打开`http://user.mihoyo.com/`并进行登入操作 - -5. 按下键盘上的`F12`或右键检查,打开开发者工具,点击Console - -6. 输入 - - ```javascript - var cookie=document.cookie;var ask=confirm('Cookie:'+cookie+'\n\nDo you want to copy the cookie to the clipboard?');if(ask==true){copy(cookie);msg=cookie}else{msg='Cancel'} - ``` - - 回车执行,并在确认无误后点击确定。 - -7. **此时Cookie已经复制到你的粘贴板上了** - - - -## 使用Docker运行 - -Docker的运行脚本基于Linux平台编写,暂未在Win平台测试。 - -将本项目Clone至本地后,请先按照上述步骤添加或修改配置文件。随后运行`make-docker.sh`脚本本地构建Docker镜像,同时初次运行容器。 - -```shell -sh make-docker.sh -``` - -或手动执行 - -``` -# 编译容器 -docker build -f Dockerfile --tag ${docker_name}:"${time_now}" . -``` - -``` -# 运行容器(默认自动多配置文件) -docker run -itd \ - --name ${docker_name} \ - --log-opt max-size=1m \ - -v $(pwd):/var/app \ - ${docker_name}:"${time_now}" -# 运行容器(直接运行main.py) -docker run -itd \ - --name ${docker_name} \ - --log-opt max-size=1m \ - -v $(pwd):/var/app \ - -e MULTI=FALSE \ - ${docker_name}:"${time_now}" -``` - -若需要添加配置文件或修改配置文件,可直接在主机config文件夹中修改,修改的内容将实时同步在容器中。 - -若需要再次运行签到脚本,可手动重启容器。每次运行Docker容器后,容器内将自动按照参数执行签到活动,签到完成后容器将自动停止运行。 - -``` -docker restart ${docker_name} && docker logs -f ${docker_name} -``` - -关于每日定时,用户可在容器外部设计定时触发(启动)程序,每日定时运行脚本。 - -(若有需要可自行编写相关脚本通知完成状态 - - - -## 使用的第三方库 - -requests: [github](https://github.com/psf/requests) [pypi](https://pypi.org/project/requests/) - -httpx: [github](https://github.com/encode/httpx) [pypi](https://pypi.org/project/httpx/) - -## License - -[MIT License](https://github.com/Womsxd/AutoMihoyoBBS/blob/master/LICENSE) - +# 米游社辅助签到 + +基于Python3的米游社辅助签到项目 + +本项目米游币部分参考[XiaoMiku01/miyoubiAuto](https://github.com/XiaoMiku01/miyoubiAuto)进行编写 + +* 此项目的用途 + + 这是一个米游社的辅助签到项目,包含了米游币和原神以及崩坏3 + +## 如何使用程序 + +* **部署方法** + + 1. 使用[Git](https://git-scm.com/)或[点击此处](https://github.com/Womsxd/AutoMihoyoBBS/archive/refs/heads/master.zip)下载本项目 + + 2. 下载[Python3](https://www.python.org/downloads/) + + 3. 解压本项目压缩包,在解压目录中**Shift+右键** 打开你的命令提示符cmd或powershell + + 4. [requirements.txt](https://raw.githubusercontent.com/Womsxd/AutoMihoyoBBS/master/requirements.txt) 是所需第三方模块,执行 `pip install -r requirements.txt` 安装模块 + + 5. 打开目录中的**config文件夹**复制`config.json.example`并改名为`config.json`,脚本的多用户功能靠读取不同的配置文件实现,你可以创建无数个`自定义名字.json`,脚本会扫描**config**目录下`json`为拓展名的文件,并按照名称顺序依次执行。 + + 6. 请使用vscode/notepad++等文本编辑器打开上一步复制好的配置文件 + + 7. **使用[获取Cookie](#获取米游社Cookie)里面的方法来获取米游社Cookie** + + 8. 将复制的Cookie粘贴到`config.json`的`"mihoyobbs_Cookies":" "`中 + + 例子 + + > ```json + > "mihoyobbs_Cookies": "你复制的cookie" + > ``` + + 9. 在命令提示符(cmd)/powershell,输入`python main.py`来进行执行 + + 10. 多用户的请使用`python main_multi.py`,多用户在需要自动执行的情况下请使用`python main_multi.py autorun` + +## 获取米游社Cookie + +1. 打开你的浏览器,进入**无痕/隐身模式** + +2. 由于米哈游修改了bbs可以获取的Cookie,导致一次获取的Cookie缺失,所以需要增加步骤 + +3. 打开`http://bbs.mihoyo.com/ys/`并进行登入操作 + +4. 在上一步登入完成后新建标签页,打开`http://user.mihoyo.com/`并进行登入操作 + +5. 按下键盘上的`F12`或右键检查,打开开发者工具,点击Console + +6. 输入 + + ```javascript + var cookie=document.cookie;var ask=confirm('Cookie:'+cookie+'\n\nDo you want to copy the cookie to the clipboard?');if(ask==true){copy(cookie);msg=cookie}else{msg='Cancel'} + ``` + + 回车执行,并在确认无误后点击确定。 + +7. **此时Cookie已经复制到你的粘贴板上了** + + + +## 使用Docker运行 + +Docker的运行脚本基于Linux平台编写,暂未在Win平台测试。 + +将本项目Clone至本地后,请先按照上述步骤添加或修改配置文件。随后运行`make-docker.sh`脚本本地构建Docker镜像,同时初次运行容器。 + +```shell +sh make-docker.sh +``` + +或手动执行 + +``` +# 编译容器 +docker build -f Dockerfile --tag ${docker_name}:"${time_now}" . +``` + +``` +# 运行容器(默认自动多配置文件) +docker run -itd \ + --name ${docker_name} \ + --log-opt max-size=1m \ + -v $(pwd):/var/app \ + ${docker_name}:"${time_now}" +# 运行容器(直接运行main.py) +docker run -itd \ + --name ${docker_name} \ + --log-opt max-size=1m \ + -v $(pwd):/var/app \ + -e MULTI=FALSE \ + ${docker_name}:"${time_now}" +``` + +若需要添加配置文件或修改配置文件,可直接在主机config文件夹中修改,修改的内容将实时同步在容器中。 + +若需要再次运行签到脚本,可手动重启容器。每次运行Docker容器后,容器内将自动按照参数执行签到活动,签到完成后容器将自动停止运行。 + +``` +docker restart ${docker_name} && docker logs -f ${docker_name} +``` + +关于每日定时,用户可在容器外部设计定时触发(启动)程序,每日定时运行脚本。 + +(若有需要可自行编写相关脚本通知完成状态 + + + +## 使用的第三方库 + +requests: [github](https://github.com/psf/requests) [pypi](https://pypi.org/project/requests/) + +httpx: [github](https://github.com/encode/httpx) [pypi](https://pypi.org/project/httpx/) + +## License + +[MIT License](https://github.com/Womsxd/AutoMihoyoBBS/blob/master/LICENSE) + +## 鸣谢 + +[JetBrains](https://jb.gg/OpenSource) diff --git a/config.py b/config.py index 10018cd..8cc359f 100644 --- a/config.py +++ b/config.py @@ -2,44 +2,45 @@ import os import json import tools -#是否启用config +# 是否启用config enable_Config = True -#这里的内容会自动获取 +# 这里的内容会自动获取 mihoyobbs_Login_ticket = "" mihoyobbs_Stuid = "" mihoyobbs_Stoken = "" -#这里是米游社的cookie +# 这里是米游社的cookie mihoyobbs_Cookies = "" -#这个dist里面的内容和米游社有关 +# 这个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": [2,5], - #浏览3个帖子 + # 指定签到讨论区 + # 1是崩坏3 2是原神 3是崩坏2 4是未定事件簿 5是大别墅 + # 可以通过设置讨论区的id位置来设置主讨论区,[5,1]就是大别墅为主社区 + # 看帖子 点赞 分享帖子都是使用主社区获取到的列表 + "bbs_Signin_multi_list": [2, 5], + # 浏览3个帖子 "bbs_Read_posts": True, - #完成5次点赞 + # 完成5次点赞 "bbs_Like_posts": True, - #完成后取消点赞 + # 完成后取消点赞 "bbs_Unlike": True, - #分享帖子 + # 分享帖子 "bbs_Share": True, } -#原神自动签到 +# 原神自动签到 genshin_Auto_sign = True -#崩坏3自动签到 +# 崩坏3自动签到 honkai3rd_Auto_sign = True path = os.path.dirname(os.path.realpath(__file__)) + "/config" config_Path = f"{path}/config.json" + def Load_config(): with open(config_Path, "r") as f: data = json.load(f) @@ -69,8 +70,9 @@ def Load_config(): f.close() tools.log.info("Config加载完毕") + def Save_config(): - with open(config_Path,"r+") as f: + with open(config_Path, "r+") as f: data = json.load(f) data["mihoyobbs_Login_ticket"] = mihoyobbs_Login_ticket data["mihoyobbs_Stuid"] = mihoyobbs_Stuid @@ -83,8 +85,9 @@ def Save_config(): f.close() tools.log.info("Config保存完毕") + def Clear_cookies(): - with open(config_Path,"r+") as f: + with open(config_Path, "r+") as f: data = json.load(f) data["enable_Config"] = False data["mihoyobbs_Login_ticket"] = "" diff --git a/genshin.py b/genshin.py index 86adc34..21bd4a4 100644 --- a/genshin.py +++ b/genshin.py @@ -5,70 +5,71 @@ import random import setting from request import http + class genshin: def __init__(self) -> None: self.headers = { - 'Accept': 'application/json, text/plain, */*', - 'DS': tools.Get_ds(web=True, web_old=True), - 'Origin': 'https://webstatic.mihoyo.com', - 'x-rpc-app_version': setting.mihoyobbs_Version_old, - 'User-Agent': 'Mozilla/5.0 (Linux; Android 9; Unspecified Device) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/39.0.0.0 Mobile Safari/537.36 miHoYoBBS/2.3.0', - 'x-rpc-client_type': setting.mihoyobbs_Client_type_web, - 'Referer': 'https://webstatic.mihoyo.com/bbs/event/signin-ys/index.html?bbs_auth_required=true&act_id=e202009291139501&utm_source=bbs&utm_medium=mys&utm_campaign=icon', - 'Accept-Encoding': 'gzip, deflate', - 'Accept-Language': 'zh-CN,en-US;q=0.8', - 'X-Requested-With': 'com.mihoyo.hyperion', - "Cookie": config.mihoyobbs_Cookies, - 'x-rpc-device_id': tools.Get_deviceid() - } + 'Accept': 'application/json, text/plain, */*', + 'DS': tools.Get_ds(web=True, web_old=True), + 'Origin': 'https://webstatic.mihoyo.com', + 'x-rpc-app_version': setting.mihoyobbs_Version_old, + 'User-Agent': 'Mozilla/5.0 (Linux; Android 9; Unspecified Device) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/39.0.0.0 Mobile Safari/537.36 miHoYoBBS/2.3.0', + 'x-rpc-client_type': setting.mihoyobbs_Client_type_web, + 'Referer': 'https://webstatic.mihoyo.com/bbs/event/signin-ys/index.html?bbs_auth_required=true&act_id=e202009291139501&utm_source=bbs&utm_medium=mys&utm_campaign=icon', + 'Accept-Encoding': 'gzip, deflate', + 'Accept-Language': 'zh-CN,en-US;q=0.8', + 'X-Requested-With': 'com.mihoyo.hyperion', + "Cookie": config.mihoyobbs_Cookies, + 'x-rpc-device_id': tools.Get_deviceid() + } self.acc_List = self.Getacc_list() if len(self.acc_List) != 0: self.sign_Give = self.Get_signgive() - #获取绑定的账号列表 + # 获取绑定的账号列表 def Getacc_list(self) -> list: tools.log.info("正在获取米哈游账号绑定原神账号列表...") temp_List = [] req = http.get(setting.genshin_Account_info_url, headers=self.headers) data = req.json() if data["retcode"] != 0: - tools.log.warn("获取账号列表失败!") + tools.log.warning("获取账号列表失败!") exit(1) for i in data["data"]["list"]: temp_List.append([i["nickname"], i["game_uid"], i["region"]]) tools.log.info(f"已获取到{len(temp_List)}个原神账号信息") return temp_List - #获取已经签到奖励列表 + # 获取已经签到奖励列表 def Get_signgive(self) -> list: tools.log.info("正在获取签到奖励列表...") - req = http.get(setting.genshin_Signlisturl.format(setting.genshin_Act_id),headers=self.headers) + req = http.get(setting.genshin_Signlisturl.format(setting.genshin_Act_id), headers=self.headers) data = req.json() if data["retcode"] != 0: - tools.log.warn("获取签到奖励列表失败") - print (req.text) + tools.log.warning("获取签到奖励列表失败") + print(req.text) exit(1) return data["data"]["awards"] - #判断签到 - def Is_sign(self, region:str, uid:str): + # 判断签到 + def Is_sign(self, region: str, uid: str): req = http.get(setting.genshin_Is_signurl.format(setting.genshin_Act_id, region, uid), headers=self.headers) data = req.json() if data["retcode"] != 0: - tools.log.warn("获取账号签到信息失败!") - print (req.text) + tools.log.warning("获取账号签到信息失败!") + print(req.text) exit(1) return data["data"] - #签到 + # 签到 def Sign_acc(self): if len(self.acc_List) != 0: for i in self.acc_List: tools.log.info(f"正在为旅行者{i[0]}进行签到...") time.sleep(random.randint(2, 8)) - is_data = self.Is_sign(region = i[2], uid = i[1]) + is_data = self.Is_sign(region=i[2], uid=i[1]) if is_data["first_bind"]: - tools.log.warn(f"旅行者{i[0]}是第一次绑定米游社,请先手动签到一次") + tools.log.warning(f"旅行者{i[0]}是第一次绑定米游社,请先手动签到一次") else: sign_Days = is_data["total_sign_day"] - 1 if is_data["is_sign"]: @@ -76,17 +77,18 @@ class genshin: else: time.sleep(random.randint(2, 8)) req = http.post(url=setting.genshin_Signurl, headers=self.headers, - json={'act_id': setting.genshin_Act_id, 'region': i[2], 'uid': i[1]}) + json={'act_id': setting.genshin_Act_id, 'region': i[2], 'uid': i[1]}) data = req.json() if data["retcode"] == 0: if sign_Days == 0: tools.log.info(f"旅行者{i[0]}签到成功~\r\n今天获得的奖励是{tools.Get_item(self.sign_Give[sign_Days])}") else: - tools.log.info(f"旅行者{i[0]}签到成功~\r\n今天获得的奖励是{tools.Get_item(self.sign_Give[sign_Days + 1])}") + tools.log.info( + f"旅行者{i[0]}签到成功~\r\n今天获得的奖励是{tools.Get_item(self.sign_Give[sign_Days + 1])}") elif data["retcode"] == -5003: tools.log.info(f"旅行者{i[0]}今天已经签到过了~\r\n今天获得的奖励是{tools.Get_item(self.sign_Give[sign_Days])}") else: - tools.log.warn("账号签到失败!") - print (req.text) + tools.log.warning("账号签到失败!") + print(req.text) else: - tools.log.warn("账号没有绑定任何原神账号!") + tools.log.warning("账号没有绑定任何原神账号!") diff --git a/honkai3rd.py b/honkai3rd.py index f75dfdc..35513f6 100644 --- a/honkai3rd.py +++ b/honkai3rd.py @@ -5,56 +5,60 @@ import random import setting from request import http + class honkai3rd: def __init__(self) -> None: self.headers = { - 'Accept': 'application/json, text/plain, */*', - 'DS': tools.Get_ds(web=True, web_old=True), - 'Origin': 'https://webstatic.mihoyo.com', - 'x-rpc-app_version': setting.mihoyobbs_Version_old, - 'User-Agent': 'Mozilla/5.0 (Linux; Android 9; Unspecified Device) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/39.0.0.0 Mobile Safari/537.36 miHoYoBBS/2.3.0', - 'x-rpc-client_type': setting.mihoyobbs_Client_type_web, - 'Referer': 'https://webstatic.mihoyo.com/bh3/event/euthenia/index.html?bbs_presentation_style=fullscreen&bbs_game_role_required=bh3_cn&bbs_auth_required=true&act_id=e202104072769&utm_source=bbs&utm_medium=mys&utm_campaign=icon', - 'Accept-Encoding': 'gzip, deflate', - 'Accept-Language': 'zh-CN,en-US;q=0.8', - 'X-Requested-With': 'com.mihoyo.hyperion', - "Cookie": config.mihoyobbs_Cookies, - 'x-rpc-device_id': tools.Get_deviceid() - } + 'Accept': 'application/json, text/plain, */*', + 'DS': tools.Get_ds(web=True, web_old=True), + 'Origin': 'https://webstatic.mihoyo.com', + 'x-rpc-app_version': setting.mihoyobbs_Version_old, + 'User-Agent': 'Mozilla/5.0 (Linux; Android 9; Unspecified Device) AppleWebKit/537.36 (KHTML, like Gecko) ' + 'Version/4.0 Chrome/39.0.0.0 Mobile Safari/537.36 miHoYoBBS/2.3.0', + 'x-rpc-client_type': setting.mihoyobbs_Client_type_web, + 'Referer': f'https://webstatic.mihoyo.com/bh3/event/euthenia/index.html?bbs_presentation_style=fullscreen' + f'&bbs_game_role_required=bh3_cn&bbs_auth_required=t' + f'rue&act_id={setting.honkai3rd_Act_id}&utm_source=bbs&utm_medium=mys&utm_campaign=icon', + 'Accept-Encoding': 'gzip, deflate', + 'Accept-Language': 'zh-CN,en-US;q=0.8', + 'X-Requested-With': 'com.mihoyo.hyperion', + "Cookie": config.mihoyobbs_Cookies, + 'x-rpc-device_id': tools.Get_deviceid() + } self.acc_List = self.Getacc_list() - #获取绑定的账号列表 + # 获取绑定的账号列表 def Getacc_list(self) -> list: tools.log.info("正在获取米哈游账号绑定的崩坏3账号列表...") temp_List = [] req = http.get(setting.honkai3rd_Account_info_url, headers=self.headers) data = req.json() if data["retcode"] != 0: - tools.log.warn("获取账号列表失败!") + tools.log.warning("获取账号列表失败!") exit(1) for i in data["data"]["list"]: temp_List.append([i["nickname"], i["game_uid"], i["region"]]) tools.log.info(f"已获取到{len(temp_List)}个崩坏3账号信息") return temp_List - #获取今天已经签到了的dict - def Get_today_item(self,raw_data:list) -> dict: - #用range进行循环,当staus等于0的时候上一个就是今天签到的dict + # 获取今天已经签到了的dict + def Get_today_item(self, raw_data: list) -> dict: + # 用range进行循环,当status等于0的时候上一个就是今天签到的dict for i in range(len(raw_data)): if raw_data[i]["status"] == 0: - return raw_data[i-1] + return raw_data[i - 1] if raw_data[i]["status"] == 1: return raw_data[i] if i == int(len(raw_data) - 1) and raw_data[i]["status"] != 0: return raw_data[i] - #判断签到 - def Is_sign(self, region:str, uid:str, nickname:str): + # 判断签到 + def Is_sign(self, region: str, uid: str, nickname: str): req = http.get(setting.honkai3rd_Is_signurl.format(setting.honkai3rd_Act_id, region, uid), headers=self.headers) data = req.json() if data["retcode"] != 0: - tools.log.warn("获取账号签到信息失败!") - print (req.text) + tools.log.warning("获取账号签到信息失败!") + print(req.text) exit(1) today_Item = self.Get_today_item(data["data"]["sign"]["list"]) if today_Item["status"] == 1: @@ -63,26 +67,26 @@ class honkai3rd: tools.log.info(f"舰长{nickname}今天已经签到过了~\r\n今天获得的奖励是{tools.Get_item(today_Item)}") return False - #签到 + # 签到 def Sign_acc(self): if len(self.acc_List) != 0: for i in self.acc_List: tools.log.info(f"正在为舰长{i[0]}进行签到...") time.sleep(random.randint(2, 8)) - is_data = self.Is_sign(region = i[2], uid = i[1], nickname = i[0]) + is_data = self.Is_sign(region=i[2], uid=i[1], nickname=i[0]) if is_data: time.sleep(random.randint(2, 8)) req = http.post(url=setting.honkai3rd_SignUrl, headers=self.headers, - json={'act_id': setting.honkai3rd_Act_id, 'region': i[2], 'uid': i[1]}) + json={'act_id': setting.honkai3rd_Act_id, 'region': i[2], 'uid': i[1]}) data = req.json() if data["retcode"] == 0: today_Item = self.Get_today_item(data["data"]["list"]) tools.log.info(f"舰长{i[0]}签到成功~\r\n今天获得的奖励是{tools.Get_item(today_Item)}") elif data["retcode"] == -5003: - #崩坏3应为奖励列表和签到信息在一起了,加上上面已经可以进行了一次判断,所以这里旧不重复再次执行判断来获取内容了 + # 崩坏3应为奖励列表和签到信息在一起了,加上上面已经可以进行了一次判断,所以这里旧不重复再次执行判断来获取内容了 tools.log.info(f"舰长{i[0]}今天已经签到过了~") else: - tools.log.warn("账号签到失败!") - print (req.text) + tools.log.warning("账号签到失败!") + print(req.text) else: - tools.log.warn("账号没有绑定任何崩坏3账号!") \ No newline at end of file + tools.log.warning("账号没有绑定任何崩坏3账号!") diff --git a/index.py b/index.py index c30d812..3b226b3 100644 --- a/index.py +++ b/index.py @@ -2,13 +2,14 @@ import main import main_multi -def main_handler(event:dict, context:dict): +def main_handler(event: dict, context: dict): main.main() print("云函数测试支持!") return 0 -def main_handler_mulit(event:dict, context:dict): - #多用户需要传递True表示自动执行,不需要手动进行确认 + +def main_handler_mulit(event: dict, context: dict): + # 多用户需要传递True表示自动执行,不需要手动进行确认 main_multi.main_multi(True) print("云函数多用户测试支持!") return 0 diff --git a/login.py b/login.py index 9c2f70f..bc14b7c 100644 --- a/login.py +++ b/login.py @@ -3,20 +3,20 @@ import config import request import setting + def login(): - if (config.mihoyobbs_Cookies == ''): + if config.mihoyobbs_Cookies == '': log.error("请填入Cookies!") config.Clear_cookies() exit(1) - temp_Cookies = {} - #判断Cookie里面是否有login_ticket 没有的话直接退了 + # 判断Cookie里面是否有login_ticket 没有的话直接退了 if "login_ticket" in config.mihoyobbs_Cookies: temp_Cookies = config.mihoyobbs_Cookies.split(";") for i in temp_Cookies: if i.split("=")[0] == " login_ticket": config.mihoyobbs_Login_ticket = i.split("=")[1] break - #这里获取Stuid,但是实际是可以直接拿cookie里面的Uid + # 这里获取Stuid,但是实际是可以直接拿cookie里面的Uid data = request.get(url=setting.bbs_Cookieurl.format(config.mihoyobbs_Login_ticket)) if "成功" in data["data"]["msg"]: config.mihoyobbs_Stuid = str(data["data"]["cookie_info"]["account_id"]) @@ -32,4 +32,4 @@ def login(): else: log.error("cookie中没有'login_ticket'字段,请重新登录米游社,重新抓取cookie!") config.Clear_cookies() - exit(1) \ No newline at end of file + exit(1) diff --git a/main.py b/main.py index ebe6179..0e51327 100644 --- a/main.py +++ b/main.py @@ -8,39 +8,41 @@ import setting import mihoyobbs import honkai3rd + def main(): - #初始化,加载配置 + # 初始化,加载配置 config.Load_config() if config.enable_Config: - #检测参数是否齐全,如果缺少就进行登入操作 + # 检测参数是否齐全,如果缺少就进行登入操作 if config.mihoyobbs_Login_ticket == "" or config.mihoyobbs_Stuid == "" or config.mihoyobbs_Stoken == "": - #登入 + # 登入 login.login() time.sleep(random.randint(2, 8)) - #获取要使用的BBS列表,#判断是否开启bbs_Signin_multi + # 获取要使用的BBS列表,#判断是否开启bbs_Signin_multi if config.mihoyobbs["bbs_Signin_multi"]: - #速度快,但是无法设置主社区,主社区默认为第一个 + # 速度快,但是无法设置主社区,主社区默认为第一个 ''' for i in setting.mihoyobbs_List: if int(i["id"]) in config.mihoyobbs["bbs_Signin_multi_list"]: setting.mihoyobbs_List_Use.append(i) ''' - #用这里的方案可以实现当让id在第一个的时候为主社区 + # 用这里的方案可以实现当让id在第一个的时候为主社区 for i in config.mihoyobbs["bbs_Signin_multi_list"]: for i2 in setting.mihoyobbs_List: if i == int(i2["id"]): setting.mihoyobbs_List_Use.append(i2) else: - #关闭bbs_Signin_multi后只签到大别墅 + # 关闭bbs_Signin_multi后只签到大别墅 for i in setting.mihoyobbs_List: if int(i["id"]) == 5: setting.mihoyobbs_List_Use.append(i) - #米游社签到 + # 米游社签到 if config.mihoyobbs["bbs_Global"]: 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"]: + 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"]: tools.log.info(f"今天已经全部完成了!一共获得{mihoyobbs.Today_have_getcoins}个米游币,目前有{mihoyobbs.Have_coins}个米游币") - else: + else: if config.mihoyobbs["bbs_Signin"]: bbs.Signin() if config.mihoyobbs["bbs_Read_posts"]: @@ -50,11 +52,12 @@ def main(): if config.mihoyobbs["bbs_Share"]: bbs.Share() bbs.Get_taskslist() - tools.log.info(f"今天已经获得{mihoyobbs.Today_have_getcoins}个米游币,还能获得{mihoyobbs.Today_getcoins}个米游币,目前有{mihoyobbs.Have_coins}个米游币") + tools.log.info( + f"今天已经获得{mihoyobbs.Today_have_getcoins}个米游币,还能获得{mihoyobbs.Today_getcoins}个米游币,目前有{mihoyobbs.Have_coins}个米游币") time.sleep(random.randint(2, 8)) else: tools.log.info("米游社功能未启用!") - #原神签到 + # 原神签到 if config.genshin_Auto_sign: tools.log.info("正在进行原神签到") genshin_Help = genshin.genshin() @@ -62,7 +65,7 @@ def main(): time.sleep(random.randint(2, 8)) else: tools.log.info("原神签到功能未启用!") - #崩坏3签到 + # 崩坏3签到 if config.honkai3rd_Auto_sign: tools.log.info("正在进行崩坏3签到") honkai3rd_Help = honkai3rd.honkai3rd() @@ -70,8 +73,9 @@ def main(): else: tools.log.info("崩坏3签到功能未启用!") else: - tools.log.warn ("Config未启用!") + tools.log.warning("Config未启用!") + if __name__ == "__main__": main() -pass \ No newline at end of file +pass diff --git a/main_multi.py b/main_multi.py index d8fe41d..296b7fa 100644 --- a/main_multi.py +++ b/main_multi.py @@ -7,20 +7,22 @@ import config import random import setting -#搜索配置文件 -def Fund_config() ->list: - file_Name=[] + +# 搜索配置文件 +def Fund_config() -> list: + file_Name = [] for files in os.listdir(config.path): if os.path.splitext(files)[1] == '.json': file_Name.append(files) - return (file_Name) + return file_Name -def main_multi(autorun:bool): + +def main_multi(autorun: bool): tools.log.info("AutoMihoyoBBS Multi User mode") tools.log.info("正在搜索配置文件!") config_List = Fund_config() if len(config_List) == 0: - tools.log.warn("未检测到配置文件,请确认config文件夹存在.json后缀名的配置文件!") + tools.log.warning("未检测到配置文件,请确认config文件夹存在.json后缀名的配置文件!") exit(1) if autorun: tools.log.info(f"已搜索到{len(config_List)}个配置文件,正在开始执行!") @@ -33,11 +35,12 @@ def main_multi(autorun:bool): for i in iter(config_List): tools.log.info(f"正在执行{i}") setting.mihoyobbs_List_Use = [] - config.config_Path= f"{config.path}/{i}" + config.config_Path = f"{config.path}/{i}" main.main() tools.log.info(f"{i}执行完毕") time.sleep(random.randint(3, 10)) + if __name__ == "__main__": if len(sys.argv) >= 2 and sys.argv[1] == "autorun": autorun = True @@ -45,4 +48,4 @@ if __name__ == "__main__": autorun = False main_multi(autorun) exit(0) -pass \ No newline at end of file +pass diff --git a/mihoyobbs.py b/mihoyobbs.py index 7dfd4f4..b0e510e 100644 --- a/mihoyobbs.py +++ b/mihoyobbs.py @@ -6,9 +6,10 @@ import setting from request import http Today_getcoins = 0 -Today_have_getcoins = 0 #这个变量以后可能会用上,先留着了 +Today_have_getcoins = 0 # 这个变量以后可能会用上,先留着了 Have_coins = 0 + class mihoyobbs: def __init__(self): self.headers = { @@ -34,13 +35,13 @@ class mihoyobbs: "bbs_Share": False } self.Get_taskslist() - #如果这三个任务都做了就没必要获取帖子了 + # 如果这三个任务都做了就没必要获取帖子了 if self.Task_do["bbs_Read_posts"] and self.Task_do["bbs_Like_posts"] and self.Task_do["bbs_Share"]: pass else: self.postsList = self.Getlist() - #获取任务列表,用来判断做了哪些任务 + # 获取任务列表,用来判断做了哪些任务 def Get_taskslist(self): global Today_getcoins global Today_have_getcoins @@ -56,44 +57,44 @@ class mihoyobbs: Today_getcoins = data["data"]["can_get_points"] Today_have_getcoins = data["data"]["already_received_points"] Have_coins = data["data"]["total_points"] - #如果当日可获取米游币数量为0直接判断全部任务都完成了 + # 如果当日可获取米游币数量为0直接判断全部任务都完成了 if Today_getcoins == 0: self.Task_do["bbs_Sign"] = True self.Task_do["bbs_Read_posts"] = True self.Task_do["bbs_Like_posts"] = True self.Task_do["bbs_Share"] = True else: - #如果第0个大于或等于62则直接判定任务没做 + # 如果第0个大于或等于62则直接判定任务没做 if data["data"]["states"][0]["mission_id"] >= 62: tools.log.info(f"新的一天,今天可以获得{Today_getcoins}个米游币") pass else: tools.log.info(f"似乎还有任务没完成,今天还能获得{Today_getcoins}") for i in data["data"]["states"]: - #58是讨论区签到 + # 58是讨论区签到 if i["mission_id"] == 58: if i["is_get_award"]: self.Task_do["bbs_Sign"] = True - #59是看帖子 + # 59是看帖子 elif i["mission_id"] == 59: if i["is_get_award"]: self.Task_do["bbs_Read_posts"] = True else: self.Task_do["bbs_Read_posts_num"] -= i["happened_times"] - #60是给帖子点赞 + # 60是给帖子点赞 elif i["mission_id"] == 60: if i["is_get_award"]: self.Task_do["bbs_Like_posts"] = True else: self.Task_do["bbs_Like_posts_num"] -= i["happened_times"] - #61是分享帖子 + # 61是分享帖子 elif i["mission_id"] == 61: if i["is_get_award"]: self.Task_do["bbs_Share"] = True - #分享帖子,是最后一个任务,到这里了下面都是一次性任务,直接跳出循环 + # 分享帖子,是最后一个任务,到这里了下面都是一次性任务,直接跳出循环 break - #获取要帖子列表 + # 获取要帖子列表 def Getlist(self) -> list: temp_List = [] tools.log.info("正在获取帖子列表......") @@ -104,24 +105,24 @@ class mihoyobbs: tools.log.info("已获取{}个帖子".format(len(temp_List))) return temp_List - #进行签到操作 + # 进行签到操作 def Signin(self): if self.Task_do["bbs_Sign"]: tools.log.info("讨论区任务已经完成过了~") else: tools.log.info("正在签到......") for i in setting.mihoyobbs_List_Use: - req = http.post(url=setting.bbs_Signurl.format(i["id"]), data="" ,headers=self.headers) + req = http.post(url=setting.bbs_Signurl.format(i["id"]), data={}, headers=self.headers) data = req.json() if "err" not in data["message"]: - tools.log.info(str(i["name"]+ data["message"])) + tools.log.info(str(i["name"] + data["message"])) time.sleep(random.randint(2, 8)) else: tools.log.info("签到失败,你的cookie可能已过期,请重新设置cookie。") config.Clear_cookies() exit(1) - #看帖子 + # 看帖子 def Readposts(self): if self.Task_do["bbs_Read_posts"]: tools.log.info("看帖任务已经完成过了~") @@ -134,7 +135,7 @@ class mihoyobbs: tools.log.info("看帖:{} 成功".format(self.postsList[i][1])) time.sleep(random.randint(2, 8)) - #点赞 + # 点赞 def Likeposts(self): if self.Task_do["bbs_Like_posts"]: tools.log.info("点赞任务已经完成过了~") @@ -142,21 +143,22 @@ class mihoyobbs: tools.log.info("正在点赞......") for i in range(self.Task_do["bbs_Like_posts_num"]): req = http.post(url=setting.bbs_Likeurl, headers=self.headers, - json={"post_id": self.postsList[i][0], "is_cancel": False}) + json={"post_id": self.postsList[i][0], "is_cancel": False}) data = req.json() if data["message"] == "OK": tools.log.info("点赞:{} 成功".format(self.postsList[i][1])) - #判断取消点赞是否打开 + # 判断取消点赞是否打开 if config.mihoyobbs["bbs_Unlike"]: time.sleep(random.randint(2, 8)) req = http.post(url=setting.bbs_Likeurl, headers=self.headers, - json={"post_id": self.postsList[i][0], "is_cancel": True}) + json={"post_id": self.postsList[i][0], "is_cancel": True}) data = req.json() if data["message"] == "OK": tools.log.info("取消点赞:{} 成功".format(self.postsList[i][1])) - time.sleep(random.randint(2, 8)) + time.sleep(random.randint(2, 8)) + + # 分享操作 - #分享操作 def Share(self): if self.Task_do["bbs_Share"]: tools.log.info("分享任务已经完成过了~") @@ -166,4 +168,4 @@ class mihoyobbs: data = req.json() if data["message"] == "OK": tools.log.info("分享:{} 成功".format(self.postsList[0][1])) - time.sleep(random.randint(2, 8)) \ No newline at end of file + time.sleep(random.randint(2, 8)) diff --git a/push_main-server.py b/push_main-server.py new file mode 100644 index 0000000..6a53754 --- /dev/null +++ b/push_main-server.py @@ -0,0 +1,38 @@ +import sys +import time +import random +import subprocess +from request import http + +SendKey = "" +send_Url = f"https://sctapi.ftqq.com/{SendKey}.send" + +python_Path = sys.executable + +run_ShellCommand = python_Path + " main_multi.py autorun" + +for i in range(2): + opt_id, opt_info = subprocess.getstatusoutput(run_ShellCommand) + if opt_id == 0: + break + time.sleep(random.randint(30, 70)) + +if opt_id != 0: + print("Error!") + http.post( + url=send_Url, + data={ + "title": "米游社脚本执行出错!", + "desp": "这里是运行相关日志:\r\n" + opt_info + } + ) +else: + http.post( + url=send_Url, + data={ + "title": "米游社脚本执行成功", + "desp": "这里是运行相关日志:\r\n" + opt_info + } + ) + print("OK!") +exit(0) diff --git a/request.py b/request.py index 575fddc..88ca8f3 100644 --- a/request.py +++ b/request.py @@ -1,17 +1,21 @@ try: - #优先使用httpx,在httpx无法使用的环境下使用requests + # 优先使用httpx,在httpx无法使用的环境下使用requests import httpx + http = httpx - #当openssl版本小于1.0.2的时候直接进行一个空请求让httpx报错 + # 当openssl版本小于1.0.2的时候直接进行一个空请求让httpx报错 import tools + if tools.Get_openssl_Version() <= 102: httpx.get() except: import requests + http = requests -#这里实际上应该加个"-> dict"但是考虑到请求可能失败的关系,所以直接不声明返回变量 -def get(url:str, **headers:dict): + +# 这里实际上应该加个"-> dict"但是考虑到请求可能失败的关系,所以直接不声明返回变量 +def get(url: str, **headers: dict): try: req = http.get(url, headers=headers) return req.json() @@ -19,7 +23,8 @@ def get(url:str, **headers:dict): print("请求失败,网络错误!") return "" -def post(url:str, data:dict, **headers:dict): + +def post(url: str, data: dict, **headers: dict): try: req = http.post(url, data=data, headers=headers) return req.json() @@ -27,10 +32,11 @@ def post(url:str, data:dict, **headers:dict): print("请求失败,网络错误!") return "" -def post_json(url:str, json, **headers:dict): + +def post_json(url: str, json, **headers: dict): try: req = http.post(url, json=json, headers=headers) return req.json() except: print("请求失败,网络错误!") - return "" \ No newline at end of file + return "" diff --git a/requirements.txt b/requirements.txt index fb9d0d0..80f47fe 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1,2 @@ -httpx==0.19.0 +httpx==0.20.0 requests==2.26.0 \ No newline at end of file diff --git a/setting.py b/setting.py index b4a0807..f2c438e 100644 --- a/setting.py +++ b/setting.py @@ -1,68 +1,68 @@ -#米游社的Salt +# 米游社的Salt mihoyobbs_Salt = "fd3ykrh7o1j54g581upo1tvpam0dsgtf" mihoyobbs_Salt_web = "14bmu1mz0yuljprsfgpvjh3ju2ni468r" mihoyobbs_Salt_web_old = "h8w582wxwgqvahcdkpvdhbh2w9casgfl" -#米游社的版本 -mihoyobbs_Version = "2.7.0" #Slat和Version相互对应 +# 米游社的版本 +mihoyobbs_Version = "2.7.0" # Slat和Version相互对应 mihoyobbs_Version_old = "2.3.0" -#米游社的客户端类型 -mihoyobbs_Client_type = "2" #1为ios 2为安卓 -mihoyobbs_Client_type_web = "5" #4为pc web 5为mobile web -#米游社的分区列表 +# 米游社的客户端类型 +mihoyobbs_Client_type = "2" # 1为ios 2为安卓 +mihoyobbs_Client_type_web = "5" # 4为pc web 5为mobile web +# 米游社的分区列表 mihoyobbs_List = [{ - "id": "1", - "forumId": "1", - "name": "崩坏3", - "url": "https://bbs.mihoyo.com/bh3/" - },{ - "id": "2", - "forumId": "26", - "name": "原神", - "url": "https://bbs.mihoyo.com/ys/" - },{ - "id": "3", - "forumId": "30", - "name": "崩坏2", - "url": "https://bbs.mihoyo.com/bh2/" - },{ - "id": "4", - "forumId": "37", - "name": "未定事件簿", - "url": "https://bbs.mihoyo.com/wd/" - },{ - "id": "5", - "forumId": "34", - "name": "大别野", - "url": "https://bbs.mihoyo.com/dby/" - },{ - "id": "6", - "forumId": "52", - "name": "崩坏:星穹铁道", - "url": "https://bbs.mihoyo.com/sr/" - }] + "id": "1", + "forumId": "1", + "name": "崩坏3", + "url": "https://bbs.mihoyo.com/bh3/" +}, { + "id": "2", + "forumId": "26", + "name": "原神", + "url": "https://bbs.mihoyo.com/ys/" +}, { + "id": "3", + "forumId": "30", + "name": "崩坏2", + "url": "https://bbs.mihoyo.com/bh2/" +}, { + "id": "4", + "forumId": "37", + "name": "未定事件簿", + "url": "https://bbs.mihoyo.com/wd/" +}, { + "id": "5", + "forumId": "34", + "name": "大别野", + "url": "https://bbs.mihoyo.com/dby/" +}, { + "id": "6", + "forumId": "52", + "name": "崩坏:星穹铁道", + "url": "https://bbs.mihoyo.com/sr/" +}] -#Config Load之后run里面进行列表的选择 -mihoyobbs_List_Use= [] +# Config Load之后run里面进行列表的选择 +mihoyobbs_List_Use = [] -#米游社的API列表 +# 米游社的API列表 bbs_Cookieurl = "https://webapi.account.mihoyo.com/Api/cookie_accountinfo_by_loginticket?login_ticket={}" bbs_Cookieurl2 = "https://api-takumi.mihoyo.com/auth/api/getMultiTokenByLoginTicket?login_ticket={}&token_types=3&uid={}" -bbs_Taskslist = "https://bbs-api.mihoyo.com/apihub/sapi/getUserMissionsState" #获取任务列表 +bbs_Taskslist = "https://bbs-api.mihoyo.com/apihub/sapi/getUserMissionsState" # 获取任务列表 bbs_Signurl = "https://bbs-api.mihoyo.com/apihub/sapi/signIn?gids={}" # post bbs_Listurl = "https://bbs-api.mihoyo.com/post/api/getForumPostList?forum_id={}&is_good=false&is_hot=false&page_size=20&sort_type=1" bbs_Detailurl = "https://bbs-api.mihoyo.com/post/api/getPostFull?post_id={}" bbs_Shareurl = "https://bbs-api.mihoyo.com/apihub/api/getShareConf?entity_id={}&entity_type=1" bbs_Likeurl = "https://bbs-api.mihoyo.com/apihub/sapi/upvotePost" # post json -#原神自动签到相关的设置 +# 原神自动签到相关的设置 genshin_Act_id = "e202009291139501" genshin_Account_info_url = "https://api-takumi.mihoyo.com/binding/api/getUserGameRolesByCookie?game_biz=hk4e_cn" genshin_Signlisturl = "https://api-takumi.mihoyo.com/event/bbs_sign_reward/home?act_id={}" genshin_Is_signurl = "https://api-takumi.mihoyo.com/event/bbs_sign_reward/info?act_id={}®ion={}&uid={}" genshin_Signurl = "https://api-takumi.mihoyo.com/event/bbs_sign_reward/sign" -#崩坏3自动签到相关的设置 -honkai3rd_Act_id = "e202104072769" +# 崩坏3自动签到相关的设置 +honkai3rd_Act_id = "ea20211026151532" honkai3rd_Account_info_url = "https://api-takumi.mihoyo.com/binding/api/getUserGameRolesByCookie?game_biz=bh3_cn" -honkai3rd_Is_signurl = "https://api-takumi.mihoyo.com/common/euthenia/index?act_id={}®ion={}&uid={}" -honkai3rd_SignUrl = "https://api-takumi.mihoyo.com/common/euthenia/sign" \ No newline at end of file +honkai3rd_Is_signurl = "https://api-takumi.mihoyo.com/common/eutheniav2/index?act_id={}®ion={}&uid={}" +honkai3rd_SignUrl = "https://api-takumi.mihoyo.com/common/eutheniav2/sign" diff --git a/tools.py b/tools.py index b7185b7..a45e56c 100644 --- a/tools.py +++ b/tools.py @@ -8,33 +8,39 @@ import logging import hashlib import setting -#Log输出,这里提供了自定义logging输出的机会,只需要创建一个logging.ini并且写入配置文件即可自定义输出 +# Log输出,这里提供了自定义logging输出的机会,只需要创建一个logging.ini并且写入配置文件即可自定义输出 if os.path.exists(f"{config.path}/logging.ini"): + import logging.config + logging.config.fileConfig(f"{config.path}/logging.ini") + log = logging.getLogger("AutoMihoyoBBS") else: logging.basicConfig( level=logging.INFO, format='%(asctime)s %(levelname)s %(message)s', datefmt='%Y-%m-%dT%H:%M:%S') + log = logger = logging -log = logger = logging -#md5计算 -def MD5(text:str) -> str: +# md5计算 +def MD5(text: str) -> str: md5 = hashlib.md5() md5.update(text.encode()) return md5.hexdigest() -#随机文本 -def Random_text(num:int) -> str: - return''.join(random.sample(string.ascii_lowercase + string.digits, num)) -#时间戳 +# 随机文本 +def Random_text(num: int) -> str: + return ''.join(random.sample(string.ascii_lowercase + string.digits, num)) + + +# 时间戳 def Timestamp() -> int: return int(time.time()) -#获取请求Header里的DS 当web为true则生成网页端的DS -def Get_ds(web:bool, web_old:bool) -> str: + +# 获取请求Header里的DS 当web为true则生成网页端的DS +def Get_ds(web: bool, web_old: bool) -> str: if web: if web_old: n = setting.mihoyobbs_Salt_web_old @@ -47,31 +53,35 @@ def Get_ds(web:bool, web_old:bool) -> str: c = MD5("salt=" + n + "&t=" + i + "&r=" + r) return f"{i},{r},{c}" -#生成一个device id + +# 生成一个device id def Get_deviceid() -> str: return str(uuid.uuid3(uuid.NAMESPACE_URL, config.mihoyobbs_Cookies)).replace( - '-', '').upper() + '-', '').upper() -#获取签到的奖励名称 -def Get_item(raw_data:dict) ->str: + +# 获取签到的奖励名称 +def Get_item(raw_data: dict) -> str: temp_Name = raw_data["name"] temp_Cnt = raw_data["cnt"] return f"{temp_Name}x{temp_Cnt}" -#获取明天早晨0点的时间戳 + +# 获取明天早晨0点的时间戳 def Nextday() -> int: now_time = int(time.time()) nextday_time = now_time - now_time % 86400 + time.timezone + 86400 return nextday_time -#获取Openssl版本 -def Get_openssl_Version() ->int: + +# 获取Openssl版本 +def Get_openssl_Version() -> int: try: import ssl except ImportError: log.error("Openssl Lib Error !!") - #return -99 - #建议直接更新Python的版本,有特殊情况请提交issues + # return -99 + # 建议直接更新Python的版本,有特殊情况请提交issues exit(-1) temp_List = ssl.OPENSSL_VERSION_INFO - return int(f"{str(temp_List[0])}{str(temp_List[1])}{str(temp_List[2])}") \ No newline at end of file + return int(f"{str(temp_List[0])}{str(temp_List[1])}{str(temp_List[2])}")