淘宝喵果总动员自动做任务脚本
生活随笔
收集整理的這篇文章主要介紹了
淘宝喵果总动员自动做任务脚本
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
const VERSION = '20221111-miao'if (!auto.service) {toast('無障礙服務未啟動!退出!')exit()
}let showVersion = function () {console.log('當前版本:' + VERSION)console.log('https://github.com/monsternone/tmall-miao')toast('當前版本:' + VERSION)
}// 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()
showVersion()
console.log('開始完成喵果任務...')
console.log('按音量下鍵停止')device.keepScreenDim(60 * 60 * 1000)function registerKey() {try {events.observeKey()} catch (err) {console.log('監聽音量鍵停止失敗,應該是無障礙權限出錯,請關閉軟件后臺任務重新運行。')console.log('如果還是不行可以重啟手機嘗試。')quit()}events.onKeyDown('volume_down', function (event) {console.log('喵果任務腳本停止了')console.log('請手動切換回主頁面')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 = 0while (c < timeout / 50) {let result = findF.find()if (result.nonEmpty()) return resultsleep(50)c++}return null}// 自定義一個findTextDescMatchesTimeoutfunction findTextDescMatchesTimeout(reg, timeout) {let c = 0while (c < timeout / 50) {let result = textMatches(reg).findOnce() || descMatches(reg).findOnce()if (result) return resultsleep(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, contenttry {taskName = jumpButtons[i].parent().child(0).child(0).text()content = jumpButtons[i].parent().child(0).child(1).child(0).text()} catch (err) {console.log(err)console.log('使用第二種方法嘗試')try {content = jumpButtons[i].parent().child(0).child(1).text()console.log('成功,繼續任務')}catch(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 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) // 等待開始sleep(5000)let finish_c = 0while (finish_c < 300) { // 0.1 * 300 = 30 秒,防止死循環if (textMatches(/.*下拉瀏覽.*/).exists()) {console.log('進行模擬滑動')swipe(device.width / 2, device.height - 200, device.width / 2 + 20, device.height - 500, 2000)}let finish_reg = /.*任務.*?完成[\s\S]*?|.*失敗.*|.*上限.*|.*開小差.*|.*喵果已發放[\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}if (text('寶貝口袋').exists()) {let cart = text('購物車').findOnce()let x = cart.bounds().rightlet y = cart.bounds().topconsole.log('關閉直播購物車')click(x, y-100)}sleep(100)finish_c++}if (finish_c > 49) {console.log('未檢測到任務完成標識。返回。')// console.log('如果你認為這是一個bug請截圖反饋。')// console.log('一般情況下,二次運行腳本即可。')// console.log('請手動切換回主頁面')// device.cancelKeepingAwake()// quit()back()sleep(1000)// TODO: 返回檢測if (!textContains('果倉等級').findOne(5000)) {console.log('似乎沒有返回,二次嘗試')back()}return}console.log('任務結束,返回')back()sleep(1000)if (!textContains('果倉等級').findOne(5000)) {if (currentActivity() == 'com.taobao.tao.TBMainActivity') {console.log('返回到了主頁,嘗試重新進入任務')id('com.taobao.taobao:id/rv_main_container').findOnce().child(3).child(0).click()} else {console.log('似乎沒有返回,二次嘗試')back()}}}try {if (autoOpen) {// 打開淘寶活動頁面console.log('正在打開淘寶...')var url = 'pages.tmall.com/wow/z/hdwk/2022d11/singlegame?disableNav=YES&qd_from=tbsybutton'app.startActivity({action: "VIEW",data: "taobao://" + url})sleep(2000)console.log('等待頁面加載...')textContains('去賺能量').findOne(20000)console.log('準備打開任務列表,第一次啟動頁面等待10秒加載')sleep(10000)let c = textContains('去賺能量').findOne(1000)if (c) {console.log('使用默認方法嘗試打開任務列表')c.click()sleep(1000)c.click()console.log('已點擊,未能打開建議手動點擊一下任務列表。此問題并非bug,和網絡以及設備性能有關。')console.log('檢測任務列表,準備進行二次嘗試')} else {throw '無法找到任務列表入口'}if (!textContains('果倉等級').findOne(8000)) {console.log('默認方式打開失敗,二次嘗試')console.log('首先檢測彈窗')for (let i = 0; i < 2 && text('關閉').findOne(2000); i++) { // 關閉彈窗console.log('檢測到彈窗,關閉')click('關閉')sleep(2000)}console.log('已試圖自動關閉彈窗。有未能自動關閉的彈窗請手動關閉')sleep(5000)// let right = c.bounds().right// let left = c.bounds().left// let top = c.bounds().top// let bottom = c.bounds().bottom// click(random(right,left), random(top, bottom))click(c.bounds().centerX(), c.bounds().centerY())console.log('已點擊,等待任務列表出現')if (!textContains('果倉等級').findOne(8000)) {throw '無法打開任務列表'}}} else {console.log('請在30秒內打開淘寶活動頁,并打開任務列表')if (textContains('果倉等級').findOne(30000)) {console.log('已打開,繼續任務')} else {console.log('未能檢測到任務列表,退出')quit()}}console.log('準備搜索任務')sleep(2000)} catch (err) {console.log(err)console.log('無法進入任務列表')quit()}while (true) {console.log('尋找任務入口...')var jumpButton = findTask()if (jumpButton == null) {// 沒有任務之后領取獎勵var awardButtonFind = textMatches(/立即領取|領取獎勵/)var awardButtons = findTimeout(awardButtonFind, 10000)if (awardButtons) {for (var i = 0; i < awardButtons.length; i++) {console.log('領取累計任務獎勵')awardButtons[i].click()console.log('等待5秒再次領取...')sleep(5000)}}console.log('沒找到合適的任務。也許任務已經全部做完了。退出。互動任務不會自動完成。')console.log('請手動切換回主頁面')alert('任務已完成', '別忘了在腳本主頁領取雙十一紅包!互動任務需要手動完成。')quit()}if (jumpButton[0].match('去瀏覽店鋪領能量')) {console.log('進行瀏覽店鋪任務')jumpButton[1].click()while (!textContains('任務完成').exists()) {console.log('進入店鋪瀏覽')text('逛店最多').findOne(15000).parent().click()liulan()sleep(2000)}back()} else if (jumpButton[0].match(/.*玩游戲.*|.*瀏覽餐飲卡券.*|.*加油賽.*|.*賺星星.*/)) {console.log('進行' + jumpButton[0] + '任務,10秒后返回')jumpButton[1].click()sleep(10000)back()} else if (jumpButton[0].match(/領現金/)) {console.log('進行' + jumpButton[0] + '任務')jumpButton[1].click()let into = text('打開鏈接').findOne(10000)if (!into) {console.log('無法找到進入領現金的按鈕!')quit()}into.click()liulan()} else {console.log('進行' + jumpButton[0] + '任務')jumpButton[1].click()liulan()}console.log('等待頁面刷新...')sleep(2000)}
} catch (err) {device.cancelKeepingAwake()if (err.toString() != 'JavaException: com.stardust.autojs.runtime.exception.ScriptInterruptedException: null') {console.error(err)}showVersion()
}
總結
以上是生活随笔為你收集整理的淘宝喵果总动员自动做任务脚本的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mip-html自动跳转页面,百度MIP
- 下一篇: acme申请证书报错:Please up