20250904-初步功能已完成

This commit is contained in:
2025-09-12 21:36:47 +08:00
parent f450226d2d
commit aa2f291f49
9 changed files with 284 additions and 64 deletions

View File

@@ -145,10 +145,21 @@ class ScriptManager():
LogManager.method_error(f"刷视频过程出现错误,重试", "养号", udid)
raise e # 抛出给上层,触发重生机制
except wda.WDARequestError as e:
print(e)
LogManager.method_info("WDA 内部崩溃nil 插入),准备重启 WDA", "养号", udid)
AiUtils.kill_wda(udid, ev.WdaAppBundleId)
time.sleep(1)
AiUtils.launch_wda(udid, ev.WdaAppBundleId)
except Exception as e:
LogManager.method_error(f"[{udid}] 养号出现异常,将重启流程: {e}", "养号", udid)
retries += 1
time.sleep(3) # 等待后重生
LogManager.method_error(f"greetNewFollowers 出现最终异常: {e},准备第 {retries} 次重试", "养号", udid)
time.sleep(3)
if retries:
LogManager.method_info("WDA 连接失败,准备重启 WDA", "养号", udid)
AiUtils.kill_wda(udid, ev.WdaAppBundleId)
time.sleep(1)
AiUtils.launch_wda(udid, ev.WdaAppBundleId)
# 观看直播
def watchLiveForGrowth(self, udid, event, max_retries=None):
@@ -285,11 +296,21 @@ class ScriptManager():
# break
self.greetNewFollowers(udid, needReply, event)
except wda.WDARequestError as e:
LogManager.method_info("WDA 内部崩溃nil 插入),准备重启 WDA", "关注打招呼", udid)
AiUtils.kill_wda(udid, ev.WdaAppBundleId)
time.sleep(1)
AiUtils.launch_wda(udid, ev.WdaAppBundleId)
except Exception as e:
retries += 1
LogManager.method_error(f"greetNewFollowers 出现异常: {e},准备第 {retries} 次重试", "关注打招呼", udid)
LogManager.method_error(f"greetNewFollowers 出现最终异常: {e},准备第 {retries} 次重试", "关注打招呼",
udid)
time.sleep(3)
if retries % 5 == 0:
LogManager.method_info("WDA 连接失败,准备重启 WDA", "关注打招呼", udid)
AiUtils.kill_wda(udid, ev.WdaAppBundleId)
time.sleep(1)
AiUtils.launch_wda(udid, ev.WdaAppBundleId)
LogManager.method_error("greetNewFollowers 重试次数耗尽,任务终止", "关注打招呼", udid)
# 关注打招呼以及回复主播消息
@@ -319,6 +340,7 @@ class ScriptManager():
# 返回上一步
def goBack(count):
for i in range(count):
session.appium_settings({"snapshotMaxDepth": 15})
ControlUtils.clickBack(session)
time.sleep(2)
@@ -567,19 +589,25 @@ class ScriptManager():
time.sleep(2)
ControlUtils.openTikTok(session, udid)
time.sleep(3)
retries = 0
while not event.is_set():
try:
# 调用检测消息的方法
self.monitorMessages(session, udid)
except wda.WDARequestError as e:
LogManager.method_info("WDA 内部崩溃nil 插入),准备重启 WDA", "养号", udid)
AiUtils.kill_wda(udid, ev.WdaAppBundleId)
time.sleep(1)
AiUtils.launch_wda(udid, ev.WdaAppBundleId)
except Exception as e:
LogManager.method_error(f"监控消息 出现异常: {e},重新启动监控直播", "检测消息", udid)
# 出现异常时,稍等再重启 TikTok 并重试
ControlUtils.closeTikTok(session, udid)
time.sleep(2)
ControlUtils.openTikTok(session, udid)
retries += 1
LogManager.method_error(f"greetNewFollowers 出现最终异常: {e},准备第 {retries} 次重试", "养号", udid)
time.sleep(3)
continue # 重新进入 while 循环,调用 monitorMessages
if retries % 5 == 0:
LogManager.method_info("WDA 连接失败,准备重启 WDA", "养号", udid)
AiUtils.kill_wda(udid, ev.WdaAppBundleId)
time.sleep(1)
AiUtils.launch_wda(udid, ev.WdaAppBundleId)
# 检查未读消息并回复
def monitorMessages(self, session, udid):
@@ -725,6 +753,13 @@ class ScriptManager():
else:
last_msg_text = random.choice(text_list)
# 111111
if AiUtils.contains_chinese(last_msg_text):
LogManager.method_info(f"需要翻译:{last_msg_text}, 即将进行翻译", "检测消息", udid)
last_msg_text = Requester.translation(last_msg_text)
LogManager.method_info(f"翻译成功:{last_msg_text}, ", "检测消息", udid)
# 向ai发送信息
# 获取主播的名称
@@ -732,6 +767,10 @@ class ScriptManager():
LogManager.method_info(f"获取主播的名称:{anchor_name}", "检测消息", udid)
LogManager.method_info(f"获取主播最后发送的消息 进行翻译:{last_msg}", "检测消息", udid)
last_msg = Requester.translation(last_msg, "中国")
LogManager.method_info(f"翻译后的内容:{last_msg}", "检测消息", udid)
# 找到输入框
last_data = [{
"sender": anchor_name,
@@ -748,12 +787,14 @@ class ScriptManager():
if anchor_name not in anchorWithSession:
# 如果是第一次发消息(没有sessionId的情况)
response = Requester.chatToAi({"query": last_msg_text})
aiResult = response['result']
sessionId = response['session_id']
aiResult, sessionId = Requester.chatToAi({"query": last_msg_text, "user": "1"})
# aiResult = response['result']
# sessionId = response['session_id']
anchorWithSession[anchor_name] = sessionId
# 找到输入框输入ai返回出来的消息
# 123456
if sel.exists:
sel.click() # 聚焦
time.sleep(1)
@@ -766,8 +807,12 @@ class ScriptManager():
else:
# 如果不是第一次发消息证明存储的有sessionId
sessionId = anchorWithSession[anchor_name]
response = Requester.chatToAi({"query": last_msg_text, "conversation_id": sessionId})
aiResult = response['result']
# TODO: user后续添加暂时写死
aiResult, sessionId = Requester.chatToAi(
{"query": last_msg_text, "conversation_id": sessionId, "user": "1"})
# aiResult = response['result']
if sel.exists:
sel.click() # 聚焦
time.sleep(1)