|
|
@ -1,5 +1,6 @@ |
|
|
|
/* eslint-disable @typescript-eslint/no-non-null-assertion */ |
|
|
|
import { DPStarter, DPTask } from './base/index'; |
|
|
|
import { clickForce, findNextElement, withMakeSure } from './lib/utils'; |
|
|
|
import { clickForce, clickForceXY, isNextElement, findPrevElement, withMakeSure } from './lib/utils'; |
|
|
|
|
|
|
|
// 弹窗关闭按钮
|
|
|
|
const modalCloseBtn = className('com.lynx.tasm.behavior.ui.LynxFlattenUI') |
|
|
@ -7,17 +8,12 @@ const modalCloseBtn = className('com.lynx.tasm.behavior.ui.LynxFlattenUI') |
|
|
|
.clickable(true) |
|
|
|
.text(''); |
|
|
|
|
|
|
|
// 可能出现的是否打开app弹窗确定按钮
|
|
|
|
const openAppModal = id('android:id/button1'); |
|
|
|
|
|
|
|
// 福利界面底部栏入口按钮
|
|
|
|
const welfareEntry = id('di1').text('福利').visibleToUser().selected(false); |
|
|
|
const welfareEntry = id('di1').text('福利').visibleToUser(); |
|
|
|
|
|
|
|
class Hongguo extends DPStarter { |
|
|
|
doInit() { |
|
|
|
console.log('初始化!'); |
|
|
|
withMakeSure(() => app.launch('com.phoenix.read'), { |
|
|
|
hasModal: [() => openAppModal.findOne(500), () => modalCloseBtn.findOne(500)], // 有可能出现的弹窗
|
|
|
|
withMakeSure('打开红果', () => app.launch('com.phoenix.read'), { |
|
|
|
landOver: [() => welfareEntry.findOne(500)] // 确认是否到达目的页
|
|
|
|
}); |
|
|
|
const widget = welfareEntry.findOne(500); |
|
|
@ -27,30 +23,160 @@ class Hongguo extends DPStarter { |
|
|
|
|
|
|
|
const hongguo = new Hongguo(); |
|
|
|
|
|
|
|
const task1 = new DPTask(hongguo); |
|
|
|
const task1 = new DPTask(hongguo, '新人见面礼'); |
|
|
|
const task2 = new DPTask(hongguo, '日常福利-签到'); |
|
|
|
const task3 = new DPTask(hongguo, '看广告视频'); |
|
|
|
const task4 = new DPTask(hongguo, '看短剧'); |
|
|
|
|
|
|
|
// 新人见面礼立即领取
|
|
|
|
task1.run(() => { |
|
|
|
const startBtn = className('com.lynx.tasm.behavior.ui.text.FlattenUIText').textContains('立即领取').visibleToUser(); |
|
|
|
const startBtn = className('com.lynx.tasm.behavior.ui.text.FlattenUIText') |
|
|
|
.boundsInside(0, 0, device.width / 2, device.height / 2) |
|
|
|
.text('立即领取') |
|
|
|
.visibleToUser(); |
|
|
|
const getBtn = className('com.lynx.tasm.behavior.ui.text.FlattenUIText').text('立即领取').visibleToUser(); |
|
|
|
const getGoldNext = className('com.lynx.tasm.behavior.ui.text.FlattenUIText').text('金币奖励可在「福利」查看').visibleToUser(); |
|
|
|
const overBtn = className('com.lynx.tasm.behavior.ui.text.FlattenUIText').textContains('明日再来').visibleToUser(); |
|
|
|
console.log('task1 新人见面礼立即领取'); |
|
|
|
const overBtn = className('com.lynx.tasm.behavior.ui.text.FlattenUIText').text('明日再来').visibleToUser(); |
|
|
|
console.log('task1'); |
|
|
|
|
|
|
|
withMakeSure(() => clickForce(startBtn.findOne(500)), { |
|
|
|
landOver: [() => modalCloseBtn.findOne(500), () => getGoldNext.findOne(500)] // 确认是否到达目的页
|
|
|
|
}); |
|
|
|
const stepBtn1 = withMakeSure( |
|
|
|
'立即领取', |
|
|
|
() => { |
|
|
|
clickForce(startBtn.findOne(500)); |
|
|
|
return startBtn; |
|
|
|
}, |
|
|
|
{ |
|
|
|
landOver: [() => modalCloseBtn.findOne(500), () => getGoldNext.findOne(500)], // 确认是否到达目的页
|
|
|
|
retry: 2 |
|
|
|
} |
|
|
|
); |
|
|
|
|
|
|
|
if (stepBtn1) { |
|
|
|
if (overBtn.findOne(500)) { |
|
|
|
return clickForce(overBtn.findOne(500)); |
|
|
|
} |
|
|
|
withMakeSure('立即领取inModal', () => clickForce(getBtn.findOne(500)), { |
|
|
|
landOver: [ |
|
|
|
() => modalCloseBtn.findOne(500), |
|
|
|
() => isNextElement(overBtn, getGoldNext, 'com.lynx.tasm.behavior.ui.text.FlattenUIText') |
|
|
|
] // 确认是否到达目的页
|
|
|
|
}); |
|
|
|
|
|
|
|
if (overBtn.findOne(500)) { |
|
|
|
return clickForce(overBtn.findOne(500)); |
|
|
|
} |
|
|
|
}); |
|
|
|
|
|
|
|
withMakeSure(() => clickForce(startBtn.findOne(500)), { |
|
|
|
landOver: [ |
|
|
|
() => modalCloseBtn.findOne(500), |
|
|
|
() => findNextElement(overBtn, getGoldNext, 'com.lynx.tasm.behavior.ui.text.FlattenUIText') |
|
|
|
] // 确认是否到达目的页
|
|
|
|
task2.run(() => { |
|
|
|
console.log('task2'); |
|
|
|
try { |
|
|
|
const 日常福利区域 = className('com.lynx.tasm.behavior.ui.text.FlattenUIText').text('日常福利').visibleToUser().findOne(500)!; |
|
|
|
swipe(日常福利区域.bounds().centerX(), 日常福利区域.bounds().centerY(), 日常福利区域.bounds().centerX(), 0, 500); |
|
|
|
} catch (e) { |
|
|
|
console.log(e); |
|
|
|
} |
|
|
|
const 签到Btn = 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').textContains('立即签到').visibleToUser(); |
|
|
|
const 看视频再领 = className('com.lynx.tasm.behavior.ui.text.UIText').textContains('看视频最高再领').visibleToUser(); |
|
|
|
|
|
|
|
if (已签到.findOne(500)) { |
|
|
|
return; |
|
|
|
} |
|
|
|
withMakeSure('签到', () => clickForce(签到Btn.findOne(500)), { |
|
|
|
landOver: [() => modalCloseBtn.findOne(500)], // 确认是否到达目的页
|
|
|
|
retry: 2 |
|
|
|
}); |
|
|
|
clickForce(立即签到.findOne(1500)); |
|
|
|
clickForce(看视频再领.findOne(1500), false); |
|
|
|
|
|
|
|
lookAD(); |
|
|
|
clickForce(modalCloseBtn.findOne(1500)); |
|
|
|
}); |
|
|
|
|
|
|
|
return clickForce(overBtn.findOne(500)); |
|
|
|
task3.run(() => { |
|
|
|
try { |
|
|
|
const 日常福利区域 = className('com.lynx.tasm.behavior.ui.text.FlattenUIText').text('日常福利').visibleToUser().findOne(500)!; |
|
|
|
swipe(日常福利区域.bounds().centerX(), 日常福利区域.bounds().centerY(), 日常福利区域.bounds().centerX(), 0, 500); |
|
|
|
} catch (e) {} |
|
|
|
const 立即领取 = className('com.lynx.tasm.behavior.ui.text.FlattenUIText').textContains('立即领取').visibleToUser(); |
|
|
|
clickForce(立即领取.findOne(500)); |
|
|
|
lookAD(); |
|
|
|
}); |
|
|
|
|
|
|
|
task4.run(() => { |
|
|
|
try { |
|
|
|
const 日常福利区域 = className('com.lynx.tasm.behavior.ui.text.FlattenUIText').text('日常福利').visibleToUser().findOne(500)!; |
|
|
|
swipe(日常福利区域.bounds().centerX(), 日常福利区域.bounds().centerY(), 日常福利区域.bounds().centerX(), 0, 500); |
|
|
|
} catch (e) {} |
|
|
|
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 current立即领取 = findPrevElement(再攒, 'com.lynx.tasm.behavior.ui.text.FlattenUIText'); |
|
|
|
clickForce(current立即领取); |
|
|
|
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: [() => modalCloseBtn.findOne(500)], // 确认是否到达目的页
|
|
|
|
retry: 2 |
|
|
|
}); |
|
|
|
if (看视频再领.exists()) { |
|
|
|
clickForce(看视频再领.findOne(1500), false); |
|
|
|
lookAD(); |
|
|
|
} |
|
|
|
} |
|
|
|
clickForce(modalCloseBtn.findOne(1500)); |
|
|
|
clickForce(去看剧.findOne(500)); |
|
|
|
} |
|
|
|
if (!追剧.exists()) { |
|
|
|
looking = false; |
|
|
|
} |
|
|
|
sleep(30000); |
|
|
|
console.log(`已经看了${(new Date().getTime() - startTime) / 1000 / 60}分钟`); |
|
|
|
// 8小时结束
|
|
|
|
if (new Date().getTime() - startTime > 1000 * 60 * 60 * 8) { |
|
|
|
looking = false; |
|
|
|
} |
|
|
|
} |
|
|
|
}); |
|
|
|
|
|
|
|
function lookAD() { |
|
|
|
const 领取成功 = className('com.lynx.tasm.behavior.ui.text.FlattenUIText').text('领取成功').visibleToUser(); |
|
|
|
const 再次领取奖励 = className('com.lynx.tasm.behavior.ui.text.FlattenUIText').text('领取奖励').visibleToUser(); |
|
|
|
sleep(5000); |
|
|
|
let ok = false; |
|
|
|
while (!ok) { |
|
|
|
ok = 领取成功.exists(); |
|
|
|
console.log('广告ing'); |
|
|
|
sleep(2000); |
|
|
|
} |
|
|
|
const bounds = 领取成功.findOne(500)!.bounds(); |
|
|
|
click(bounds.right + 5, bounds.top + 5); |
|
|
|
sleep(1000); |
|
|
|
if (再次领取奖励.exists()) { |
|
|
|
clickForce(再次领取奖励.findOne(500), false); |
|
|
|
lookAD(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
hongguo.start(); |
|
|
|