修复脚本错误
This commit is contained in:
@@ -761,6 +761,18 @@ def getAiConfig():
|
||||
data = IOSAIStorage.load("aiConfig.json")
|
||||
return ResultData(data=data).toJson()
|
||||
|
||||
# 重新开启tiktok
|
||||
@app.route("/restartTikTok", methods=['POST'])
|
||||
def restartTikTok():
|
||||
json = request.get_json()
|
||||
udid = json.get("udid")
|
||||
client = wda.USBClient(udid, wdaFunctionPort)
|
||||
session = client.session()
|
||||
ControlUtils.closeTikTok(session, udid)
|
||||
time.sleep(1)
|
||||
ControlUtils.openTikTok(session, udid)
|
||||
return ResultData(data="").toJson()
|
||||
|
||||
if __name__ == '__main__':
|
||||
# 注意:这里建议 debug=False,避免未来有人改成 use_reloader=True 导致多进程
|
||||
app.run("0.0.0.0", port=5000, debug=False, use_reloader=False, threaded=True)
|
||||
@@ -49,29 +49,6 @@ class ScriptManager():
|
||||
|
||||
self.initialized = True # 标记已初始化
|
||||
|
||||
# 放在类里或公共工具模块里均可
|
||||
def interruptible_wait(self,event: threading.Event, total: float, step: float = 0.2) -> bool:
|
||||
"""
|
||||
等待 total 秒,但每 step 秒检查一次停止信号。
|
||||
若在等待期间 event 被置位,立刻返回 True;否则到点返回 False。
|
||||
"""
|
||||
deadline = time.time() + total
|
||||
while time.time() < deadline:
|
||||
if event.is_set():
|
||||
return True
|
||||
event.wait(timeout=min(step, max(0, deadline - time.time())))
|
||||
return event.is_set()
|
||||
|
||||
def interruptible_sleep(self,event: threading.Event, seconds: float, step: float = 0.2) -> bool:
|
||||
"""语义同上;返回 True 表示期间接到停止信号。"""
|
||||
return self.interruptible_wait(event, seconds, step)
|
||||
|
||||
def check_stop(self,event: threading.Event, tag: str = ""):
|
||||
"""在关键点快速失败,保持调用栈整洁(不改变业务路径,只是早退出)。"""
|
||||
if event.is_set():
|
||||
raise RuntimeError(f"stop-requested:{tag}")
|
||||
|
||||
|
||||
# ========= 评论逻辑 =========
|
||||
def comment_flow(self, filePath, session, udid, recomend_cx, recomend_cy):
|
||||
"""评论一条龙:点评论框->输入->发送->返回"""
|
||||
@@ -448,11 +425,9 @@ class ScriptManager():
|
||||
break
|
||||
LogManager.method_error("greetNewFollowers 重试次数耗尽,任务终止", "关注打招呼", udid)
|
||||
|
||||
# 关注打招呼
|
||||
def greetNewFollowers(self, udid, needReply, needTranslate, isComment, event):
|
||||
|
||||
if self.check_stop(event, "init"): # [ADD]
|
||||
return
|
||||
|
||||
client = wda.USBClient(udid, ev.wdaFunctionPort)
|
||||
session = client.session()
|
||||
|
||||
@@ -463,10 +438,8 @@ class ScriptManager():
|
||||
|
||||
# 先关闭Tik Tok
|
||||
ControlUtils.closeTikTok(session, udid)
|
||||
if self.interruptible_sleep(event, 1): # [ADD] 可中断等待
|
||||
return
|
||||
|
||||
if self.check_stop(event, "after-close-app"): # [ADD]
|
||||
if self.interruptible_sleep(event, 1):
|
||||
return
|
||||
|
||||
# 重新打开Tik Tok
|
||||
@@ -485,8 +458,6 @@ class ScriptManager():
|
||||
def goBack(count):
|
||||
for i in range(count):
|
||||
LogManager.method_info(f"返回上一步", "关注打招呼", udid)
|
||||
if self.check_stop(event, f"goBack-{i + 1}/{count}"): # [ADD]
|
||||
return
|
||||
session.appium_settings({"snapshotMaxDepth": 15})
|
||||
ControlUtils.clickBack(session)
|
||||
if self.interruptible_sleep(event, 2): # [ADD]
|
||||
@@ -499,9 +470,6 @@ class ScriptManager():
|
||||
# 循环条件。1、 循环关闭 2、 数据处理完毕
|
||||
while not event.is_set():
|
||||
|
||||
if self.check_stop(event, "loop-top"): # [ADD]
|
||||
return
|
||||
|
||||
LogManager.method_info("=== 外层 while 新一轮 ===", "关注打招呼", udid)
|
||||
if event.is_set():
|
||||
break
|
||||
@@ -535,7 +503,7 @@ class ScriptManager():
|
||||
|
||||
LogManager.method_info(f"主播的数据,用户名:{aid},国家:{anchorCountry}", "关注打招呼", udid)
|
||||
|
||||
if self.check_stop(event, "before-search"): # [ADD]
|
||||
if self.interruptible_sleep(event, 1):
|
||||
return
|
||||
|
||||
# 点击搜索按钮
|
||||
@@ -593,10 +561,6 @@ class ScriptManager():
|
||||
|
||||
# 观看主播视频
|
||||
def viewAnchorVideo(workCount):
|
||||
|
||||
if self.check_stop(event, "viewVideo-enter"): # [ADD]
|
||||
return
|
||||
|
||||
print("开始查看视频,并且重新调整查询深度")
|
||||
session.appium_settings({"snapshotMaxDepth": 5})
|
||||
|
||||
@@ -614,10 +578,6 @@ class ScriptManager():
|
||||
if self.interruptible_sleep(event, 1): # [ADD]
|
||||
return
|
||||
LogManager.method_info("停止脚本成功", method="task")
|
||||
|
||||
if self.check_stop(event, "before-screenshot"): # [ADD]
|
||||
return
|
||||
|
||||
img = client.screenshot()
|
||||
if self.interruptible_sleep(event, 1): # [ADD]
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user