From fa6f0ce9df1f851f36856df46a30ba49351076f1 Mon Sep 17 00:00:00 2001 From: milk <53408947@qq.com> Date: Tue, 28 Oct 2025 15:37:20 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=84=9A=E6=9C=AC=E9=94=99?= =?UTF-8?q?=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Module/FlaskService.py | 12 +++++++++++ script/ScriptManager.py | 48 ++++------------------------------------- 2 files changed, 16 insertions(+), 44 deletions(-) diff --git a/Module/FlaskService.py b/Module/FlaskService.py index 7e74809..d1fac88 100644 --- a/Module/FlaskService.py +++ b/Module/FlaskService.py @@ -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) \ No newline at end of file diff --git a/script/ScriptManager.py b/script/ScriptManager.py index a90c024..82dbf17 100644 --- a/script/ScriptManager.py +++ b/script/ScriptManager.py @@ -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,10 +503,10 @@ class ScriptManager(): LogManager.method_info(f"主播的数据,用户名:{aid},国家:{anchorCountry}", "关注打招呼", udid) - if self.check_stop(event, "before-search"): # [ADD] + if self.interruptible_sleep(event, 1): return - # 点击搜索按钮 + # 点击搜索按钮 ControlUtils.clickSearch(session) LogManager.method_info(f"点击搜索按钮", "关注打招呼", udid) @@ -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