|
禁止求评分、诱导评分、互刷评分、互刷悬赏值,违规者封号处理。
禁止发布推广、邀请码、邀请链接、二维码或者有利益相关的任何推广行为。
所有非原创软件请发布在【精品软件区】,发帖必须按照本版块版规格式发帖。
将源码保存为JS文件,需要在AutoJS(论坛或者百度搜索AutoJS)上运行!
1、天猫喵果总动员源码
[JavaScript] 纯文本查看 复制代码 if (!auto.service) {
toast('无障碍服务未启动!退出!')
exit()
}
// alert('请把手机放稳,不要摇晃!', '不然有时候会跳出合伙赢喵果,导致任务阻塞')
function getSetting() {
let indices = []
autoOpen && indices.push(0)
autoMute && indices.push(1)
indices.push(2)
let settings = dialogs.multiChoice('任务设置', ['自动打开淘宝进入活动。多开或任务列表无法自动打开时取消勾选(注意,分身运行淘宝大概率导致任务收益变为100)', '自动调整媒体音量为0。以免直播任务发出声音,首次选择需要修改系统设置权限', '此选项用于保证选择的处理,勿动!'], indices)
if (settings.length == 0) {
toast('取消选择,任务停止')
exit()
}
if (settings.indexOf(0) != -1) {
storage.put('autoOpen', true)
autoOpen = true
} else {
storage.put('autoOpen', false)
autoOpen = false
}
if (settings.indexOf(1) != -1) {
storage.put('autoMute', true)
autoMute = true
} else {
storage.put('autoMute', false)
autoMute = false
}
}
let storage = storages.create("tb_task");
let autoOpen = storage.get('autoOpen', true)
let autoMute = storage.get('autoMute', true)
getSetting()
if (autoMute) {
try {
device.setMusicVolume(0)
toast('成功设置媒体音量为0')
} catch (err) {
alert('首先需要开启权限,请开启后再次运行脚本')
exit()
}
}
console.show()
console.log('开始完成喵果任务...')
console.log('按音量下键停止')
device.keepScreenDim(60 * 60 * 1000)
let startCoin;
function registerKey() {
try {
events.observeKey()
} catch (err) {
console.log('监听音量键停止失败,应该是无障碍权限出错,请关闭软件后台任务重新运行。')
console.log('如果还是不行可以重启手机尝试。')
quit()
}
events.onKeyDown('volume_down', function (event) {
console.log('喵果任务脚本停止了')
console.log('请手动切换回主页面')
if (startCoin) {
console.log('本次任务开始时有', startCoin, '喵果')
}
device.cancelKeepingAwake()
exit()
})
}
threads.start(registerKey)
// 全局try catch,应对无法显示报错
try {
// 自定义去取消亮屏的退出方法
function quit() {
device.cancelKeepingAwake()
exit()
}
// 自定义一个findTimeout,find_f是原本的查询器 text('sss').find()
function findTimeout(findF, timeout) {
let c = 0
while (c < timeout / 50) {
let result = findF.find()
if (result.nonEmpty()) return result
sleep(50)
c++
}
return null
}
// 自定义一个findTextDescMatchesTimeout
function findTextDescMatchesTimeout(reg, timeout) {
let c = 0
while (c < timeout / 50) {
let result = textMatches(reg).findOnce() || descMatches(reg).findOnce()
if (result) return result
sleep(50)
c++
}
return null
}
// 查找任务按钮
function findTask() {
var jumpButtonFind = textMatches(/去浏览|去搜索|去完成|去签到|逛一逛|去逛逛|去观看|去参赛/) // 找进入任务的按钮,10秒
var jumpButtons = findTimeout(jumpButtonFind, 10000)
if (!jumpButtons) {
return null
}
for (var i = 0; i < jumpButtons.length; i++) {
var taskName, content
try {
taskName = jumpButtons[i].parent().child(0).child(0).text()[/i]
[i] content = jumpButtons.parent().child(0).child(1).child(0).text()[/i]
[i] } catch (err) {[/i]
[i] console.log(err)[/i]
[i] console.log('使用第二种方法尝试')[/i]
[i] try {[/i]
[i] content = jumpButtons.parent().child(0).child(1).text()[/i]
[i] console.log('成功,继续任务')[/i]
[i] }[/i]
[i] catch (err) {[/i]
[i] continue[/i]
[i] }[/i]
[i] }[/i]
[i] if (taskName) {[/i]
[i] if (taskName.match(/签到/)) {[/i]
[i] console.log('进行签到任务')[/i]
[i] sleep(1000)[/i]
[i] jumpButtons.click()[/i]
[i] sleep(8000)[/i]
[i] return findTask()[/i]
[i] }[/i]
[i] if (!(taskName.match(/淘金币|提醒|开通|续费|乐园|话费|斗地主|消消乐|流浪猫|开88|扔喵果|占领|邀请|登录|组队|参与|施肥|浇水|特价版|小鸡|消除|穿搭|森林|点淘|人生|我的淘宝|庄园|支付宝|点击人物/) || content.match(/小互动/))) {[/i]
[i] return [taskName, jumpButtons][/i]
[i] }[/i]
[i] }[/i]
[i] }[/i]
[i] return null[/i]
[i] }[/i]
[i] function liulan() {[/i]
[i] // if (textMatches(/.*浏览.*/).findOne(10000)) { // 等待浏览出现[/i]
[i] // let v = className('android.support.v7.widget.RecyclerView').findOnce() // 滑动[/i]
[i] // if (v) {[/i]
[i] // sleep(1000)[/i]
[i] // v.scrollForward()[/i]
[i] // }[/i]
[i] // }[/i]
[i] // textMatches(/.*浏览得奖励.*/).findOne(15000) // 等待开始[/i]
[i] let finish_c = 0[/i]
[i] let countdown = 0[/i]
[i] console.log('开始检测任务完成,部分控件无法检测,会在30秒后自动返回,请耐心等待。')[/i]
[i] while (finish_c < 250) { // 0.1 * 250 = 25 秒,防止死循环[/i]
[i] if (textMatches(/.*下拉浏览.*/).exists()) {[/i]
[i] console.log('进行模拟滑动')[/i]
[i] swipe(device.width / 2, device.height - 200, device.width / 2 + 20, device.height - 500, 2000)[/i]
[i] finish_c = finish_c + 10[/i]
[i] }[/i]
[i] let finish_reg = /.*任务.*?完成[\s\S]*?|.*失败.*|.*上限.*|.*开小差.*|.*喵果已发放[\s\S]*|.*下单可获得[\s\S]*/[/i]
[i] if (textMatches(finish_reg).exists() || descMatches(finish_reg).exists()) { // 等待已完成出现,有可能失败[/i]
[i] break[/i]
[i] }[/i]
[i] if (countdown == 0 && idContains('countdown').exists()) {[/i]
[i] countdown = 1[/i]
[i] break[/i]
[i] }[/i]
[i] if (textMatches(/.*休息会呗.*/).exists()) {[/i]
[i] alert('触发淘宝验证', '请手动验证后返回淘宝首页,重新执行任务')[/i]
[i] console.log('异常退出。')[/i]
[i] quit()[/i]
[i] }[/i]
[i] if (textContains('互动奖励').exists() ||[/i]
[i] descContains('互动奖励').exists()) {[/i]
[i] console.log('跳过互动任务')[/i]
[i] break[/i]
[i] }[/i]
[i] if (text('手机淘宝触屏版').exists()) {[/i]
[i] console.log('页面未加载,返回')[/i]
[i] break[/i]
[i] }[/i]
[i] if (text('宝贝口袋').exists()) {[/i]
[i] let cart = text('购物车').findOnce()[/i]
[i] let x = cart.bounds().right[/i]
[i] let y = cart.bounds().top[/i]
[i] console.log('关闭直播购物车')[/i]
[i] click(x, y - 100)[/i]
[i] }[/i]
[i] if (finish_c > 100 && finish_c % 10 == 0) {[/i]
[i] console.log('滑动防止页面卡顿')[/i]
[i] swipe(device.width / 2, device.height - 200, device.width / 2 + 20, device.height - 500, 500)[/i]
[i] finish_c = finish_c + 5[/i]
[i] }[/i]
[i] sleep(100)[/i]
[i] finish_c++[/i]
[i] }[/i]
[i] if (countdown) {[/i]
[i] console.log('出现图片类型标识,使用新方法完成,18秒后视为任务完成,自动返回')[/i]
[i] sleep(18000)[/i]
[i] }[/i]
[i] if (finish_c > 249) {[/i]
[i] console.log('未检测到任务完成标识。返回。')[/i]
[i] // console.log('如果你认为这是一个bug请截图反馈。')[/i]
[i] // console.log('一般情况下,二次运行脚本即可。')[/i]
[i] // console.log('请手动切换回主页面')[/i]
[i] // device.cancelKeepingAwake()[/i]
[i] // quit()[/i]
[i] if (textContains('果仓等级').exists()) {[/i]
[i] console.log('店铺已主动返回,继续任务')[/i]
[i] return[/i]
[i] }[/i]
[i] back()[/i]
[i] sleep(1000)[/i]
[i] // TODO: 返回检测[/i]
[i] if (!textContains('果仓等级').findOne(8000)) {[/i]
[i] console.log('似乎没有返回,二次尝试')[/i]
[i] back()[/i]
[i] }[/i]
[i] return[/i]
[i] }[/i]
[i] console.log('任务结束,返回')[/i]
[i] back()[/i]
[i] sleep(1000)[/i]
[i] if (!textContains('果仓等级').findOne(5000)) {[/i]
[i] if (currentActivity() == 'com.taobao.tao.TBMainActivity') {[/i]
[i] console.log('返回到了主页,尝试重新进入任务')[/i]
[i] id('com.taobao.taobao:id/rv_main_container').findOnce().child(3).child(0).click()[/i]
[i] } else {[/i]
[i] console.log('似乎没有返回,二次尝试')[/i]
[i] back()[/i]
[i] }[/i]
[i] }[/i]
[i] }[/i]
[i] // 喵果数量[/i]
[i] function getCoin() {[/i]
[i] console.log('获取喵果数量')[/i]
[i] try {[/i]
[i] let e = textContains('当前喵果').findOnce()[/i]
[i] let num = e.text().match(/当前喵果(\d*)/)[1][/i]
[i] console.log('当前共有', num, '喵果')[/i]
[i] return num[/i]
[i] } catch (err) {[/i]
[i] console.log(err)[/i]
[i] console.log('获取喵果数量错误,不影响脚本运行')[/i]
[i] return null[/i]
[i] }[/i]
[i] }[/i]
[i] try {[/i]
[i] if (autoOpen) {[/i]
[i] // 打开淘宝活动页面[/i]
[i] console.log('正在打开淘宝...')[/i]
[i] var url = 'pages.tmall.com/wow/z/hdwk/2022d11/singlegame?disableNav=YES&qd_from=tbsybutton&ali_trackid=2:mm_1391100045_2014900139_110830750257'[/i]
[i] app.startActivity({[/i]
[i] action: "VIEW",[/i]
[i] data: "taobao://" + url[/i]
[i] })[/i]
[i] sleep(2000)[/i]
[i] console.log('等待页面加载...')[/i]
[i] textContains('去赚能量').findOne(20000)[/i]
[i] console.log('准备打开任务列表,第一次启动页面等待10秒加载')[/i]
[i] sleep(10000)[/i]
[i] let c = textContains('去赚能量').findOne(1000)[/i]
[i] if (c) {[/i]
[i] console.log('使用默认方法尝试打开任务列表')[/i]
[i] c.click()[/i]
[i] sleep(1000)[/i]
[i] c.click()[/i]
[i] console.log('已点击,未能打开建议手动点击一下任务列表。此问题并非bug,和网络以及设备性能有关。')[/i]
[i] console.log('检测任务列表,准备进行二次尝试')[/i]
[i] } else {[/i]
[i] throw '无法找到任务列表入口'[/i]
[i] }[/i]
[i] if (!textContains('果仓等级').findOne(8000)) {[/i]
[i] console.log('默认方式打开失败,二次尝试')[/i]
[i] console.log('首先检测弹窗')[/i]
[i] for (let i = 0; i < 2 && text('关闭').findOne(2000); i++) { // 关闭弹窗[/i]
[i] console.log('检测到弹窗,关闭')[/i]
[i] click('关闭')[/i]
[i] sleep(2000)[/i]
[i] }[/i]
[i] console.log('已试图自动关闭弹窗。有未能自动关闭的弹窗请手动关闭')[/i]
[i] sleep(5000)[/i]
[i] // let right = c.bounds().right[/i]
[i] // let left = c.bounds().left[/i]
[i] // let top = c.bounds().top[/i]
[i] // let bottom = c.bounds().bottom[/i]
[i] // click(random(right,left), random(top, bottom))[/i]
[i] click(c.bounds().centerX(), c.bounds().centerY())[/i]
[i] console.log('已点击,等待任务列表出现')[/i]
[i] if (!textContains('果仓等级').findOne(8000)) {[/i]
[i] throw '无法打开任务列表'[/i]
[i] }[/i]
[i] }[/i]
[i] } else {[/i]
[i] console.log('请在30秒内打开淘宝活动页,并打开任务列表')[/i]
[i] if (textContains('果仓等级').findOne(30000)) {[/i]
[i] console.log('已打开,继续任务')[/i]
[i] } else {[/i]
[i] console.log('未能检测到任务列表,退出')[/i]
[i] quit()[/i]
[i] }[/i]
[i] }[/i]
[i] console.log('准备搜索任务')[/i]
[i] sleep(2000)[/i]
[i] } catch (err) {[/i]
[i] console.log(err)[/i]
[i] console.log('无法进入任务列表,如果你认为这是bug,请截图反馈。注意!1级没法做任务,请先升到2级!')[/i]
[i] quit()[/i]
[i] }[/i]
[i] startCoin = getCoin()[/i]
[i] while (true) {[/i]
[i] console.log('寻找任务入口...')[/i]
[i] var jumpButton = findTask()[/i]
[i] if (jumpButton == null) {[/i]
[i] // 没有任务之后领取奖励[/i]
[i] var awardButtonFind = textMatches(/立即领取|领取奖励/)[/i]
[i] var awardButtons = findTimeout(awardButtonFind, 10000)[/i]
[i] if (awardButtons) {[/i]
[i] for (var i = 0; i < awardButtons.length; i++) {[/i]
[i] console.log('领取累计任务奖励')[/i]
[i] awardButtons.click()[/i]
[i] console.log('等待5秒再次领取...')[/i]
[i] sleep(5000)[/i]
[i] }[/i]
[i] }[/i]
[i] const endCoin = getCoin()[/i]
[i] console.log('没找到合适的任务。也许任务已经全部做完了。退出。互动任务不会自动完成。')[/i]
[i] console.log('请手动切换回主页面')[/i]
[i] if (startCoin && endCoin) {[/i]
[i] console.log('本次任务共获得', (endCoin - startCoin), '喵果')[/i]
[i] }[/i]
[i] alert('任务已完成', '别忘了在脚本主页领取双十一红包!互动任务需要手动完成。')[/i]
[i] quit()[/i]
[i] }[/i]
[i] if (jumpButton[0].match('去浏览店铺领能量')) {[/i]
[i] console.log('进行浏览店铺任务')[/i]
[i] jumpButton[1].click()[/i]
[i] while (!textContains('任务完成').exists()) {[/i]
[i] console.log('进入店铺浏览')[/i]
[i] text('逛店最多').findOne(15000).parent().click()[/i]
[i] liulan()[/i]
[i] sleep(2000)[/i]
[i] }[/i]
[i] back()[/i]
[i] } else if (jumpButton[0].match(/.*玩游戏.*|.*浏览餐饮卡券.*|.*加油赛.*|.*赚星星.*/)) {[/i]
[i] console.log('进行' + jumpButton[0] + '任务,10秒后返回')[/i]
[i] jumpButton[1].click()[/i]
[i] sleep(10000)[/i]
[i] back()[/i]
[i] } else if (jumpButton[0].match(/领现金/)) {[/i]
[i] console.log('进行' + jumpButton[0] + '任务')[/i]
[i] jumpButton[1].click()[/i]
[i] let into = text('打开链接').findOne(10000)[/i]
[i] if (!into) {[/i]
[i] console.log('无法找到进入领现金的按钮!')[/i]
[i] quit()[/i]
[i] }[/i]
[i] into.click()[/i]
[i] liulan()[/i]
[i] } else {[/i]
[i] console.log('进行' + jumpButton[0] + '任务')[/i]
[i] jumpButton[1].click()[/i]
[i] liulan()[/i]
[i] }[/i]
[i] console.log('等待页面刷新...')[/i]
[i] sleep(2000)[/i]
[i] }[/i]
[i]} catch (err) {[/i]
[i] device.cancelKeepingAwake()[/i]
[i] if (err.toString() != 'JavaException: com.stardust.autojs.runtime.exception.ScriptInterruptedException: null') {[/i]
[i] console.error(err)[/i]
[i] }[/i]
[i]}
2、天猫会场任务源码
[JavaScript] 纯文本查看 复制代码 if (!auto.service) {[/i]
[i] toast('无障碍服务未启动!退出!')[/i]
[i] exit()[/i]
[i]}[/i]
[i]// alert('请把手机放稳,不要摇晃!', '不然有时候会跳出合伙赢喵币,导致任务阻塞')[/i]
[i]function getSetting() {[/i]
[i] let indices = [][/i]
[i] autoOpen && indices.push(0)[/i]
[i] autoMute && indices.push(1)[/i]
[i] indices.push(2)[/i]
[i] let settings = dialogs.multiChoice('任务设置', ['自动打开淘宝进入活动。多开或任务列表无法自动打开时取消勾选(注意,分身运行淘宝大概率导致任务收益变为100)', '自动调整媒体音量为0。以免直播任务发出声音,首次选择需要修改系统设置权限', '此选项用于保证选择的处理,勿动!'], indices)[/i]
[i] if (settings.length == 0) {[/i]
[i] toast('取消选择,任务停止')[/i]
[i] exit()[/i]
[i] }[/i]
[i] if (settings.indexOf(0) != -1) {[/i]
[i] storage.put('autoOpen', true)[/i]
[i] autoOpen = true[/i]
[i] } else {[/i]
[i] storage.put('autoOpen', false)[/i]
[i] autoOpen = false[/i]
[i] }[/i]
[i] if (settings.indexOf(1) != -1) {[/i]
[i] storage.put('autoMute', true)[/i]
[i] autoMute = true[/i]
[i] } else {[/i]
[i] storage.put('autoMute', false)[/i]
[i] autoMute = false[/i]
[i] }[/i]
[i]}[/i]
[i]let storage = storages.create("tb_task");[/i]
[i]let autoOpen = storage.get('autoOpen', true)[/i]
[i]let autoMute = storage.get('autoMute', true)[/i]
[i]getSetting()[/i]
[i]if (autoMute) {[/i]
[i] try {[/i]
[i] device.setMusicVolume(0)[/i]
[i] toast('成功设置媒体音量为0')[/i]
[i] } catch (err) {[/i]
[i] alert('首先需要开启权限,请开启后再次运行脚本')[/i]
[i] exit()[/i]
[i] }[/i]
[i]}[/i]
[i]console.show()[/i]
[i]console.log('开始完成能量任务...')[/i]
[i]console.log('按音量下键停止')[/i]
[i]device.keepScreenDim(60 * 60 * 1000)[/i]
[i]function registerKey() {[/i]
[i] try {[/i]
[i] events.observeKey()[/i]
[i] } catch (err) {[/i]
[i] console.log('监听音量键停止失败,应该是无障碍权限出错,请关闭软件后台任务重新运行。')[/i]
[i] console.log('如果还是不行可以重启手机尝试。')[/i]
[i] quit()[/i]
[i] }[/i]
[i] events.onKeyDown('volume_down', function (event) {[/i]
[i] console.log('喵币任务脚本停止了')[/i]
[i] console.log('请手动切换回主页面')[/i]
[i] device.cancelKeepingAwake()[/i]
[i] exit()[/i]
[i] })[/i]
[i]}[/i]
[i]threads.start(registerKey)[/i]
[i]// 全局try catch,应对无法显示报错[/i]
[i]try {[/i]
[i] // 自定义去取消亮屏的退出方法[/i]
[i] function quit() {[/i]
[i] device.cancelKeepingAwake()[/i]
[i] exit()[/i]
[i] }[/i]
[i] // 自定义一个findTimeout,find_f是原本的查询器 text('sss').find()[/i]
[i] function findTimeout(findF, timeout) {[/i]
[i] let c = 0[/i]
[i] while (c < timeout / 50) {[/i]
[i] let result = findF.find()[/i]
[i] if (result.nonEmpty()) return result[/i]
[i] sleep(50)[/i]
[i] c++[/i]
[i] }[/i]
[i] return null[/i]
[i] }[/i]
[i] // 自定义一个findTextDescMatchesTimeout[/i]
[i] function findTextDescMatchesTimeout(reg, timeout) {[/i]
[i] let c = 0[/i]
[i] while (c < timeout / 50) {[/i]
[i] let result = textMatches(reg).findOnce() || descMatches(reg).findOnce()[/i]
[i] if (result) return result[/i]
[i] sleep(50)[/i]
[i] c++[/i]
[i] }[/i]
[i] return null[/i]
[i] }[/i]
[i] // 打开任务列表[/i]
[i] function openTaskList() {[/i]
[i] let c = idContains('node_2_icon').findOne(5000)[/i]
[i] if (c) {[/i]
[i] console.log('使用默认方法尝试打开任务列表')[/i]
[i] c.click()[/i]
[i] } else {[/i]
[i] throw '无法找到任务列表入口'[/i]
[i] }[/i]
[i] if (!textContains('task_detail').findOne(8000)) {[/i]
[i] console.log('默认方式打开失败,二次尝试')[/i]
[i] console.log('首先检测弹窗')[/i]
[i] try {[/i]
[i] idContains('J_wfdlgwrap_6').findOnce().child(0).click()[/i]
[i] sleep(1000)[/i]
[i] } catch (err) {[/i]
[i] console.log(err)[/i]
[i] console.log('领红包弹窗关闭失败。此问题不影响运行')[/i]
[i] }[/i]
[i] try {[/i]
[i] idContains('CLOSE').findOnce().click()[/i]
[i] sleep(1000)[/i]
[i] } catch (err) {[/i]
[i] console.log(err)[/i]
[i] console.log('其他弹窗关闭失败。此问题不影响运行')[/i]
[i] }[/i]
[i] console.log('出现未能自动关闭的弹窗请手动关闭')[/i]
[i] sleep(2000)[/i]
[i] // let right = c.bounds().right[/i]
[i] // let left = c.bounds().left[/i]
[i] // let top = c.bounds().top[/i]
[i] // let bottom = c.bounds().bottom[/i]
[i] // click(random(right,left), random(top, bottom))[/i]
[i] click(c.bounds().centerX(), c.bounds().centerY())[/i]
[i] console.log('已点击,等待任务列表出现')[/i]
[i] if (!idContains('node_2_icon').findOne(8000)) {[/i]
[i] throw '无法打开任务列表'[/i]
[i] }[/i]
[i] }[/i]
[i] }[/i]
[i] // 查找任务按钮[/i]
[i] function findTask() {[/i]
[i] var jumpButtonFind = textMatches(/去浏览|去完成/) // 找进入任务的按钮,10秒[/i]
[i] var jumpButtons = findTimeout(jumpButtonFind, 10000)[/i]
[i] if (!jumpButtons) {[/i]
[i] return null[/i]
[i] }[/i]
[i] for (var i = 0; i < jumpButtons.length; i++) {[/i]
[i] var taskName, content[/i]
[i] try {[/i]
[i] taskName = jumpButtons[/i][i].parent().child(1).text()
content = jumpButtons[i].parent().child(2).child(0).text()
} catch (err) {
console.log(err)
continue
}
if (taskName) {
// if (taskName.match(/签到领/)) {
// console.log('进行签到任务')
// sleep(1000)
// jumpButtons[i].click()
// sleep(8000)
// return findTask()
// }
// if (!(taskName.match(/淘金币|提醒|话费|斗地主|消消乐|流浪猫|开88|扔喵糖|占领|邀请|登录|组队|参与|施肥|浇水|特价版|小鸡|消除|穿搭|森林|点淘|人生|我的淘宝|庄园/) || content.match(/小互动/))) {
// return [taskName, jumpButtons[i]]
// }
return [taskName, jumpButtons[i]]
}
}
return null
}
function liulan() {
// if (textMatches(/.*浏览.*/).findOne(10000)) { // 等待浏览出现
// let v = className('android.support.v7.widget.RecyclerView').findOnce() // 滑动
// if (v) {
// sleep(1000)
// v.scrollForward()
// }
// }
// textMatches(/.*浏览得奖励.*/).findOne(15000) // 等待开始
let finish_c = 0
while (finish_c < 50) { // 0.5 * 50 = 25 秒,防止死循环
if (textMatches(/.*下拉浏览.*/).exists() || textContains('下滑').exists()) {
console.log('进行模拟滑动')
swipe(device.width / 2, device.height - 200, device.width / 2 + 20, device.height - 500, 2000)
}
let finish_reg = /.*任务已完成[\s\S]*|.*失败.*|.*上限.*|.*开小差.*/
if (textMatches(finish_reg).exists() || descMatches(finish_reg).exists()) { // 等待已完成出现,有可能失败
break
}
if (textMatches(/.*休息会呗.*/).exists()) {
alert('触发淘宝验证', '请手动验证后返回淘宝首页,重新执行任务')
console.log('异常退出。')
quit()
}
if (textContains('互动奖励').exists() ||
descContains('互动奖励').exists()) {
console.log('跳过互动任务')
break
}
sleep(500)
finish_c++
}
if (finish_c > 49) {
console.log('未检测到任务完成标识。返回。')
return false
}
console.log('任务完成')
return true
}
function backToList() {
console.log('返回上级')
back()
sleep(1000)
if (!idContains('node_2_icon').findOne(5000)) {
console.log('似乎没有返回,二次尝试')
back()
}
sleep(1000)
}
if (autoOpen) {
// 打开淘宝活动页面
console.log('正在打开淘宝...')
var url = 's.m.taobao.com/h5?q=红包到手88668'
app.startActivity({
action: "VIEW",
data: "taobao://" + url
})
sleep(2000)
console.log('等待页面加载...')
} else {
console.log('请在30秒内打开淘宝做任务赢红包活动页 17¥ CZ0001 S4Ikd0OWIz0¥ [url]https://m.tb.cn/h.UUI1rrI'[/url])
}
if (!idContains('node_2_icon').findOne(30000)) {
console.log('未能检测到任务页,退出')
quit()
}
console.log('已打开活动,准备搜索任务')
sleep(2000)
console.log('首先关闭弹窗')
try {
idContains('J_wfdlgwrap_6').findOnce().child(0).click()
sleep(5000)
console.log('领红包弹窗已关闭')
} catch (err) {
console.log(err)
console.log('领红包弹窗关闭失败。此问题不影响运行')
}
try {
idContains('CLOSE').findOnce().click()
sleep(2000)
console.log('其他弹窗已关闭')
} catch (err) {
console.log(err)
console.log('其他弹窗关闭失败。此问题不影响运行')
}
console.log('检测任务列表是否打开')
if (textContains('task_detail').findOne(5000)) {
console.log('先关闭列表')
idContains('close_btn').findOnce().click()
sleep(2000)
}
while (true) {
console.log('准备打开任务列表')
sleep(2000)
openTaskList()
console.log('寻找任务入口...')
var jumpButton = findTask()
if (jumpButton == null) {
console.log('没找到合适的任务。也许任务已经全部做完了。退出。互动任务不会自动完成。')
console.log('请手动切换回主页面')
alert('任务已完成', '别忘了在脚本主页领取双11红包!互动任务需要手动完成。')
quit()
}
console.log('进行' + jumpButton[0] + '任务')
sleep(2000)
if (jumpButton[0].match(/商品/)) {
jumpButton[1].click()
sleep(2000)
let count = jumpButton[0].match(/浏览(\d*)个/)[1]
console.log('等待页面')
if (!text('双11超红精选热卖').findOne(8000)) {
throw '商品页面未加载'
}
console.log('点击', count, '个商品')
let buttons = textContains('item_pic').find()
if (!buttons) {
throw '无法找到马上抢按钮,任务失败'
}
for (let i = 0; i < 10 && count > buttons.length; i++) {
console.log('商品数量不足,向下翻页', buttons.length)
scrollDown()
sleep(2000)
scrollDown()
sleep(2000)
buttons = textContains('item_pic').find()
console.log(buttons.length)
}
if (count > buttons.length) {
console.log('商品数量不足,分次完成')
count = buttons.length
}
for (let i = 0; i < count; i++) {
console.log('点击第', i + 1, '个')
sleep(2000)
buttons[i].click()
console.log('等待加载')
if (textMatches(/加入购物车|粉丝福利购/).findOne(10000) || currentActivity() == 'com.taobao.android.detail.wrapper.activity.DetailActivity') {
console.log('商品打开成功,返回')
back()
if (!text('双11超红精选热卖').findOne(10000)) {
console.log('似乎没有返回,二次尝试')
back()
}
} else {
throw '商品页未能加载'
}
}
// sleep(1000)
backToList()
} else if (jumpButton[0].match(/搜索/)) {
jumpButton[1].click()
let listView = className('android.widget.ListView').findOne(8000).child(0)
if (listView.childCount() == 1) {
listView.child(0).click()
} else {
listView.child(1).click()
}
liulan()
sleep(1000)
back()
backToList()
} else if (jumpButton[0].match(/为你推荐|主会场/)) {
jumpButton[1].click()
liulan()
} else {
jumpButton[1].click()
liulan()
// sleep(1000)
// back()
backToList()
}
console.log('等待页面刷新...')
sleep(2000)
}
} catch (err) {
device.cancelKeepingAwake()
if (err.toString() != 'JavaException: com.stardust.autojs.runtime.exception.ScriptInterruptedException: null') {
console.error(err)
}
}
|
|