雙11來了 收貓幣麻煩? 使用autojs實現個自動腳本解放雙手

前言:

雙11來了,我也是一個剁手黨,當然要想辦法能省點錢算一點,雙11的活動是攢喵幣,和往年一樣,點擊各種商家頁面來獲取,這個過程是一個重複的過程,往年我都是手動點完的,但是今年真不想再繼續做這些重複的事了,於是就有了下面這個自動腳本.

 

技術調研:

在網上也搜索了好多的方式方法,最終還是使用了autojs這個腳本工具,正所謂物理外掛最爲致命,這個也有點類似物理外佳了.

 

實現效果:

還有自動瀏覽店鋪的功能,由於太大就沒上傳完整的效果圖了

實現代碼:

這次雙11,在淘寶與支付寶中都有活動,所以寫了兩個項目,不過代碼邏輯大體都差不多,主要是點擊到活動頁面=>等待15秒 => 返回上一層頁面... 然後循環

代碼貼上:

 

var baseWidth = 1080,baseHeight = 2400;
var height = device.height;
var width = device.width;

setScreenMetrics(baseWidth,baseHeight);

threads.start(function(){
  events.observeKey();
  events.on("key_down", function(keyCode, events){
    if(keyCode == keys.volume_up){
      toastLog('停止腳本使用')
      exit();
    }
  });
});
var canCapture = requestScreenCapture();
if(!canCapture){
  toast('請授權截圖!')
  exit()
}

launchApp('手機淘寶')
sleep(3000);

click(800,1218);

sleep(6000);

let catImg = images.read('/sdcard/catImg.jpg');
if(catImg === null){
  catImg = images.load('https://pic1.zhimg.com/80/v2-8a9af44ba48b553fbbdafd96475ad47c_1440w.jpeg'); // 圖片不能爲png格式的 無法加載到
  catImg.saveTo('/sdcard/catImg.jpg');
}

// let screenCaptureImg2 = images.grayscale(screenCaptureImg)
// images.save(screenCaptureImg2,'/sdcard/screenCaptureImg2.jpg')
sleep(2000);

// 如果有11月11日見彈出框 則關閉
var eleven = text('好的,11月11日見').findOnce();
if(eleven){
  click('好的,11月11日見');
  sleep(2000)
}

click(942,1973); // 點擊  賺喵幣


sleep(1500)
while(true){
  var goText = text('去瀏覽').findOnce();
  if(goText){
    click(goText.bounds().centerX(),goText.bounds().centerY());
    sleep(5000)
    swipe(baseWidth/3,baseHeight - 200,baseWidth/2,200,2000);
    sleep(13000);
    back();
    sleep(2000);
    click('領取獎勵');
    sleep(1000)
  }else{
    var goSearch = text('去搜索').findOnce();
    if(goSearch){
      click(goSearch.bounds().centerX(),goSearch.bounds().centerY());
      sleep(5000)
      swipe(baseWidth/3,baseHeight - 200,baseWidth/2,200,2000);
      sleep(13000);
      back();
      sleep(2000);
      click('領取獎勵');
      sleep(1000);
      
    }else{
      // 需要更多的變量
      var array = ['逛一逛"潮酷新品"(0/2)','逛一逛"潮酷新品"(1/2)','逛一逛"潮流趨勢"(0/2)','逛一逛"潮流趨勢"(1/2)','逛一逛"時尚配飾"(0/2)','逛一逛"時尚配飾"(1/2)','逛一逛"家居百貨"(0/2)','逛一逛"家居百貨"(1/2)'];
      var goTo = null;
      for(var i = 0;i<array.length;i++){
        var a = text(array[i]).findOnce();
        if(a){
          goTo = a;
          break;
        }
      }
      if(goTo){
        click(goTo.bounds().centerX(),goTo.bounds().centerY());
        sleep(2000)
        swipe(baseWidth/3,baseHeight - 200,baseWidth/2,200,2000);
        sleep(15500);
        back();
        sleep(2000);
        click('領取獎勵');
        sleep(1000);
      }else{
        break
      }
    }
  }
}
toastLog('結束!');
click(974,650); // 點擊右上角關閉
exit();




function readImg(name,url){
  let catImg = images.read('/sdcard/'+name);
  if(catImg === null){
    catImg = images.load(url); // 圖片不能爲png格式的 無法加載到
    catImg.saveTo('/sdcard/'+name);
  };
  return catImg
}

這段代碼是用於淘寶收取喵幣的,前後僅花了2小時不到,這一塊內容還是比較簡單的,主要之前寫過類似的代碼,有些經驗了.

遇到的問題:

1.點擊文字,由於不確定一些字體是圖片還是純文本,所以在調試的時候,都是憑感覺去試

2.活動的文本較多,有些地方情況無法用找圖片的方式來定位要點擊的位置,但是文字內容又不確定,所以只能把可能的文本內容情況給加上,比如這一塊 var array = ['逛一逛"潮酷新品"(0/2)','逛一逛"潮酷新品"(1/2)','逛一逛"潮流趨勢"(0/2)','逛一逛"潮流趨勢"(1/2)','逛一逛"時尚配飾"(0/2)','逛一逛"時尚配飾"(1/2)','逛一逛"家居百貨"(0/2)','逛一逛"家居百貨"(1/2)']; 現在是把我可能遇到的情況都加上了,如果後面支付寶有增刪改查的話,也需要跟着改一下邏輯...

3.手機兼容,由於自己只有一個手機,只能使用自己的手機來測試,雖然官網有說可以通過方法setScreenMetrics(baseWidth,baseHeight)來保持比例,但是自己沒試過 也許還是不行呢.

4.還有各類的點擊可能性,並沒有完成覆蓋,有些去完成的任務只能通過手點來獲取喵幣.

5.autojs是好早之前的框架,現在已經不維護了,有一些es6的語法是不支持的,比如const,let,儘量不用到新語法來寫業務邏輯.

6.各種sleep 需要等待app內容加載完成,如果頁面有不確定因素也是需要延長下一步的執行邏輯的.

 

 

總結:

小東西有大用處,在接下來的幾天時間能夠幫助我節省好多的時間,讓自己感覺高大上一些,多探究一些小玩意,對自己以後的職業生涯也有幫助..

 

 

 

原文鏈接: https://www.xiaye0.com/?p=78

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章