|
|
@ -1,6 +1,6 @@ |
|
|
|
/* eslint-disable @typescript-eslint/no-non-null-assertion */ |
|
|
|
import { DPStarter, DPTask } from './lib/index'; |
|
|
|
import { clickForce, clickForceXY, isNextElement, findPrevElement, withMakeSure, swipeToCenter } from './lib/utils'; |
|
|
|
import { clickForce, isNextElement, findPrevElement, withMakeSure, swipeToCenter, nextElement } from './lib/utils'; |
|
|
|
|
|
|
|
// 弹窗关闭按钮
|
|
|
|
const 弹窗关闭按钮 = className('com.lynx.tasm.behavior.ui.LynxFlattenUI') |
|
|
@ -11,33 +11,37 @@ const 弹窗关闭按钮 = className('com.lynx.tasm.behavior.ui.LynxFlattenUI') |
|
|
|
// 福利界面底部栏入口按钮
|
|
|
|
const 底部栏入口按钮 = id('di1').text('福利').visibleToUser(); |
|
|
|
|
|
|
|
const lookTime = 60 * 8; // 看剧时间 默认8小时
|
|
|
|
|
|
|
|
class Hongguo extends DPStarter { |
|
|
|
doInit() { |
|
|
|
withMakeSure('打开红果', () => app.launch('com.phoenix.read'), { |
|
|
|
hasModal: [ |
|
|
|
() => { |
|
|
|
if (nextElement(弹窗关闭按钮, 'com.lynx.tasm.behavior.ui.LynxFlattenUI') === null) { |
|
|
|
return 弹窗关闭按钮.findOne(500); |
|
|
|
} else { |
|
|
|
return null; |
|
|
|
} |
|
|
|
} |
|
|
|
], |
|
|
|
landOver: [() => 底部栏入口按钮.findOne(500)] // 确认是否到达目的页
|
|
|
|
}); |
|
|
|
clickForce(底部栏入口按钮.findOne(500)); |
|
|
|
} |
|
|
|
doFinish() { |
|
|
|
sleep(3000); |
|
|
|
app.launch('org.autojs.autoxjs.v6'); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
const hongguo = new Hongguo(); |
|
|
|
|
|
|
|
const 新人见面礼task = new DPTask(hongguo, '新人见面礼'); |
|
|
|
const 吃饭补贴task = new DPTask(hongguo, '日常福利-吃饭补贴'); |
|
|
|
const 签到task = new DPTask(hongguo, '日常福利-签到'); |
|
|
|
const 看广告视频task = new DPTask(hongguo, '看广告视频'); |
|
|
|
const 看短剧task = new DPTask(hongguo, '看短剧'); |
|
|
|
|
|
|
|
// 新人见面礼立即领取
|
|
|
|
新人见面礼task.run((task) => { |
|
|
|
swipe(device.width / 2, device.height * 0.2, device.width / 2, device.height * 0.9, 500); |
|
|
|
swipe(device.width / 2, device.height * 0.2, device.width / 2, device.height * 0.9, 500); |
|
|
|
const 开始立即领取 = className('com.lynx.tasm.behavior.ui.text.FlattenUIText') |
|
|
|
.boundsInside(0, 0, device.width / 2, device.height / 2) |
|
|
|
.text('立即领取') |
|
|
|
.visibleToUser(); |
|
|
|
const 额外福利 = className('com.lynx.tasm.behavior.ui.text.FlattenUIText').textContains('额外福利').visibleToUser(); |
|
|
|
const 开始立即领取 = findPrevElement(额外福利, 'com.lynx.tasm.behavior.ui.text.FlattenUIText'); |
|
|
|
const 弹窗里立即领取 = className('com.lynx.tasm.behavior.ui.text.FlattenUIText').text('立即领取').visibleToUser(); |
|
|
|
const 有金币奖励字样 = className('com.lynx.tasm.behavior.ui.text.FlattenUIText').text('金币奖励可在「福利」查看').visibleToUser(); |
|
|
|
const 明日再来 = className('com.lynx.tasm.behavior.ui.text.FlattenUIText').text('明日再来').visibleToUser(); |
|
|
@ -45,7 +49,7 @@ const 看短剧task = new DPTask(hongguo, '看短剧'); |
|
|
|
const 确定有这个按钮 = withMakeSure( |
|
|
|
'点击立即领取', |
|
|
|
() => { |
|
|
|
clickForce(开始立即领取.findOne(500)); |
|
|
|
clickForce(开始立即领取); |
|
|
|
return 开始立即领取; |
|
|
|
}, |
|
|
|
{ |
|
|
@ -72,61 +76,7 @@ const 看短剧task = new DPTask(hongguo, '看短剧'); |
|
|
|
} |
|
|
|
}); |
|
|
|
|
|
|
|
吃饭补贴task.run(() => { |
|
|
|
const 吃饭补贴区域 = className('com.lynx.tasm.behavior.ui.text.FlattenUIText').text('吃饭补贴').visibleToUser(); |
|
|
|
withMakeSure('确保在吃饭补贴区域', () => 吃饭补贴区域.findOne(500), { |
|
|
|
landOver: [() => 吃饭补贴区域.findOne(500)], // 确认是否到达目的页
|
|
|
|
auxAction: [ |
|
|
|
(makeSure) => { |
|
|
|
// 如果有这个控件 直接划到可视区域
|
|
|
|
makeSure && swipe(makeSure.bounds().centerX(), makeSure.bounds().centerY(), makeSure.bounds().centerX(), 0, 500); |
|
|
|
}, |
|
|
|
() => { |
|
|
|
// 如果没有 滑到顶部
|
|
|
|
swipe(device.width / 2, device.height * 0.2, device.width / 2, device.height * 0.9, 500); |
|
|
|
}, |
|
|
|
() => { |
|
|
|
// 如果没有 往下滑动
|
|
|
|
swipe(device.width / 2, device.height * 0.7, device.width / 2, 0, 500); |
|
|
|
} |
|
|
|
] |
|
|
|
}); |
|
|
|
swipeToCenter(吃饭补贴区域.findOne(500)!); |
|
|
|
|
|
|
|
const 去领取 = className('com.lynx.tasm.behavior.ui.text.FlattenUIText').text('去领取').visibleToUser(); |
|
|
|
const 早饭 = className('com.lynx.tasm.behavior.ui.text.UIText').textContains('早饭').visibleToUser(); |
|
|
|
const 午饭 = className('com.lynx.tasm.behavior.ui.text.UIText').textContains('午饭').visibleToUser(); |
|
|
|
const 晚饭 = className('com.lynx.tasm.behavior.ui.text.UIText').textContains('晚饭').visibleToUser(); |
|
|
|
const 夜宵 = className('com.lynx.tasm.behavior.ui.text.UIText').textContains('夜宵').visibleToUser(); |
|
|
|
|
|
|
|
withMakeSure('签到', () => clickForce(去领取.findOne(500)), { |
|
|
|
landOver: [() => 早饭.findOne(500)], // 确认是否到达目的页
|
|
|
|
retry: 2 |
|
|
|
}); |
|
|
|
|
|
|
|
const eat = (ele: UiSelector) => { |
|
|
|
clickForce(ele.findOne(500), false); |
|
|
|
const 后可领取奖励 = className('com.lynx.tasm.behavior.ui.text.FlattenUIText').textContains('后可领取奖励').visibleToUser(); |
|
|
|
const 看视频再领 = className('com.lynx.tasm.behavior.ui.text.FlattenUIText').textContains('看视频再领').visibleToUser(); |
|
|
|
sleep(3000); |
|
|
|
if (后可领取奖励.exists()) { |
|
|
|
lookAD(); |
|
|
|
sleep(3000); |
|
|
|
if (看视频再领.exists()) { |
|
|
|
clickForce(看视频再领.findOne(1500), false); |
|
|
|
lookAD(); |
|
|
|
} |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
eat(早饭); |
|
|
|
eat(午饭); |
|
|
|
eat(晚饭); |
|
|
|
eat(夜宵); |
|
|
|
|
|
|
|
back(); |
|
|
|
}); |
|
|
|
|
|
|
|
const 签到task = new DPTask(hongguo, '日常福利-签到'); |
|
|
|
签到task.run((task) => { |
|
|
|
const 日常福利区域 = className('com.lynx.tasm.behavior.ui.text.FlattenUIText').text('日常福利').visibleToUser(); |
|
|
|
withMakeSure('确保在日常福利区域', () => 日常福利区域.findOne(500), { |
|
|
@ -170,6 +120,7 @@ const 看短剧task = new DPTask(hongguo, '看短剧'); |
|
|
|
clickForce(弹窗关闭按钮.findOne(1500)); |
|
|
|
}); |
|
|
|
|
|
|
|
const 看广告视频task = new DPTask(hongguo, '看广告视频'); |
|
|
|
看广告视频task.run(() => { |
|
|
|
const 日常福利区域 = className('com.lynx.tasm.behavior.ui.text.FlattenUIText').text('日常福利').visibleToUser(); |
|
|
|
withMakeSure('确保在日常福利区域', () => 日常福利区域.findOne(500), { |
|
|
@ -198,77 +149,22 @@ const 看短剧task = new DPTask(hongguo, '看短剧'); |
|
|
|
lookAD(); |
|
|
|
}); |
|
|
|
|
|
|
|
看短剧task.run(() => { |
|
|
|
const 日常福利区域 = className('com.lynx.tasm.behavior.ui.text.FlattenUIText').text('日常福利').visibleToUser(); |
|
|
|
withMakeSure('确保在日常福利区域', () => 日常福利区域.findOne(500), { |
|
|
|
landOver: [() => 日常福利区域.findOne(500)], // 确认是否到达目的页
|
|
|
|
auxAction: [ |
|
|
|
(makeSure) => { |
|
|
|
// 如果有这个控件 直接划到可视区域
|
|
|
|
makeSure && swipe(makeSure.bounds().centerX(), makeSure.bounds().centerY(), makeSure.bounds().centerX(), 0, 500); |
|
|
|
}, |
|
|
|
() => { |
|
|
|
// 如果没有 滑到顶部
|
|
|
|
swipe(device.width / 2, device.height * 0.2, device.width / 2, device.height * 0.9, 500); |
|
|
|
}, |
|
|
|
() => { |
|
|
|
// 如果没有 往下滑动
|
|
|
|
swipe(device.width / 2, device.height * 0.7, device.width / 2, 0, 500); |
|
|
|
} |
|
|
|
] |
|
|
|
const 开宝箱task = new DPTask(hongguo, '开宝箱'); |
|
|
|
开宝箱task.run((task) => { |
|
|
|
const 宝箱 = className('com.lynx.tasm.behavior.ui.text.FlattenUIText').textContains('宝箱').visibleToUser(); |
|
|
|
const 看视频最高再领 = className('com.lynx.tasm.behavior.ui.text.FlattenUIText').textContains('看视频最高再领').visibleToUser(); |
|
|
|
if (!宝箱.exists()) { |
|
|
|
task.log('没有找到宝箱'); |
|
|
|
return; |
|
|
|
} |
|
|
|
clickForce(宝箱.findOne(500)); |
|
|
|
withMakeSure('开宝箱', () => clickForce(宝箱.findOne(500)), { |
|
|
|
landOver: [() => 弹窗关闭按钮.findOne(500)] // 确认是否到达目的页
|
|
|
|
}); |
|
|
|
|
|
|
|
const 去看剧 = className('com.lynx.tasm.behavior.ui.text.FlattenUIText').textContains('去看剧').visibleToUser(); |
|
|
|
clickForce(去看剧.findOne(500)); |
|
|
|
|
|
|
|
const 领金币 = id('com.phoenix.read:id/nj').textContains('金币').visibleToUser(); |
|
|
|
const 追剧 = className('android.widget.TextView').text('追剧'); |
|
|
|
const 立即领取 = className('com.lynx.tasm.behavior.ui.text.FlattenUIText').text('立即领取').visibleToUser(); |
|
|
|
const 再攒 = className('com.lynx.tasm.behavior.ui.text.FlattenUIText').textContains('再攒').visibleToUser(); |
|
|
|
const 看视频再领 = className('com.lynx.tasm.behavior.ui.text.UIText').textContains('看视频').visibleToUser(); |
|
|
|
|
|
|
|
const startTime = new Date().getTime(); |
|
|
|
|
|
|
|
let looking = true; |
|
|
|
while (looking) { |
|
|
|
if (领金币.exists()) { |
|
|
|
withMakeSure('领金币', () => clickForce(领金币.findOne(500)), { |
|
|
|
retry: 2, |
|
|
|
landOver: [() => 立即领取.findOne(500)] |
|
|
|
}); |
|
|
|
const 再攒旁边的立即领取 = findPrevElement(再攒, 'com.lynx.tasm.behavior.ui.text.FlattenUIText'); |
|
|
|
clickForce(再攒旁边的立即领取); |
|
|
|
if (看视频再领.exists()) { |
|
|
|
clickForce(看视频再领.findOne(1500), false); |
|
|
|
lookAD(); |
|
|
|
} |
|
|
|
|
|
|
|
console.log('task0'); |
|
|
|
const 开宝箱 = className('com.lynx.tasm.behavior.ui.text.FlattenUIText').text('开宝箱得金币'); |
|
|
|
if (开宝箱.exists()) { |
|
|
|
withMakeSure('开宝箱', () => clickForce(开宝箱.findOne(500)), { |
|
|
|
landOver: [() => 弹窗关闭按钮.findOne(500)], // 确认是否到达目的页
|
|
|
|
retry: 2 |
|
|
|
}); |
|
|
|
if (看视频再领.exists()) { |
|
|
|
clickForce(看视频再领.findOne(1500), false); |
|
|
|
lookAD(); |
|
|
|
} |
|
|
|
} |
|
|
|
clickForce(弹窗关闭按钮.findOne(1500)); |
|
|
|
clickForce(去看剧.findOne(500)); |
|
|
|
} |
|
|
|
if (!追剧.exists()) { |
|
|
|
looking = false; |
|
|
|
} |
|
|
|
sleep(30000); |
|
|
|
console.log(`已经看了${((new Date().getTime() - startTime) / 1000 / 60).toFixed(1)}分钟`); |
|
|
|
// 8小时结束
|
|
|
|
if (new Date().getTime() - startTime > 1000 * 60 * lookTime) { |
|
|
|
looking = false; |
|
|
|
} |
|
|
|
if (看视频最高再领.exists()) { |
|
|
|
clickForce(看视频最高再领.findOne(1500), false); |
|
|
|
lookAD(); |
|
|
|
} |
|
|
|
back(); |
|
|
|
}); |
|
|
|
|
|
|
|
function lookAD() { |
|
|
@ -283,7 +179,7 @@ function lookAD() { |
|
|
|
break; |
|
|
|
} |
|
|
|
ok = 领取成功.exists(); |
|
|
|
console.log('广告ing'); |
|
|
|
times % 2 === 1 && console.log('广告ing'); |
|
|
|
sleep(2000); |
|
|
|
times++; |
|
|
|
} |
|
|
|