From 3288717e5df8241aa296fefc0e1c68b0f08d3c6d Mon Sep 17 00:00:00 2001 From: Womsxd <45663319+Womsxd@users.noreply.github.com> Date: Tue, 25 May 2021 17:45:35 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=8F=E6=94=B9=E5=8A=A8=EF=BC=8C=E4=BB=A5?= =?UTF-8?q?=E5=8F=8A=E5=88=9D=E6=AD=A5=E7=9A=84=E5=A4=9A=E8=B4=A6=E6=88=B7?= =?UTF-8?q?=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Readme.md --- README.md | Bin 722 -> 774 bytes config.py | 7 +++--- ...onfig.example.json => config.json.example} | 0 genshin.py | 16 +++++++++++-- mihoyobbs.py | 22 +++++++++++------- tools.py | 3 ++- 6 files changed, 34 insertions(+), 14 deletions(-) rename config/{config.example.json => config.json.example} (100%) diff --git a/README.md b/README.md index 14a6d91718623afcccbb60ba4ef2b8386a1d8968..bde6ce47a18a129efc2635e34da0ce15d9583e6a 100644 GIT binary patch delta 48 zcmcb_+Qv4)LoS3NpTPx)c^SCC*pPwIKq^wB)I3Q)l`(muRm;R(F`I=L4=@4%`eX}! delta 17 ZcmZo;yTm%dV`53!#CH*!y%_f}0sun62T1?` diff --git a/config.py b/config.py index f552db2..0c92794 100644 --- a/config.py +++ b/config.py @@ -31,9 +31,10 @@ mihoyobbs = { genshin_AutoSingin = True path = os.path.dirname(os.path.realpath(__file__)) + "/config" +config_Path = f"{path}/config.json" def Load_config(): - with open(f"{path}/config.json", "r") as f: + with open(config_Path, "r") as f: data = json.load(f) global mihoyobbs_Login_ticket global mihoyobbs_Stuid @@ -57,7 +58,7 @@ def Load_config(): tools.log.info("Config加载完毕") def Save_config(): - with open(f"{path}/config.json","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 @@ -71,7 +72,7 @@ def Save_config(): tools.log.info("Config保存完毕") def Clear_cookies(): - with open(f"{path}/config.json","r+") as f: + with open(config_Path,"r+") as f: data = json.load(f) data["mihoyobbs_Login_ticket"] = "" data["mihoyobbs_Stuid"] = "" diff --git a/config/config.example.json b/config/config.json.example similarity index 100% rename from config/config.example.json rename to config/config.json.example diff --git a/genshin.py b/genshin.py index c776af3..a40c7a6 100644 --- a/genshin.py +++ b/genshin.py @@ -1,6 +1,8 @@ +import time import httpx import tools import config +import random import setting class genshin: @@ -17,12 +19,14 @@ class genshin: '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_driveid() + 'x-rpc-device_id': tools.Get_deviceid() } self.acc_List = self.Getacc_list() self.sing_Give = self.Get_singgive() + #获取绑定的账号列表 def Getacc_list(self) -> list: + tools.log.info("正在获取米哈游账号绑定的游戏账号列表...") temp_List = [] req = httpx.get(setting.genshin_Accinfo_url, headers=self.headers) data = req.json() @@ -32,8 +36,10 @@ class genshin: for i in data["data"]["list"]: temp_List.append([i["nickname"], i["game_uid"], i["region"]]) return (temp_List) + #获取已经签到奖励列表 def Get_singgive(self) -> list: + tools.log.info("正在获取签到奖励列表...") req = httpx.get(setting.genshin_Singlisturl.format(setting.genshin_Act_id),headers=self.headers) data = req.json() if (data["retcode"] != 0): @@ -41,6 +47,7 @@ class genshin: print (req.text) exit() return (data["data"]["awards"]) + #判断签到 def Is_sing(self, region:str, uid:str): req = httpx.get(setting.genshin_Is_singurl.format(setting.genshin_Act_id, region, uid), headers=self.headers) @@ -50,14 +57,18 @@ class genshin: print (req.text) exit() return (data["data"]) - #签到 + + #获取签到的奖励名称 def Get_item(self, raw_data:dict) ->str: temp_Name = raw_data["name"] temp_Cnt = raw_data["cnt"] return (f"{temp_Name}x{temp_Cnt}") + #签到 def Sing_acc(self): for i in self.acc_List: + tools.log.info(f"正在为旅行者{i[0]}进行签到...") + time.sleep(random.randint(2, 6)) is_data = self.Is_sing(region = i[2], uid = i[1]) if (is_data["first_bind"] == True): tools.log.warn(f"旅行者{i[0]}是第一次绑定米游社,请先手动签到一次") @@ -66,6 +77,7 @@ class genshin: if (is_data["is_sign"] == True): tools.log.info(f"旅行者{i[0]}今天已经签到过了~\r\n今天获得的奖励是{self.Get_item(self.sing_Give[sing_Days])}") else: + time.sleep(random.randint(2, 6)) req = httpx.post(url=setting.genshin_Singurl, headers=self.headers, json={'act_id': setting.genshin_Act_id, 'region': i[2], 'uid': i[1]}) data = req.json() diff --git a/mihoyobbs.py b/mihoyobbs.py index 6a4590e..7bf9084 100644 --- a/mihoyobbs.py +++ b/mihoyobbs.py @@ -5,7 +5,6 @@ import config import random import setting - class mihoyobbs: def __init__(self): self.headers = { @@ -15,7 +14,7 @@ class mihoyobbs: "x-rpc-app_version": setting.mihoyobbs_Version, "x-rpc-sys_version": "6.0.1", "x-rpc-channel": "mihoyo", - "x-rpc-device_id": tools.Get_driveid(), + "x-rpc-device_id": tools.Get_deviceid(), "x-rpc-device_name": tools.Random_text(random.randint(1, 10)), "x-rpc-device_model": "Mi 10", "Referer": "https://app.mihoyo.com", @@ -23,6 +22,7 @@ class mihoyobbs: "User-Agent": "okhttp/4.8.0" } self.postsList = self.Getlist() + #进行签到操作 def Singin(self): tools.log.info("正在签到......") @@ -36,6 +36,7 @@ class mihoyobbs: tools.log.info("签到失败,你的cookie可能已过期,请重新设置cookie。") config.Clear_cookies() exit() + #获取要帖子列表 def Getlist(self) -> list: temp_List = [] @@ -43,11 +44,12 @@ class mihoyobbs: for i in setting.mihoyobbs_List_Use: req = httpx.get(url=setting.bbs_Listurl.format(i["forumId"]), headers=self.headers) data = req.json() - for n in range(10): + for n in range(5): temp_List.append([data["data"]["list"][n]["post"]["post_id"], data["data"]["list"][n]["post"]["subject"]]) tools.log.info("已获取{}个帖子".format(len(temp_List))) - time.sleep(random.randrange(5)) + time.sleep(random.randint(2, 6)) return (temp_List) + #看帖子 def Readposts(self): tools.log.info("正在看帖......") @@ -56,7 +58,8 @@ class mihoyobbs: data = req.json() if data["message"] == "OK": tools.log.info("看帖:{} 成功".format(self.postsList[i][1])) - time.sleep(random.randrange(5)) + time.sleep(random.randint(2, 6)) + #点赞 def Likeposts(self): tools.log.info("正在点赞......") @@ -68,16 +71,19 @@ class mihoyobbs: tools.log.info("点赞:{} 成功".format(self.postsList[i][1])) #判断取消点赞是否打开 if (config.mihoyobbs["bbs_Unlike"] == True): - time.sleep(random.randrange(5)) + time.sleep(random.randint(2, 6)) req = httpx.post(url=setting.bbs_Likeurl, headers=self.headers, 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.randrange(5)) + time.sleep(random.randint(2, 6)) + + #分享操作 def Share(self): tools.log.info("正在分享......") req = httpx.get(url=setting.bbs_Shareurl.format(self.postsList[0][0]), headers=self.headers) data = req.json() if data["message"] == "OK": - tools.log.info("分享:{} 成功".format(self.postsList[0][1])) \ No newline at end of file + tools.log.info("分享:{} 成功".format(self.postsList[0][1])) + time.sleep(random.randint(2, 6)) \ No newline at end of file diff --git a/tools.py b/tools.py index f31ed17..f8ef0b3 100644 --- a/tools.py +++ b/tools.py @@ -43,7 +43,8 @@ def Get_ds(web:bool, web_old:bool) -> str: c = MD5("salt=" + n + "&t=" + i + "&r=" + r) return (i + "," + r + "," + c) -def Get_driveid() -> str: +#生成一个device id +def Get_deviceid() -> str: return (str(uuid.uuid3(uuid.NAMESPACE_URL, config.mihoyobbs_Cookies)).replace( '-', '').upper())