利用Python搶回在螞蟻森林把逝去的能量
目錄
4 Python——uiautomator2庫安裝
1 螞蟻森林簡介
螞蟻森林是一項旨在帶動公眾低碳減排的公益專案,每個人的低碳行為在螞蟻森林裡可計為"綠色能量"。"綠色能量"積累到一定程度,就可以用手機申請在生態亟需修復的地區種下一棵真樹,或者在生物多樣性亟需保護的地區“認領”保護權益。
螞蟻森林在各地的生態修復專案,是由螞蟻集團向公益機構捐贈資金,由公益機構組織種植養護等具體工作,並由當地林業部門進行業務監管,所有專案都有對應的捐贈協議、驗收報告。 [23]
2019年9月19日,中國“螞蟻森林”專案獲 聯合國 “ 地球衛士獎 ”
據生態環境部2021年“全國低碳日”主場活動公佈的資料:螞蟻森林從2016年上線5年來,已累計帶動超過6.13億人蔘與低碳生活,產生“綠色能量”2000多萬噸。
為了激勵社會公眾的低碳生活,5年來螞蟻森林參與到全國11個省份的生態修復工作,累計種下3.26億棵樹,其中在甘肅、內蒙古均超過1億棵。 同時,螞蟻森林還在全國10個省份設立了18個公益保護地,守護野生動植物1500多種。通過在各地的生態環保專案,螞蟻森林累計創造了種植、養護、巡護等238萬人次的綠色就業機會,為當地群眾帶來勞動增收3.5億元。
螞蟻集團公開宣告:每年投入螞蟻森林數億的費用屬於純公益捐贈。螞蟻森林種下的樹一經捐出,就屬於國家、屬於社會,未來如果這些樹木產生碳匯,將全部用於公益。螞蟻森林從未參與過碳交易。 如果螞蟻森林裡記錄的個人碳減排量未來能交易,產生的所有收益將屬於使用者個人,不屬於螞蟻森林。
2 逝川長嘆
在以前,容易忽略支護寶的我來說,很多能量被好友搶來,然後一直想找一個機會把失去的能量大範圍的搶回來,苦於程式碼能力有限,一直沒落實,最近很想弄,不在逝川長嘆,也讓別人羨慕我。
乾貨主要有:
① 200 多本 Python 電子書(和經典的書籍)應該有
② Python標準庫資料(最全中文版)
③ 專案原始碼(四五十個有趣且可靠的練手專案及原始碼)
④ Python基礎入門、爬蟲、網路開發、大資料分析方面的視訊(適合小白學習)
⑤ Python學習路線圖(告別不入流的學習)
Python學習交流Q群101677771
3 結果展示
過幾分鐘再偷,賺大了,哈哈哈!
4 Python——uiautomator2庫安裝
UiAutomator是Google提供的用來做安卓自動化測試的一個Java庫,可以獲取螢幕上任意一個APP的任意一個控制元件屬性,並對其進行任意操作。Uiautomator2是在Uiautomator之上的python的介面封裝,簡單來說 Uiautomator2可以看到手機當前螢幕上有哪些控制元件,其座標是啥,並且還可以模擬點選。
下面我們講講安裝uiautomator2庫的方法(我常用的)。
5 Python程式碼實現
#=======匯入相關庫==========
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
mpl.rcParams['font.sans-serif'] = ['SimHei'] # 指定預設字型
mpl.rcParams['axes.unicode_minus'] = False # 解決儲存影象是負號'-'顯示為方塊的問題
import matplotlib;
matplotlib.use('TkAgg')
import uiautomator2 as u2
import time
import random
#=======# 有線連線,手機需要插電腦上,支付寶完全啟動======
d = u2.connect()
# d.app_stop("com.eg.android.AlipayGphone")
print("開啟支付寶")
d.app_start("com.eg.android.AlipayGphone")
time.sleep(2) ## 休眠2s等待支付寶完全啟動
#==========進入螞蟻森林=================
print("開啟螞蟻森林,等待5s……")
d(text="螞蟻森林").click()
time.sleep(5) ## 我手機比較卡,進入螞蟻森林後還需要幾秒鐘才能完全載入完
#=========收集能量===============
def collectEnergy(cnt):
print("開始第%d次偷能量!" % cnt)
#===開始掃描點選有能力出現的區域===
for x in range(150,1000,150):
for y in range(600,900,150):
d.long_click(x + random.randint(10,20), y + random.randint(10,20), 0.1)
time.sleep(0.01)
if cnt != 1:
d.click(536,1816)
cnt = 1
while True:
collectEnergy(cnt)
a = d.xpath("//*[@resource-id='J_tree_dialog_wrap']").get().bounds
d.click(1000, a[3]-80) # 找能量按鈕的座標
#===如果頁面出現了“返回我的森林”說明已經沒有能量可偷了,結束===
if d.xpath('//*[@text="返回我的森林"]').click_exists(timeout=2.0):
break
cnt += 1
print("###結束###")
d.app_stop("com.eg.android.AlipayGphone") # 退出支付寶