搜索

查看: 3158|回复: 11

[Python] 淘宝618活动autojs版本脚本

[复制链接]
发表于 2022-6-25 22:42:52 | 显示全部楼层 |阅读模式
小老虎 2022-6-25 22:42:52 3158 11 看全部
淘宝618活动autojs版本脚本


  1. if (!auto.service) {
  2.   toast('无障碍服务未启动!退出!')
  3.   exit()
  4. }
  5. if (
  6.   confirm(
  7.     '是否需要自动调整媒体音量为0',
  8.     '以免直播任务发出声音。需要修改系统设置权限。'
  9.   )
  10. ) {
  11.   try {
  12.     device.setMusicVolume(0)
  13.     toast('成功设置媒体音量为0')
  14.   } catch (err) {
  15.     alert('首先需要开启权限,请开启后再次运行脚本')
  16.     exit()
  17.   }
  18. } else {
  19.   toast('不修改媒体音量')
  20. }

  21. console.show()
  22. // showVersion()
  23. console.log('开始完成喵糖任务...')
  24. console.log('按音量下键停止')

  25. device.keepScreenDim(60 * 60 * 1000)

  26. function registerKey() {
  27.   events.observeKey()
  28.   events.onKeyDown('volume_down', function (event) {
  29.     console.log('喵糖任务脚本停止了')
  30.     console.log('请手动切换回主页面')
  31.     device.cancelKeepingAwake()
  32.     exit()
  33.   })
  34. }
  35. threads.start(registerKey)

  36. // 全局try catch,应对无法显示报错
  37. try {
  38.   // 自定义去取消亮屏的退出方法
  39.   function quit() {
  40.     device.cancelKeepingAwake()
  41.     exit()
  42.   }

  43.   // 自定义一个findTimeout,find_f是原本的查询器 text('sss').find()
  44.   function findTimeout(findF, timeout) {
  45.     let c = 0
  46.     while (c < timeout / 50) {
  47.       let result = findF.find()
  48.       if (result.nonEmpty()) return result
  49.       sleep(50)
  50.       c++
  51.     }
  52.     return null
  53.   }

  54.   // 自定义一个findTextDescMatchesTimeout
  55.   function findTextDescMatchesTimeout(reg, timeout) {
  56.     let c = 0
  57.     while (c < timeout / 50) {
  58.       let result = textMatches(reg).findOnce() || descMatches(reg).findOnce()
  59.       if (result) return result
  60.       sleep(50)
  61.       c++
  62.     }
  63.     return null
  64.   }

  65.   // 查找任务按钮
  66.   function findTask() {
  67.     var jumpButtonFind = textMatches(
  68.       /去浏览|去搜索|去完成|签到|逛一逛|去逛逛|去观看|去参赛/
  69.     ) // 找进入任务的按钮,10秒
  70.     var jumpButtons = findTimeout(jumpButtonFind, 10000)

  71.     if (!jumpButtons) {
  72.       return null
  73.     }

  74.     for (var i = 0; i < jumpButtons.length; i++) {
  75.       var taskName, content
  76.       try {
  77.         taskName = jumpButtons[i].parent().child(0).child(0).text()
  78.         content = jumpButtons[i].parent().child(0).child(1).child(0).text()
  79.       } catch (err) {
  80.         console.log(err)
  81.         continue
  82.       }
  83.       if (taskName) {
  84.         if (taskName.match(/签到/)) {
  85.           console.log('进行签到任务')
  86.           sleep(1000)
  87.           jumpButtons[i].click()
  88.           sleep(8000)
  89.           return findTask()
  90.         }
  91.         if (
  92.           !(
  93.             taskName.match(
  94.               /淘金币|提醒|话费|斗地主|消消乐|流浪猫|开88|扔喵糖|占领|邀请|登录|组队|参与|施肥|浇水|特价版|小鸡|消除|穿搭|森林|点淘|人生|我的淘宝|庄园/
  95.             ) || content.match(/小互动/)
  96.           )
  97.         ) {
  98.           return [taskName, jumpButtons[i]]
  99.         }
  100.       }
  101.     }
  102.     return null
  103.   }

  104.   function liulan() {
  105.     // if (textMatches(/.*浏览.*/).findOne(10000)) { // 等待浏览出现
  106.     //     let v = className('android.support.v7.widget.RecyclerView').findOnce() // 滑动
  107.     //     if (v) {
  108.     //         sleep(1000)
  109.     //         v.scrollForward()
  110.     //     }
  111.     // }

  112.     textMatches(/.*浏览得奖励.*/).findOne(15000) // 等待开始

  113.     let finish_c = 0
  114.     while (finish_c < 50) {
  115.       // 0.5 * 50 = 25 秒,防止死循环
  116.       let finish_reg = /.*完成.*|.*失败.*|.*上限.*|.*开小差.*|.*发放.*/
  117.       if (
  118.         (textMatches(finish_reg).exists() ||
  119.           descMatches(finish_reg).exists() ||
  120.           textContains('任务已完成').exists() ||
  121.           textContains('喵币已发放').exists() ||
  122.           descContains('任务已完成').exists() ||
  123.           descContains('喵币已发放').exists()) &&
  124.         !text('浏览得奖励').exists()
  125.       ) {
  126.         // 等待已完成出现,有可能失败
  127.         break
  128.       }
  129.       if (textMatches(/.*休息会呗.*/).exists()) {
  130.         alert('触发淘宝验证', '请手动验证后返回淘宝首页,重新执行任务')
  131.         console.log('异常退出。')
  132.         quit()
  133.       }
  134.       if (
  135.         textContains('互动奖励').exists() ||
  136.         descContains('互动奖励').exists()
  137.       ) {
  138.         console.log('跳过互动任务')
  139.         break
  140.       }
  141.       sleep(500)
  142.       finish_c++
  143.     }

  144.     if (finish_c > 49) {
  145.       console.log('未检测到任务完成标识。返回。')
  146.       // console.log('如果你认为这是一个bug请截图反馈。')
  147.       // console.log('一般情况下,二次运行脚本即可。')
  148.       // console.log('请手动切换回主页面')
  149.       // device.cancelKeepingAwake()
  150.       // quit()
  151.       return back()
  152.     }

  153.     console.log('任务完成,返回')

  154.     // if (currentActivity() == 'com.taobao.tao.TBMainActivity') {
  155.     //     var backButton = descContains('返回618列车').findOnce() // 有可能是浏览首页,有可能无法点击
  156.     //     if (backButton) {
  157.     //         if (!backButton.parent().parent().parent().click()) {
  158.     //             back()
  159.     //         }
  160.     //     } else {
  161.     //         back()
  162.     //     }
  163.     // } else {
  164.     //     back()
  165.     // }
  166.     back()
  167.     if (!text('做任务赢奖励').findOne(5000)) {
  168.       console.log('似乎没有返回,二次尝试')
  169.       back()
  170.     }
  171.   }

  172.   // 打开淘宝活动页面
  173.   console.log('正在打开淘宝...')
  174.   var url = 'pages.tmall.com/wow/z/hdwk/20220618/gamehome?disableNav=YES'

  175.   app.startActivity({
  176.     action: 'VIEW',
  177.     data: 'taobao://' + url,
  178.   })
  179.   sleep(2000)

  180.   console.log('等待页面加载...')

  181.   try {
  182.     textMatches(/领喵币/).findOne(20000)
  183.     console.log('准备打开任务列表')
  184.     sleep(2000)
  185.     // if(click('关闭')) {
  186.     //     sleep(2000)
  187.     // }
  188.     let c = findTextDescMatchesTimeout(/领喵币/, 1000)
  189.     if (c) {
  190.       console.log('打开任务列表')
  191.       c.click()
  192.     } else {
  193.       throw '无法找到任务列表入口'
  194.     }
  195.     if (!text('做任务赢奖励').findOne(8000)) {
  196.       console.log('默认方式打开失败,二次尝试')
  197.       // let right = c.bounds().right
  198.       // let left = c.bounds().left
  199.       // let top = c.bounds().top
  200.       // let bottom = c.bounds().bottom
  201.       // click(random(right,left), random(top, bottom))
  202.       click(c.bounds().centerX(), c.bounds().centerY())
  203.       if (!text('做任务赢奖励').findOne(8000)) {
  204.         throw '无法打开任务列表'
  205.       }
  206.     }
  207.     console.log('准备搜索任务')
  208.     sleep(2000)
  209.   } catch (err) {
  210.     console.log(err)
  211.     console.log('无法进入任务列表,如果你认为这是bug,请截图反馈')
  212.     quit()
  213.   }

  214.   while (true) {
  215.     console.log('寻找任务入口...')
  216.     var jumpButton = findTask()

  217.     if (jumpButton == null) {
  218.       // 没有任务之后领取奖励
  219.       var awardButtonFind = textMatches(/立即领取/)
  220.       var awardButtons = findTimeout(awardButtonFind, 10000)

  221.       if (awardButtons) {
  222.         for (var i = 0; i < awardButtons.length; i++) {
  223.           console.log('领取累计任务奖励')
  224.           awardButtons[i].click()
  225.           console.log('等待5秒再次领取...')
  226.           sleep(5000)
  227.         }
  228.       }

  229.       console.log(
  230.         '没找到合适的任务。也许任务已经全部做完了。退出。互动任务不会自动完成。'
  231.       )
  232.       console.log('请手动切换回主页面')
  233.       alert('任务已完成', '别忘了在脚本主页领取618红包!互动任务需要手动完成。')
  234.       quit()
  235.     }

  236.     if (jumpButton[0].match('去浏览店铺领能量')) {
  237.       console.log('进行浏览店铺任务')
  238.       jumpButton[1].click()
  239.       while (!textContains('任务完成').exists()) {
  240.         console.log('进入店铺浏览')
  241.         text('逛店最多').findOne(15000).parent().click()
  242.         liulan()
  243.         sleep(2000)
  244.       }
  245.       back()
  246.     } else if (
  247.       jumpButton[0].match(/.*玩游戏.*|.*浏览餐饮卡券.*|.*加油赛.*|.*赚星星.*/)
  248.     ) {
  249.       console.log('进行' + jumpButton[0] + '任务,10秒后返回')
  250.       jumpButton[1].click()
  251.       sleep(10000)
  252.       back()
  253.     } else if (jumpButton[0].match(/领现金/)) {
  254.       console.log('进行' + jumpButton[0] + '任务')
  255.       jumpButton[1].click()
  256.       let into = text('打开链接').findOne(10000)
  257.       if (!into) {
  258.         console.log('无法找到进入领现金的按钮!')
  259.         quit()
  260.       }
  261.       into.click()
  262.       liulan()
  263.     } else {
  264.       console.log('进行' + jumpButton[0] + '任务')
  265.       jumpButton[1].click()
  266.       liulan()
  267.     }

  268.     console.log('等待页面刷新...')
  269.     sleep(2000)
  270.   }
  271. } catch (err) {
  272.   device.cancelKeepingAwake()
  273.   if (
  274.     err.toString() !=
  275.     'JavaException: com.stardust.autojs.runtime.exception.ScriptInterruptedException: null'
  276.   ) {
  277.     console.error(err)
  278.   }
  279.   showVersion()
  280. }
复制代码


回复

使用道具 举报

发表于 2023-6-28 20:24:56 | 显示全部楼层
落败的青春阳落s 2023-6-28 20:24:56 看全部
楼主太厉害了!楼主,I*老*虎*U!我觉得知鸟论坛真是个好地方!
回复

使用道具 举报

发表于 2023-6-29 00:30:15 | 显示全部楼层
123456823 2023-6-29 00:30:15 看全部
感谢楼主的无私分享!要想知鸟论坛好 就靠你我他
回复

使用道具 举报

发表于 2023-6-29 11:33:18 | 显示全部楼层
米老鼠和蓝精鼠v 2023-6-29 11:33:18 看全部
这个帖子不回对不起自己!我想我是一天也不能离开知鸟论坛
回复

使用道具 举报

发表于 2023-6-29 18:05:56 | 显示全部楼层
六翼天使494 2023-6-29 18:05:56 看全部
楼主太厉害了!楼主,I*老*虎*U!我觉得知鸟论坛真是个好地方!
回复

使用道具 举报

发表于 2023-6-29 20:51:24 | 显示全部楼层
丁侦球 2023-6-29 20:51:24 看全部
这个帖子不回对不起自己!我想我是一天也不能离开知鸟论坛
回复

使用道具 举报

发表于 2023-6-29 21:09:15 | 显示全部楼层
音乐之家1 2023-6-29 21:09:15 看全部
楼主,我太崇拜你了!我想我是一天也不能离开知鸟论坛
回复

使用道具 举报

发表于 2023-6-29 22:17:42 | 显示全部楼层
我的苦恼冉 2023-6-29 22:17:42 看全部
这个帖子不回对不起自己!我想我是一天也不能离开知鸟论坛
回复

使用道具 举报

发表于 2023-6-29 22:21:47 | 显示全部楼层
123456868 2023-6-29 22:21:47 看全部
其实我一直觉得楼主的品味不错!呵呵!知鸟论坛太棒了!
回复

使用道具 举报

发表于 2023-6-30 02:25:19 | 显示全部楼层
幸福341 2023-6-30 02:25:19 看全部
楼主,大恩不言谢了!知鸟论坛是最棒的!
回复

使用道具 举报

  • 您可能感兴趣
点击右侧快捷回复 【请勿灌水】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则 返回列表

RSS订阅| SiteMap| 小黑屋| 知鸟论坛
联系邮箱E-mail:zniao@foxmail.com
快速回复 返回顶部 返回列表