导图社区 红果业务
这是一篇关于红果业务的思维导图,展示了一段详细的自动化脚本任务计划,具体用于执行某些手机应用操作,如签到和任务执行,并记录相关时间和状态。
编辑于2025-03-19 12:33:40红果业务
hgapp.start:
1:参数 -> 执行计划 回调函数
2:初始化
1:设置脚本停止标志:stopFlag = false
2:启动App
1:启动应用程序 app.launchApp("红果视频");
2:启动App时候,等待 30 秒
3:休眠随机 -> 1秒至3秒
3:获取手机截屏权限并自动立即开始
1:requestScreenCapture() -> 获取截图权限
4:签到
1:参数
1:执行计划
2:回调函数
3:isSignKey = hongguoSign_ + 执行计划:appId + 执行计划:memberId(用户ID) + 年-月-日
2:直到任务中心点击
参数 -> 1:step:当前步骤 2:app
1:flag:用于标记 -> 是否成功找到“福利”页面。
2:countNum:用于计数 -> 控制滑动操作的次数。
3:如果,step:当前步骤 是1
1:使用 OCR 技术查找屏幕上的“福利”文本,返回坐标信息。isPerfectFindOCR
1:休眠随机1秒至3秒
2:umig开源ocr识别 umiocrFindData(已经解析过)
3:umi开源ocr精确识别坐标 umiocrPerfectMatchWord/umiocrPerfectMatch(已经解析过)
4:返回,"文本" 的位置坐标信息 bounds
2:返回一个数组 bounds,表示“福利”文本的位置(可能是左上角的坐标)。
3:如果,找到“文本”的坐标信息,坐标不为空
1:点击按钮,“文本”的坐标
1:蓝牙点击接口地址:http://127.0.0.1:9123/click?x=""&y=""
2:点击的 x 坐标。 2:点击的 y 坐标。
2:点击另一个固定位置(可能是确认按钮)
1:x = 666.5, y = 2176.5
3:休眠随机1秒至3秒
4:找图,找到并点击:clickAreaForFindImage
1:参数处理
0:img_path_array:可以是数组或字符串,表示要查找的图片路径。
1:设备屏幕的高度:h -> 如果没有指定,即 为 null、undefined 或 0,则使用默认值 2340。
2:设备屏幕的宽度:w -> 如果没有指定,即 为 null、undefined 或 0,则使用默认值 1080。
3:目的:
1:2340 和 1080:这是常见的屏幕分辨率,通常用于高分辨率设备(例如 1080x2340 的手机屏幕)。
2:默认值的设置,是为了在无法获取设备真实分辨率时,代码仍然可以正常运行。
4:area_region:如果未传入查找区域,默认设置为 [0, 0, w, h],表示全屏查找
1:上角坐标 (0, 0)
2:屏幕分辨率 -> 宽度 w、高度 h
5:threshold:如果未传入相似度阈值,默认设置为 0.8 -> 相似度阈值用于控制图片匹配的精度,值越高匹配越严格。
6:is_continue:如果未传入,是否继续查找的标志,默认设置为 false。
3:处理数组类型的图片路径
1:如果 img_path_array 是数组
1:遍历数组中的每个图片路径
2:检查图片文件是否存在
1:如果不存在,输出日志并跳过。
3:通过:图片路径 -> 读取 小图
1:使用 images.findImage 在屏幕截图(captureScreen())中,查找小图。
2:如果找到,返回,图片的中心坐标。
3:输出日志 并 点击图片的中心坐标(调用,蓝牙点击接口)
4:如果遍历完所有图片,仍未找到,返回 false
4:处理字符串类型的图片路径
1:如果 img_path_array 是字符串
1:检查图片文件是否存在
1:如果不存在,输出日志并返回 false。
2:通过:图片路径 -> 读取 小图
1:使用 images.findImage 在屏幕截图(captureScreen())中查找小图。
2:如果找到,返回,图片的中心坐标。
3:输出日志 并 点击图片的中心坐标(调用,蓝牙点击接口)
4:返回 true,表示查找并点击成功
3:如果未找到,返回 false。
4:打印日志:红果免费短剧进入福利页面
5:找图,找到并点击:clickAreaForFindImage(逻辑已写)
6:模拟用户在设备屏幕上的随机滑动操作
1:循环 3 次,调用 bluetoothTools.randomSwipe 方法,模拟从下往上的滑动操作。
2:在 Tools.randomSwipe() 方法中:
1:参数
1:w:设备屏幕的宽度。
2:h:设备屏幕的高度。
3:dir:滑动方向("下")。
4:sleeptiemMin:最小随机时间(单位:毫秒)。3000
5:sleeptiemMax:最大随机时间(单位:毫秒)。5000
2:初始化滑动参数(起始点、结束点、步数、时间等)。
1:x1 和 x2 -> 滑动的起始和结束横坐标,范围是 [w/3, w/2] 中的随机数
1:[w/3, w/2]:即设备宽度的三分之一到二分之一之间
2:y1 和 y2 -> 滑动的起始和结束纵坐标,范围分别是 [h/1.5, h/1.2] 和 [h/8, h/9] 中的随机数。
1:[h/1.5, h/1.2] 和 [h/8, h/9] -> 即设备高度的,几分之几
3:steps:滑动步数,默认是 5。
4:downTime 和 upTime:-> 按下和抬起的时间,默认是 100 毫秒。
3:睡眠 upTime 毫秒 -> 模拟用户滑动前的等待。
4:根据方向执行滑动 -> Tools.swipe()
1:参数
1:上
参数 -> x1:横坐标:起始 y1:纵坐标:起始 x2:横坐标:结束 y2:纵坐标:结束
2:下
参数 -> x1:横坐标:起始 y2:纵坐标:结束 x2:横坐标:结束 y1:纵坐标:起始
3:左
参数 -> w / 8 y2:纵坐标:结束 w / 1.3 y2:纵坐标:结束
4:右
参数 -> w / 1.3 y2:纵坐标:结束 w / 8 y2:纵坐标:结束
5:解释 -> w / 8,w / 1.3 -> 即设备宽度的,几分之几。
2:滑动接口
1:"http://127.0.0.1:9123/swipe?x1=""&y1=""&x2=""&y2=""&steps=""&downtime=""&speed=40&upTime=""
2:参数
x1: 整数值,表示滑动起始点的 x 坐标。
y1: 整数值,表示滑动起始点的 y 坐标。
x2: 整数值,表示滑动结束点的 x 坐标。
y2: 整数值,表示滑动结束点的 y 坐标。
lv: (可选)整数值,表示滑动弧度,0-300建议。
steps: (可选)整数值,表示滑动的控制点数,越大越慢越精准,建议(10-100)
downtime: (可选)整数值,按下时间(毫秒)。
uptime: (可选)整数值,抬起之前时间(毫秒)。
speed: (可选)整数值,表示滑动的速度。
upcount: (可选)抬起次数:少数设备起不来。可以多次
3:初始化变量
1:result:用于标记签到是否成功。
2:kspLqcgResult:用于标记,是否找到 “去签到” “立即签到” “看视频最高再领” 和 “领取成功” 按钮/提示。
3:countNum:用于计数控制,查找 “去签到” 按钮的次数。
4:jctcCountNum:用于计数控制,查找 “领取成功” 按钮的次数。
4:查找并点击 “去签到” 按钮
1:while (true):无限循环,直到找到“去签到”按钮或达到最大尝试次数。
2:hgapp.isPerfectFindOCR("去签到"):-> 返回按钮的坐标 bounds。(逻辑已写)
3:如果找到“去签到”按钮; 即:找到坐标
1:点击按钮(逻辑已写)
2:休眠随机3秒至5秒
3:设置 kspLqcgResult = true,表示,找到“去签到”按钮。
4:退出循环
4:如果未找到“去签到”按钮
1:根据方向执行滑动 -> Tools.swipe(逻辑已写)
1:模拟从屏幕底部向上滑动,尝试刷新页面。
2:参数 -> x1=w / 2 y1=h - 390 x2=w / 2 y2=0 即:y1 -> y2
2:休眠随机3秒至5秒
3:增加计数 countNum++
4:如果 countNum > 3,表示尝试次数超过 3 次,退出循环
5:如果找到 “去签到” 按钮
1:查找并点击 “立即签到” 按钮
1:使用 OCR 技术查找 “立即签到” 按钮的位置。-> isFindOCR/isPerfectFindOCR (逻辑已写过)
2:如果未找到,设置 kspLqcgResult = false 并输出日志
3:如果找到,点击按钮(逻辑已写)
1:问题,如果找到,没有加 if 判断,但是点了也没事,不出问题!!
4:设置 result = true,表示签到成功。
5:休眠随机3秒至5秒
2:查找并点击 “看视频最高再领”按钮
1:使用 OCR 技术查找 ”看视频最高再领“ 按钮的位置。 -> isFindOCR/isPerfectFindOCR (逻辑已写过)
2:如果未找到,设置 kspLqcgResult = false 并输出日志。
3:如果找到,点击按钮(逻辑已写)
4:等待“领取成功”提示:
0:循环 4 次,查找“领取成功”提示
1:休眠随机 7秒至9秒
2:使用 OCR 技术查找 “领取成功” 提示的位置。-> isFindOCR/isPerfectFindOCR (逻辑已写过)
3:如果找到,“领取成功” 提示的位置
1:重新计算,x坐标
1:x坐标 = x坐标 + 10。 y坐标不变,得到,关闭按钮的坐标。
2:根据,关闭按钮的坐标 -> 点击按钮(逻辑已写)
3:休眠随机3秒至5秒
4:使用 OCR 技术查找“坚持退出”按钮并点击。isOCRCZ()
1:使用 OCR 技术查找 “坚持退出” 按钮的位置。-> isFindOCR/isPerfectFindOCR (逻辑已写过)
2:如果找到,点击按钮(逻辑已写)
4:如果未找到,且尝试次数超过 4 次,输出日志,设置 kspLqcgResult = false。
1:退出循环
5:如果 kspLqcgResult = false 即:“看视频最高再领”任务,未领取成功。
1:调用 clickAreaForFindImage(逻辑已写) 方法,关闭弹窗。
2:休眠随机 2秒至3秒
3:使用 OCR 技术查找“取消”按钮并点击。isOCRCZ()
1:使用 OCR 技术查找 “取消” 按钮的位置。-> isFindOCR/isPerfectFindOCR (逻辑已写过)
2:如果找到,点击按钮(逻辑已写)
6:如果 result = true 即:签到成功
1:将签到状态,保存到本地存储(localStorage.put(isSignKey, true))。 key = isSignKey
2:调用 saveStorage.storageInfoData 方法,保存任务完成信息。
1:参数分类,及 作用。
1:存储对象属性
4:金币:gold 5:提现:money 6:任务时间:taskTime 7:任务名称:taskName 8:步数:step 9:appId 10:状态码:status(完成/失败) 10:消息:messages
2:1:存储对象 2:信息类型:type(info) 3:码值:code(200:成功/201:失败)
1:发送数据到服务器
1:ws.reportData(type, code, JSON.stringify(jsonData))
2:jsonData -> execDay:执行日期 = 当前日期 appId.....
3:回调方法:f
1:如果 step=100 -> 执行回调 -> 参数:存储对象(注意step=100的时候,给总控(回调)传对象,要包括金币数)
5:sjRunTime -> 定义任务的总执行时间,范围是 [100, 118] 分钟,转换为秒。
6:sjStaDate -> 记录任务开始的时间。
7:循环执行任务,直到,任务执行时间,超过 sjRunTime
0:ydzjbRunTime = 定义“阅读赚金币”任务的执行时间,范围是 [28, 30] 分钟,转换为秒。
1:任务1 -> 阅读赚金币(stopFlag:停止标签,如果 stopFlag = true,则退出任务)
1:参数 -> 1:执行计划 2:回调函数 3:ydzjbRunTime:“阅读赚金币”任务的执行时间 4:result:以上步骤是否操作成功
2:直到任务中心点击(逻辑已写)
3:福利页阅读赚金币查找第一步()
1:模拟用户在设备屏幕上的随机滑动操作:Tools.randomSwipe(逻辑已写)
1:参数方向:向下
2:无限循环,直到找到目标按钮或达到最大尝试次数。
1:isOCRCZ(“阅读赚金币”):逻辑已写 或者 isOCRCZ(“阅读赚钱”):逻辑已写 -> 使用 OCR 技术查找 “阅读赚金币” 或者 “阅读赚钱” 按钮并点击
1:如果找到,阅读赚金币/阅读赚钱,设置 result = true,输出日志并退出循环。
3:根据方向执行滑动 -> Tools.swipe(逻辑已写)
1:模拟从屏幕底部向上滑动,尝试刷新页面。
2:参数 -> x1=w / 2 y1=h - 390 x2=w / 2 y2=0 即:y1 -> y2
4:休眠随机 3秒至5秒
5:countNum++ -> 增加计数。
6:if (countNum > 3) -> 如果尝试次数超过 3 次,退出循环并输出日志 "暂无阅读赚金币"。
4:如果,福利页阅读赚金币查找第一步(),成功
1:while(true) 死循环,直到,任务完成
1:阅读赚金币领取金币第二步()
1:isOCRCZ(“看视频最高再领”):逻辑已写 -> 使用 OCR 技术查找 “看视频最高再领” 按钮并点击
1:进入 while (true) 循环,查找“领取成功”提示。
2:休眠随机 7秒至9秒
3:isPerfectFindOCR("领取成功"):逻辑已写 -> 使用 OCR 技术查找 “领取成功” 按钮的位置。
4:如果找到,“领取成功” 提示的位置
1:重新计算,x坐标
1:x坐标 = x坐标 + 10。 y坐标不变,得到,关闭按钮的坐标。
2:根据,关闭按钮的坐标 -> 点击按钮(逻辑已写)
3:休眠随机3秒至5秒
4:使用 OCR 技术查找“坚持退出”按钮并点击。isOCRCZ(逻辑已写)
5:设置 result = true,表示成功找到并点击“领取成功”提示。
6:退出循环。
5:如果未找到“领取成功”提示:
1:休眠随机1秒至3秒
2:增加计数 jctcCountNum++。
3:如果 jctcCountNum > 3,表示尝试次数超过 3 次,
1:调用 bluetoothTools.back() 返回上一页。
1:返回地址:http://127.0.0.1:9123/back
2:退出循环
2:如果,阅读赚金币领取金币第二步() 成功
1:则继续 -> 福利页阅读赚金币查找第一步()
3:直到 -> 阅读赚金币领取金币第二步() 失败,退出循环。
2:阅读赚金币看小说第三步()
1:初始化
1:result 用于存储函数执行的结果,初始值为 false。
2:staDate 记录函数开始执行的时间。
3:hpStarTime 用于记录滑屏操作的开始时间,初始值为 0。
2:isPerfectFindOCRCZ("小说")/isOCRCZ("小说") :逻辑已写 -> 使用 OCR 技术查找“小说”按钮并点击。
3:休眠随机3秒至5秒
4:isPerfectFindOCR(random(2,4)):逻辑已写 -> 使用 OCR 技术查找 (随机查找 2 到 4) 的位置。
5:如果找到的位置 boubings
1:如果 x坐标:boubings[0] > 272
1:则点击该位置;
2:否则
1:点击默认位置 (272, 1068.5)。
6:如果没有找到的位置 boubings
1:点击默认位置 (272, 1068.5)。
7:通过 while 循环,持续进行滑屏操作,直到运行时间达到 ydzjbRunTime。
1:休眠随机3秒至5秒
2:getTimeDifference(staDate,endDate):计算从开始时间 staDate 到当前时间 endDate 的时间差。
3:randomSwipe(w, h, "右", 50, 100):逻辑已写:模拟用户在设备屏幕上的随机滑动操作
1:参数方向,向右
4:result = true:设置结果为 true,表示操作成功。
8:back(逻辑已写):模拟点击返回按钮。
9:sleepRandom3():休眠随机3秒至5秒。
10:isOCRCZ("暂不加入"):通过 OCR 技术查找并点击“暂不加入”按钮。
11:clickAreaForFindImage(ad_image_array):查找并点击,关闭图片,关闭弹窗。
12:back(逻辑已写):再次模拟点击返回按钮。
13:result:返回操作结果。
3:设置 result = ture 以上步骤操作成功
5:如果,result = ture 以上步骤操作成功
1:storageInfoData():逻辑已写 将每次任务存储到本地记录
6:如果,result = false 以上步骤操作失败
1:storageInfoData():逻辑已写 将每次任务存储到本地记录
2:任务2 -> 开宝箱(stopFlag:停止标签,如果 stopFlag = true,则退出任务)
1:直到任务中心点击(逻辑已写) -> 确保进入任务中心页面
2:初始化变量
1:result:用于存储任务执行结果,初始值为 false。
2:countNum:用于记录查找“开宝箱”按钮的次数。
3:jctcCountNum:用于记录查找“领取成功”或“坚持退出”按钮的次数。
3:查找“点击领” 或者 “开宝箱得金币” 按钮,并点击
1:通过 while 循环查找“开宝箱”按钮:
2:使用 isOCRCZ("点击领") || isOCRCZ("开宝箱得金币") 通过 OCR 技术查找并点击 “点击领” 或者 开宝箱得金币 按钮。
3:如果找到,设置 result = true,记录日志,并跳出循环。
4:如果未找到,根据方向执行滑动 -> Tools.swipe(逻辑已写),
1:模拟从屏幕底部向上滑动,尝试刷新页面。
2:参数 -> x1=w / 2 y1=h - 390 x2=w / 2 y2=0 即:y1 -> y2
5:休眠随机3秒至5秒。
6:如果查找次数超过 3 次,记录日志“暂无开宝箱”,并跳出循环。
4:开宝箱查去看广告得最高()
0:qkggFlag:用于存储任务执行结果,初始值为 false。
1:进入 while (true) 循环,
1:isOCRCZ("看视频最高再领"):逻辑已写 -> 过 OCR 技术查找并点击“看视频最高再领” 按钮。
4:如果成功
1:qkggFlag = true:表示操作成功。
5:如果失败
1:休眠随机1秒至3秒
2:增加计数 countQkgNum++。
3:如果 countQkgNum > 3,表示尝试次数超过 3 次,退出循环!!
6:返回操作状态
5:如果 开宝箱查去看广告得最高(),操作成功,需要观看广告
1:通过 while 循环查找“领取成功”按钮:
2:使用 isPerfectFindOCR("领取成功") :逻辑已写 -> 使用 OCR 技术查找 "领取成功" 的位置。
3:如果找到,“领取成功” 提示的位置
1:重新计算,x坐标
1:x坐标 = x坐标 + 100。 y坐标不变,得到,关闭按钮的坐标。
2:根据,关闭按钮的坐标 -> 点击按钮(逻辑已写)
3:休眠随机1秒至3秒
4:isOCRCZ("坚持退出"):逻辑已写 -> 过 OCR 技术查找并点击“坚持退出” 按钮。
5:退出循环
4:如果查找次数超过 3 次
1:back(逻辑已写):返回上一页。
2:clickAreaForFindImage(ad_image_array):查找并点击,关闭图片,关闭弹窗。
3:退出循环
6:如果 开宝箱查去看广告得最高(),操作失败
1:clickAreaForFindImage(ad_image_array):查找并点击,关闭图片,关闭弹窗。
7:如果 result = ture 操作成功。
1:storageInfoData():逻辑已写 将每次任务存储到本地记录
6:如果,result = false 操作失败
1:storageInfoData():逻辑已写 将每次任务存储到本地记录
3:任务3 -> 红包雨(stopFlag:停止标签,如果 stopFlag = true,则退出任务)
1:调用 直到任务中心点击(逻辑已写),确保进入任务中心页面。
2:初始化变量
1:jbhbyClicksFlag:用于标记是否成功进入“金币红包雨”页面,初始值为 false。
2:result:用于存储任务执行结果,初始值为 false。
3:countNum:用于记录查找“金币红包雨”按钮的次数。
3:查找“金币红包雨”按钮
1:通过 while 循环查找“金币红包雨”按钮
2:isPerfectFindOCRCZ(“金币红包雨”):逻辑已写 -> 使用 OCR 技术查找“金币红包雨”按钮并点击。
3:如果找到,设置 result = true 和 jbhbyClicksFlag = true,记录日志,并跳出循环。
4:如果未找到,Tools.swipe(逻辑已写):根据方向执行滑动
1:模拟从屏幕底部向上滑动,尝试刷新页面。
2:参数 -> x1=w / 2 y1=h - 390 x2=w / 2 y2=0 即:y1 -> y2
5:休眠随机1秒至3秒
6:如果查找次数超过 6 次,记录日志“暂无金币红包雨”,并跳出循环。
4:模拟点击红包雨
1:如果,jbhbyClicksFlag = true -> 成功进入“金币红包雨”页面
1:设置 result = true。
2:休眠随机1秒至3秒
3:初始化变量
1:x 和 y:定义了点击区域的起始坐标,x = 150,y = 300。
2:stepx 和 stepy:定义了每次点击后,x 和 y 坐标的增量(步长),stepx = 50,stepy = 50。
3:width 和 height:定义了点击区域的宽度和高度,width = 500,height = 800。
4:xj 和 yj:定义了当前点击的x坐标 和 y坐标,
1:初始值为,起始坐标加上一个随机值:
1:xj = x + Math.round(Math.random(10)):x 坐标加上一个 0 到 10 之间的随机整数。
2:yj = y + Math.round(Math.random(15)):y 坐标加上一个 0 到 15 之间的随机整数。
5:cc:计数器,用于控制外层循环的次数,初始值为 0
4:模拟点击红包雨算法
1:内层循环
1:xj:当前点击的x坐标,yj:当前点击的y坐标,width:点击区域的宽度 和 stepx:x坐标的增量
2:while 循环,直到 xj:当前点击的x坐标 不小于 width:点击区域的宽度 -> (当前点击的x坐标,不能超出,区域宽度)
1:更新,xj:当前点击的x坐标 = xj:当前点击的x坐标 + stepx:x坐标的增量
2:yj:当前点击的y坐标,不变
2:点击按钮(逻辑已写) -> yj:当前点击的y坐标,xj:当前点击的x坐标
3:中层循环
1:xj:当前点击的x坐标,yj:当前点击的y坐标,height:点击区域的高度,stepy:y坐标的增量,x:x起始坐标
2:while 循环,直到 yj:当前点击的y坐标 不小于 height:点击区域的高度 -> (当前点击的y坐标,不能超出,区域高度)
1:更新,yj:当前点击的y坐标 = yj:当前点击的y坐标 + stepy:y坐标的增量
2:更新,xj:当前点击的x坐标 = x:x起始坐标 + 0 到 20 之间的随机整数
3:休眠随机1秒至3秒
4:外层循环
1:cc:计数器,xj:当前点击的x坐标,yj:当前点击的y坐标,x:x起始坐标,y:y起始坐标
2:while 循环,直到 cc:计数器 不小于 1 -> (只执行一次)
1:更新,yj:当前点击的y坐标 = y:y起始坐标 + [0 到 15 之间的随机整数]
2:更新,xj:当前点击的x坐标 = x:x起始坐标 + [ 0 到 10 之间的随机整数]
3:休眠随机1秒至3秒
5:处理“看视频翻倍领取”任务
1:isPerfectFindOCRCZ(“返回福利页”):逻辑已写 -> 使用 OCR 技术查找“返回福利页”按钮并点击。
2:如果失败 -> 未找到“返回福利页”按钮
1:isFindOCR("看视频翻倍领取")(逻辑已写过) -> 使用 OCR 技术查找 “看视频翻倍领取” 按钮的位置。
2:如果找到,点击按钮(逻辑已写)。
3:通过 while 循环查找 “领取成功” 按钮
1:休眠随机11秒至9秒
2:isPerfectFindOCR("领取成功"):逻辑已写 -> 使用 OCR 技术查找 "领取成功" 的位置。
3:如果找到,“领取成功” 提示的位置
1:重新计算,x坐标
1:x坐标 = x坐标 + 100。 y坐标不变,得到,关闭按钮的坐标。
2:根据,关闭按钮的坐标 -> 点击按钮(逻辑已写)
3:休眠随机1秒至3秒
4:isOCRCZ("坚持退出"):逻辑已写 -> 过 OCR 技术查找并点击“坚持退出” 按钮。
5:退出循环
4:如果查找次数超过 5 次
1:back(逻辑已写):返回上一页。
2:clickAreaForFindImage(ad_image_array):查找并点击,关闭图片,关闭弹窗。
3:退出循环
6:如果 result = ture 操作成功。
1:storageInfoData():逻辑已写 将每次任务存储到本地记录
7:如果,result = false 操作失败
1:storageInfoData():逻辑已写 将每次任务存储到本地记录
3:hpEndTime = 定义“看短剧赚金币”任务的执行时间,范围是 [10, 11] 分钟,转换为秒。
4:任务4 -> 看短剧赚金币(stopFlag:停止标签,如果 stopFlag = true,则退出任务)
1:参数 -> 1:执行计划 2:回调函数 3:hpEndTime:“看短剧赚金币”任务的执行时间 4:result:用于存储任务执行结果,初始值为 false。
2:直到任务中心点击(逻辑已写)
3:福利页看短剧赚金币点击第一步()
1:模拟用户在设备屏幕上的随机滑动操作:Tools.randomSwipe(逻辑已写)
1:参数方向:向下
2:无限循环,直到找到目标按钮或达到最大尝试次数。
1:isOCRCZ(“看短剧赚金币”):逻辑已写 或者 isOCRCZ(“看短剧赚钱”):逻辑已写 -> 使用 OCR 技术查找 “看短剧赚金币” 或者 “看短剧赚钱” 按钮并点击
1:如果找到,看短剧赚金币/看短剧赚钱,设置 result = true,输出日志并退出循环。
3:根据方向执行滑动 -> Tools.swipe(逻辑已写)
1:模拟从屏幕底部向上滑动,尝试刷新页面。
2:参数 -> x1=w / 2 y1=h - 390 x2=w / 2 y2=0 即:y1 -> y2
4:休眠随机 3秒至5秒
5:countNum++ -> 增加计数。
6:if (countNum > 3) -> 如果尝试次数超过 3 次,退出循环并输出日志 "暂无看短剧赚金币"。
4:如果,福利页看短剧赚金币点击第一步(),成功
1:while(true) 死循环,直到,任务完成
1:看短剧赚金币取金币第二步()
1:isOCRCZ(“看视频再领”):逻辑已写 -> 使用 OCR 技术查找 “看视频再领” 按钮并点击
2:如果,操作成功
1:进入 while (true) 循环,查找“领取成功”提示。
2:休眠随机 7秒至9秒
3:isPerfectFindOCR("领取成功"):逻辑已写 -> 使用 OCR 技术查找 “领取成功” 按钮的位置。
4:如果找到,“领取成功” 提示的位置
1:重新计算,x坐标
1:x坐标 = x坐标 + 10。 y坐标不变,得到,关闭按钮的坐标。
2:根据,关闭按钮的坐标 -> 点击按钮(逻辑已写)
3:休眠随机3秒至5秒
4:使用 OCR 技术查找“坚持退出”按钮并点击。isOCRCZ(逻辑已写)
5:设置 result = true,表示成功找到并点击“领取成功”提示。
6:退出循环。
5:如果未找到“领取成功”提示:
1:休眠随机1秒至3秒
2:增加计数 jctcCountNum++。
3:如果 jctcCountNum > 3,表示尝试次数超过 3 次,
1:调用 bluetoothTools.back() 返回上一页。
1:返回地址:http://127.0.0.1:9123/back
2:退出循环
2:如果,看短剧赚金币取金币第二步() 成功
1:则继续 -> 福利页看短剧赚金币点击第一步()
3:直到 -> 看短剧赚金币取金币第二步() 失败,退出循环。
2:看短剧赚金币看短剧第三步()
1:初始化
1:result 用于存储函数执行的结果,初始值为 false。
2:isPerfectFindOCRCZ("剧场"):逻辑已写 -> 使用 OCR 技术查找“剧场”按钮并点击。
3:如果操作成
1:isPerfectFindOCR("首页"):逻辑已写 -> 使用 OCR 技术查找 "首页" 的位置。
2:如果找到的位置 boubings
1:重新计算,y坐标 = boubings[1] - 300,得到 -> 新的坐标(可能是关闭坐标)
2:点击按钮
4:result = true:执行成功!!
5:调用 bluetoothTools.back() 返回上一页。
6:isOCRCZArray() -> 查找提示语,并点击
1:按钮集合:["下次再说", "暂不加入", "坚持退出", "继续退出", "立即开始", "同意", "知道了", "以后再说", "我知道了", "直接无视", "直接无视", "点击重播", "我在想想", "稍候再说", "以后", "以后更新", "回头再说", "回头在说", "先去看看", "先去逛逛", "以后再说", "忽略该版本", "游客逛逛", "暂不更新", "好的", "不再提醒"]
2:循环,按钮集合,调用 isPerfectFindOCRCZ(逻辑已写): 使用 OCR 技术查找 按钮 并点击。
7:返回,执行状态!!
3:result = true -> 任务执行成功!!
5:如果,result = ture 以上步骤操作成功
1:storageInfoData():逻辑已写 将每次任务存储到本地记录
6:如果,result = false 以上步骤操作失败
1:storageInfoData():逻辑已写 将每次任务存储到本地记录
5:sjEndDate = 记录当前时间
6:sjCount = sjStaDate - sjEndDate。 -> 计算任务执行的总时间(单位:秒)。
7:最后任务 -> 获取金币()
1:直到任务中心点击(逻辑已写)
2:休眠随机 2秒至3秒
3:umig开源ocr识别 umiocrFindData(已经解析过)
4:OCR 识别结果,通常是一个数组,每个元素包含,文字的文本内容和边界框坐标。
1:如果 OCR 识别成功(objCoin 不为 null):
2:遍历 OCR 结果中的每一行文字(objCoin.data):
1:如果当前行有文字内容(objCoin.data[i].text):
1:使用 parseFloat 将文字转换为浮点数。
2:使用 isNaN 检查转换后的值是否为有效数字。
3:如果是有效数字,将其存入 numbers 数组,并记录日志。
3:如果 OCR 识别失败(objCoin 为 null),直接返回 0。
5:提取金币数量
1:从 numbers 数组中提取第一个数字,假设为金币数量,存储在变量 newCoin 中。
2:返回金币数量 newCoin。
问题:(金币数量的位置:代码假设金币数量是 OCR 结果中的第一个数字,如果金币数量不在第一个位置,可能需要调整逻辑。)
8:storageInfoData():逻辑已写 将最后一次任务,存储到本地记录