diff --git a/.idea/git_toolbox_blame.xml b/.idea/git_toolbox_blame.xml new file mode 100644 index 0000000..7dc1249 --- /dev/null +++ b/.idea/git_toolbox_blame.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/.idea/git_toolbox_prj.xml b/.idea/git_toolbox_prj.xml new file mode 100644 index 0000000..02b915b --- /dev/null +++ b/.idea/git_toolbox_prj.xml @@ -0,0 +1,15 @@ + + + + + + + \ No newline at end of file diff --git a/Entity/Variables.py b/Entity/Variables.py index 9afaac3..9ce4fd7 100644 --- a/Entity/Variables.py +++ b/Entity/Variables.py @@ -3,7 +3,7 @@ from typing import Dict, Any from Entity.AnchorModel import AnchorModel -tikTokApp = "com.zhiliaoapp.musically" +tikTokApp = "com.ss.iphone.ugc.Ame" # wda apple bundle id WdaAppBundleId = "com.vv.wda.xctrunner" # 全局主播列表 diff --git a/Flask/FlaskService.py b/Flask/FlaskService.py index 4b9b8ff..1be4e6c 100644 --- a/Flask/FlaskService.py +++ b/Flask/FlaskService.py @@ -25,6 +25,7 @@ CORS(app) listData = [] dataQueue = Queue() + def start_socket_listener(): port = int(os.getenv('FLASK_COMM_PORT', 0)) print(f"Received port from environment: {port}") @@ -66,10 +67,12 @@ def start_socket_listener(): except Exception as e: print(f"[ERROR] ❌ Socket服务启动失败: {e}") + # 在独立线程中启动Socket服务 listener_thread = threading.Thread(target=start_socket_listener, daemon=True) listener_thread.start() + @app.route('/passToken', methods=['POST']) def passToken(): data = request.get_json() @@ -78,9 +81,9 @@ def passToken(): Requester.requestComments() - return ResultData(data="").toJson() + # 获取设备列表 @app.route('/deviceList', methods=['GET']) def deviceList(): @@ -95,6 +98,7 @@ def deviceList(): listData.remove(data) return ResultData(data=listData).toJson() + # 获取设备应用列表 @app.route('/deviceAppList', methods=['POST']) def deviceAppList(): @@ -103,6 +107,7 @@ def deviceAppList(): apps = ControlUtils.getDeviceAppList(udid) return ResultData(data=apps).toJson() + # 打开指定app @app.route('/launchApp', methods=['POST']) def launchApp(): @@ -113,6 +118,7 @@ def launchApp(): t.app_start(bundleId) return ResultData(data="").toJson() + # 回到首页 @app.route('/toHome', methods=['POST']) def toHome(): @@ -122,6 +128,7 @@ def toHome(): client.home() return ResultData(data="").toJson() + # 点击事件 @app.route('/tapAction', methods=['POST']) def tapAction(): @@ -137,6 +144,7 @@ def tapAction(): session.tap(x, y) return ResultData(data="").toJson() + # 拖拽事件 @app.route('/swipeAction', methods=['POST']) def swipeAction(): @@ -157,6 +165,7 @@ def swipeAction(): session.swipe_right() return ResultData(data="").toJson() + # 长按事件 @app.route('/longPressAction', methods=['POST']) def longPressAction(): @@ -167,9 +176,10 @@ def longPressAction(): client = wda.USBClient(udid) session = client.session() session.appium_settings({"snapshotMaxDepth": 5}) - session.tap_hold(x,y,1.0) + session.tap_hold(x, y, 1.0) return ResultData(data="").toJson() + # 养号 @app.route('/growAccount', methods=['POST']) def growAccount(): @@ -179,12 +189,13 @@ def growAccount(): manager = ScriptManager() event = threading.Event() # 启动脚本 - thread = threading.Thread(target=manager.growAccount, args=(udid,event)) + thread = threading.Thread(target=manager.growAccount, args=(udid, event)) thread.start() # 添加到线程管理 ThreadManager.add(udid, thread, event) return ResultData(data="").toJson() + # 观看直播 @app.route("/watchLiveForGrowth", methods=['POST']) def watchLiveForGrowth(): @@ -198,6 +209,7 @@ def watchLiveForGrowth(): ThreadManager.add(udid, thread, event) return ResultData(data="").toJson() + # 停止脚本 @app.route("/stopScript", methods=['POST']) def stopScript(): @@ -230,6 +242,7 @@ def passAnchorData(): ThreadManager.add(udid, thread, event) return ResultData(data="").toJson() + # 添加临时数据 @app.route("/addTempAnchorData", methods=['POST']) def addTempAnchorData(): @@ -237,6 +250,7 @@ def addTempAnchorData(): addModelToAnchorList(data) return ResultData(data="").toJson() + # 获取当前屏幕上的聊天信息 @app.route("/getChatTextInfo", methods=['POST']) def getChatTextInfo(): @@ -248,5 +262,20 @@ def getChatTextInfo(): result = AiUtils.extract_messages_from_xml(xml) return ResultData(data=result).toJson() + +# 监控消息 +@app.route("/replyMessages", methods=['POST']) +def monitorMessages(): + body = request.get_json() + udid = body.get("udid") + manager = ScriptManager() + event = threading.Event() + thread = threading.Thread(target=manager.replyMessages, args=(udid, event)) + thread.start() + # 添加到线程管理 + ThreadManager.add(udid, thread, event) + return ResultData(data="").toJson() + + if __name__ == '__main__': app.run("0.0.0.0", port=5000, debug=True, use_reloader=False) diff --git a/resources/bgv.png b/resources/bgv.png deleted file mode 100644 index abbcebc..0000000 Binary files a/resources/bgv.png and /dev/null differ diff --git a/resources/eca000fcb6f55d7ed9b4c524055214c26a7de7aa/bgv.png b/resources/eca000fcb6f55d7ed9b4c524055214c26a7de7aa/bgv.png deleted file mode 100644 index 98ed838..0000000 Binary files a/resources/eca000fcb6f55d7ed9b4c524055214c26a7de7aa/bgv.png and /dev/null differ diff --git a/screenshot.png b/screenshot.png deleted file mode 100644 index 92687f3..0000000 Binary files a/screenshot.png and /dev/null differ diff --git a/script/ScriptManager.py b/script/ScriptManager.py index e62e01f..75b8e5a 100644 --- a/script/ScriptManager.py +++ b/script/ScriptManager.py @@ -14,7 +14,6 @@ from Utils.Requester import Requester # 脚本管理类 class ScriptManager(): - # 单利对象 _instance = None # 类变量,用于存储单例实例 @@ -103,7 +102,6 @@ class ScriptManager(): print(f"发生异常:{e}") client.swipe_up() - # 观看直播 def watchLiveForGrowth(self, udid, event): client = wda.USBClient(udid) @@ -178,8 +176,6 @@ class ScriptManager(): time.sleep(2) session = client.session() - - # 关注打招呼以及回复主播消息 def greetNewFollowers(self, udid, needReply, event): client = wda.USBClient(udid) @@ -285,7 +281,7 @@ class ScriptManager(): # 如果打开视频失败。说明该主播没有视频 if cellClickResult == True: # 观看主播视频 - LogManager.info("去查看主播视频",udid) + LogManager.info("去查看主播视频", udid) viewAnchorVideo() time.sleep(3) LogManager.info("视频看完了,重置试图查询深度", udid) @@ -372,18 +368,20 @@ class ScriptManager(): # 点击搜索按钮 ControlUtils.clickSearch(session) - # 检查未读消息并回复 - def monitorMessages(self, session, udid): - + def replyMessages(self, udid, event): + client = wda.USBClient(udid) + session = client.session() ControlUtils.closeTikTok(session, udid) time.sleep(2) - - ControlUtils.closeTikTok(session, udid) + ControlUtils.openTikTok(session, udid) time.sleep(3) + while event.is_set: + self.monitorMessages(session, udid) + # 检查未读消息并回复 + def monitorMessages(self, session, udid): session.appium_settings({"snapshotMaxDepth": 7}) el = session(xpath='//XCUIElementTypeButton[@name="a11y_vo_inbox"]') - # 如果收件箱有消息 则进行点击 if el.exists: m = re.search(r'(\d+)', el.label) # 抓到的第一个数字串 @@ -531,15 +529,12 @@ class ScriptManager(): print("当前屏幕没有找到 用户 未读徽标数字") badge_text = None - def test(self, udid): client = wda.USBClient(udid) session = client.session() session.appium_settings({"snapshotMaxDepth": 10}) print(client.source()) - # manager = ScriptManager() -# manager.test("eca000fcb6f55d7ed9b4c524055214c26a7de7aa") -# manager.growAccount("eca000fcb6f55d7ed9b4c524055214c26a7de7aa") - +# manager.test("2335890f77fb51322361bd46b85f7fd1311aed53") +# manager.growAccount("2335890f77fb51322361bd46b85f7fd1311aed53")