From 363481d819f4b1faea8d2e44153db55bbce7659b Mon Sep 17 00:00:00 2001 From: he <1565319159@qq.com> Date: Sun, 3 Nov 2024 21:37:55 +0800 Subject: [PATCH] 20241102 --- 中等任务/auto-xhs.js | 141 ++++++++++++++++++++++++++++++++ 基础任务/live (1).js | 151 +++++++++++++++++++++++++++++++++++ 基础任务/openxhs1 (1).js | 112 ++++++++++++++++++++++++++ 进阶任务/main (1).js | 62 ++++++++++++++ 4 files changed, 466 insertions(+) create mode 100644 中等任务/auto-xhs.js create mode 100644 基础任务/live (1).js create mode 100644 基础任务/openxhs1 (1).js create mode 100644 进阶任务/main (1).js diff --git a/中等任务/auto-xhs.js b/中等任务/auto-xhs.js new file mode 100644 index 0000000..ebb9b5f --- /dev/null +++ b/中等任务/auto-xhs.js @@ -0,0 +1,141 @@ +// 定义设备的宽度和高度 +const DEVICE_WIDTH = 1080; +const DEVICE_HEIGHT = 1920; + +// 定义最大处理直播间数量 +const MAX_ROOMS = 10; + +// 定义滑动函数 +function swipeToNext() { + swipe( + DEVICE_WIDTH / 2, + DEVICE_HEIGHT * 0.8, + DEVICE_WIDTH / 2, + DEVICE_HEIGHT * 0.3, + 300 + ); +} + +// 定义点赞函数 +function quickLike() { + // 双击屏幕中心位置进行点赞 + click(DEVICE_WIDTH / 2, DEVICE_HEIGHT / 2); // 第一次点击 + sleep(100); // 等待100毫秒 + click(DEVICE_WIDTH / 2, DEVICE_HEIGHT / 2); // 第二次点击 + + click(DEVICE_WIDTH / 2, DEVICE_HEIGHT / 2); // 第一次点击 + sleep(100); // 等待100毫秒 + click(DEVICE_WIDTH / 2, DEVICE_HEIGHT / 2); // 第二次点击 +} + +// 优化后的关注函数 +function quickFollow() { + let retries = 3; // 最大重试次数 + + // 首先点击左上角头像 + try { + // 根据图片信息,通过className和bounds来定位头像元素 + let avatar = className("android.widget.ImageView") + .bounds(36, 126, 144, 234) + .findOne(2000); + + if (avatar) { + avatar.click(); + sleep(1500); // 等待个人页面加载 + + // 在个人页面寻找并点击关注按钮 + let followButton = text("关注") + .className("android.widget.Button") + .findOne(2000); + + if (followButton) { + let bounds = followButton.bounds(); + click(bounds.centerX(), bounds.centerY()); + sleep(1000); // 等待关注操作完成 + + // 返回到视频页面 + back(); + sleep(800); // 等待返回动作完成 + return true; + } + } + } catch (error) { + console.error("关注过程出错:", error); + } + + return false; +} + +// 处理单个直播间的所有操作 +function handleSingleRoom() { + // 等待直播间加载 + sleep(1500); + + // 然后进行点赞 + quickLike(); + sleep(500); + toast("已点赞"); + + // 先进行关注操作 + if (quickFollow()) { + toast("已关注"); + } else { + toast("关注失败或已关注"); + } + sleep(800); + + + + sleep(500); +} + +// 主要处理函数 +function processRooms(count) { + toast("开始处理直播间"); + + // 处理指定数量的直播间 + for (let i = 0; i < count; i++) { + toast("正在处理第" + (i + 1) + "个直播间"); + + // 处理当前直播间 + handleSingleRoom(); + + // 如果不是最后一个直播间,则滑动到下一个 + if (i < count - 1) { + swipeToNext(); + sleep(2000); // 等待新直播间加载 + } + } + + toast("完成所有直播间处理"); +} + +// 主程序 +function main() { + // 设置屏幕常亮 + device.keepScreenDim(); + + try { + // 检查无障碍服务 + if (!auto.service) { + toast("请开启无障碍服务"); + auto(); + sleep(1000); + } + + // 设置运行环境 + setScreenMetrics(DEVICE_WIDTH, DEVICE_HEIGHT); + + // 开始处理直播间 + processRooms(MAX_ROOMS); + } catch (error) { + toast("发生错误: " + error); + console.error(error); + } finally { + // 关闭屏幕常亮 + device.cancelKeepingAwake(); + } +} + +// 启动主程序 +main(); \ No newline at end of file diff --git a/基础任务/live (1).js b/基础任务/live (1).js new file mode 100644 index 0000000..e14f4c5 --- /dev/null +++ b/基础任务/live (1).js @@ -0,0 +1,151 @@ +function openApp(){ + auto.waitFor(); + var appName = "com.xingin.xhs"; + app.launch(appName); + sleep(1000); + return; +} + +function openLiveList(){ + var a = indexInParent("2").findOnce(); + if (a) { + a.click(); + sleep(1000); + return; + }else { + //中止脚本 + exit(); + } +} + +function openRandomLive(){ + var b = className("android.widget.RelativeLayout").depth("22").find(); + if (b) { + var Count = b.size(); + var randomIndex = Math.floor(Math.random() * Count); + var randomElement = b.get(randomIndex); + randomElement.click(); + console.log(randomIndex); + sleep(1000); + return; + }else { + //中止脚本 + exit(); + } +} + +function inputInfo(info){ + var c = desc("评论输入框").findOne(); + if (c) { + c.click(); + input(info); + sleep(2000); + return; + }else { + //中止脚本 + exit(); + } +} + +function sendInfo(){ + var d = text("发送").findOne(); + if (d) { + d.click(); + sleep(1000); + return; + }else { + //中止脚本 + exit(); + } +} + +function openSend(){ + var e = desc("发布").findOne(); + if (e) { + e.click(); + sleep(1000); + return; + }else { + //中止脚本 + exit(); + } +} + +function openText(){ + var f = className("android.widget.FrameLayout").depth("10").indexInParent("1").findOnce(); + if (f) { + f.click(); + sleep(1000); + return; + }else { + //中止脚本 + exit(); + } +} + +function openEdit(){ + var g = className("android.view.View").depth("9").indexInParent("3").findOnce(); + if (g) { + g.click(); + sleep(1000); + return; + }else { + //中止脚本 + exit(); + } +} + +function inputText(info){ + var h = text("说说你的想法吧~").findOnce(); + if (h) { + h.click(); + h.setText(info); + sleep(1000); + return; + }else { + //中止脚本 + exit(); + } +} + +function nextText(){ + var i = desc("下一步").findOnce(); + if (i) { + i.click(); + sleep(2000); + return; + }else { + //中止脚本 + exit(); + } +} + +function sendText(){ + var i = text("发布笔记").findOnce(); + if (i) { + i.click(); + sleep(2000); + return; + }else { + //中止脚本 + exit(); + } +} + +function main(){ + openApp(); + // openLiveList(); + // openRandomLive(); + // inputInfo("1"); + // sendInfo(); + openSend(); + openText(); + openEdit(); + inputText("111"); + nextText(); + nextText(); + sendText(); + exit(); +} + +main(); diff --git a/基础任务/openxhs1 (1).js b/基础任务/openxhs1 (1).js new file mode 100644 index 0000000..a07c9f0 --- /dev/null +++ b/基础任务/openxhs1 (1).js @@ -0,0 +1,112 @@ +// 检查并申请无障碍权限 +function checkAndRequestAccessibility() { + if (!auto.service) { + toast("请开启无障碍服务"); + auto(); // 自动引导至无障碍设置界面 + } +} + +// 打开小红书APP +function openXiaoHongShuApp() { + toast("正在打开小红书..."); + app.launch("com.xingin.xhs"); // 小红书的包名 + sleep(2000); // 等待APP完全加载 +} + +// 检查是否成功进入小红书 +function checkIfXiaoHongShuOpened() { + if (currentPackage() === "com.xingin.xhs") { + toast("小红书已打开"); + sleep(2000); // 等待首页加载 + return true; + } else { + toast("未能成功打开小红书"); + return false; + } +} + +// 查找并点击直播入口 +function enterLiveSection() { + if (indexInParent("2").exists()) { + toast("找到直播入口"); + let liveButton = indexInParent("2").findOne(); + if (liveButton) { + liveButton.click(); + toast("已点击进入直播模块"); + sleep(2000); + return true; + } else { + toast("未能找到直播按钮"); + } + } else { + toast("未找到直播入口的属性"); + } + return false; +} + +// 随机进入一个直播间 +function enterRandomLiveRoom() { + var liveRooms = className("android.widget.RelativeLayout").depth("22").find(); + if (liveRooms && liveRooms.size() > 0) { + var randomIndex = Math.floor(Math.random() * liveRooms.size()); + var randomElement = liveRooms.get(randomIndex); + randomElement.click(); + console.log(randomIndex); + console.log("有直播"); + sleep(2000); + return true; + } else { + toast("无直播间"); + console.log("无直播间"); + return false; + } +} + +// 自动发表评论 +function postComment() { + // 查找评论输入框 + let commentInput = desc("评论输入框").findOne(); // 根据描述属性找到评论输入框 + if (commentInput) { + commentInput.click(); // 点击评论输入框 + sleep(1000); // 等待输入框获得焦点 + + // 输入评论内容 + let commentText = "1"; + input(commentText); + toast("已输入评论内容:" + commentText); + sleep(1000); + + // 查找并点击发送按钮 + let sendButton = text("发送").findOne(); // 根据文本属性找到发送按钮 + if (sendButton) { + sendButton.click(); // 点击发送按钮 + toast("已发送评论"); + } else { + toast("未找到发送按钮"); + } + } else { + toast("未找到评论输入框"); + } +} + +// 主函数 +function main() { + checkAndRequestAccessibility(); + openXiaoHongShuApp(); + if (checkIfXiaoHongShuOpened()) { + if (enterLiveSection()) { + if (enterRandomLiveRoom()) { + postComment(); + } else { + exit(); + } + } else { + exit(); + } + } else { + exit(); + } +} + +// 执行主函数 +main(); diff --git a/进阶任务/main (1).js b/进阶任务/main (1).js new file mode 100644 index 0000000..7a6e33d --- /dev/null +++ b/进阶任务/main (1).js @@ -0,0 +1,62 @@ +// 确保已经打开Auto.js无障碍服务 + +auto.waitFor(); +let packageName = app.getPackageName("小红书") || "com.xingin.xhs"; +if (packageName) { + toast("启动小红书..."); + console.log("启动小红书..."); + app.launch(packageName); +} else { + toast("无法找到小红书应用,请检查应用名称或包名!"); + console.error("无法找到小红书应用,请检查应用名称或包名!"); +} + +// 定义评论内容 +let staticComments = [ + "今天的直播间好温馨!", + "主播讲解得真棒,学到好多知识!", + "真喜欢这里的氛围,加油哦~", + "支持支持!主播辛苦了!", + "今天的活动福利真不错!", + "好喜欢今天的推荐内容!", + "每次来都收获满满~", + "希望主播每天都能这样开心!", + "谢谢主播的用心讲解!" +]; + +// 5.2 实现动态评论 +function postDynamicComments() { + console.log("进入动态评论函数"); + let inputText = prompt("请输入要发送的文本:", "这是默认文本"); + + let commentBox = descMatches('评论输入框').findOne().click(); // 替换为小红书的实际评论输入框ID + sleep(1000); + + let inputbox = className("android.widget.EditText").findOne(); + inputbox.setText(inputText); + sleep(1000); + + let sendBox = className("android.widget.Button").text("发送").findOne().click(); + sleep(1000) +} + + +function postStaticComments() { + for (let i = 0; i < staticComments.length; i++) { + // 点击评论输入框 + let commentBox = descMatches('评论输入框').findOne().click(); // 替换为小红书的实际评论输入框ID + sleep(1000); + let inputbox = className("android.widget.EditText").findOne(); + console.log(staticComments[i]) + inputbox.setText(staticComments[i]); + // 点击发送按钮 + sleep(1000); + let sendBox = className("android.widget.Button").text("发送").findOne().click(); + + sleep(3000) + } +} + +// postStaticComments() + +postDynamicComments(); \ No newline at end of file