mirror of
https://github.com/TDSCDMAA/AutoMihoyoBBS.git
synced 2026-06-05 11:58:48 +08:00
小改动,以及初步的多账户支持
Readme.md
This commit is contained in:
parent
ba6d71b8ad
commit
3288717e5d
@ -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"] = ""
|
||||
|
||||
16
genshin.py
16
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()
|
||||
|
||||
22
mihoyobbs.py
22
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]))
|
||||
tools.log.info("分享:{} 成功".format(self.postsList[0][1]))
|
||||
time.sleep(random.randint(2, 6))
|
||||
3
tools.py
3
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())
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user