当前位置: 首页 > 后端技术 > Python

用Python实现定时自动化收取蚂蚁森林能量,再也不用担心忘记收取了

时间:2023-03-25 19:57:56 Python

使用Python定时自动从蚂蚁森林收集能量,再也不用担心忘记充电了。如果你不是蚂蚁森林的重度用户,被别人充能对你来说可能不算什么。但是如果你是蚂蚁森林的重度用户,遇到能量被盗用的情况……本篇我们就来看看如何使用Python+Appium实现定时自动化从蚂蚁森林采集能量。二、环境本文主要环境如下:Win7小米5sPython3.7Appium1.5支付宝10.2.6.7010如果对环境搭建不熟悉的可以看看:Python+Appium自动化运维微信入门与我用Python找出所有删除我微信人的东西,自动删除。3、实现功能的基本思路是:打开支付宝,进入蚂蚁森林,收集自己的能量。收集完自己的能量后,点击寻找能量进入朋友蚂蚁森林,收集朋友的能量等等。接下来我们看一下主要的代码实现。参数配置代码实现如下:desired_caps={"platformName":"Android",#系统"platformVersion":"8.0.0",#系统版本号"deviceName":"m5s",#设备名称"appPackage":"com.eg.android.AlipayGphone",#包名"appActivity":"AlipayLogin",#app启动时的MainActivity'noReset':True#保留session信息,避免重新登录}通常大家会把蚂蚁森林在支付宝首页,此时我们打开支付宝,直接点击蚂蚁森林选项进入。代码实现如下:driver.find_elements_by_id('com.alipay.android.phone.openplatform:id/home_app_view')[10].click()进入蚂蚁森林后开始收集自己的能量,因为新版支付宝无法定位能量球元素,需要在可能出现能量球的区域实现点击。收集能量的代码实现如下:#收集能量defcollect_energy(driver):print('开始收集能量')#获取手机屏幕的宽高width=int(driver.get_window_size()['width'])height=int(driver.get_window_size()['height'])#能量球可能出现区域的坐标start_x=110end_x=940start_y=460end_y=880foriinrange(start_y,end_y,80):forjinrange(start_x,end_x,80):tap_x1=int((int(j)/width)*width)tap_y1=int((int(i)/height)*height)#点击指定coordinatesdriver.tap([(tap_x1,tap_y1),(tap_x1,tap_y1)],1000)print('能量收集完成')能量收集完成后,点击寻找能量,进入好友蚂蚁森林继续收集活力。代码实现如下:#寻找能量defsearch_energy(driver):print('寻找能量,向好友收集能量')time.sleep(3)#点击寻找能量driver.tap([(1000,1520),(1080,1580)],1000)time.sleep(3)#向好友收集能量collect_energy(driver)time.sleep(3)#充电完成后继续搜索能量。search_energy(driver)实现了能量采集的功能后,我们就可以使用定时任务来实现定时采集了。下面看一下定时任务的实现。我们使用apscheduler组件来实现定时任务,使用前需要先执行pipinstallapscheduler进行安装。定时任务的代码实现如下:scheduler=BlockingScheduler()#collect_main:定时执行的方法scheduler.add_job(collect_main,'cron',hour=20,minute=23,second=20)try:scheduler.start()except(KeyboardInterrupt,SystemExit):pass至此,我们就完成了使用Python+Appium实现定时自动采集蚂蚁森林能量的工作。源码可在公众号Python小二后台回复201116获取。