Python控制手机,五排上分
当你想抢王者聊天频道的皮肤碎片红包,或者想和小姐姐(小哥哥)开游戏的时候。可以使用python自动化工具,进行自动化加入开黑房间(一般小姐姐开黑会开语音,然后就会有大佬带,然后就容易上分,哈哈哈)。然后可以喝个奶茶,看个电影~一边等待,加入上分的队伍(所需工具下载链接详见文章尾部)
B站视频传送门:攻城狮晚的个人空间_哔哩哔哩_Bilibili
如何快速和小姐姐五排开黑~_哔哩哔哩_bilibili
目录
1、下载安装ADB工具包和驱动
2、下载安装Andriod SDK
3、UiAutoMatorViewer下载安装
4、测试
5、最终具体Python代码实现
6、参考文献
1、下载安装ADB工具包和驱动
Android Debug Bridge 是一种允许模拟器或已连接的 Android 设备进行通信的命令行工具
下载工具包后,解压到英文路径后,添加系统环境变量
下载驱动之后,点击安装驱动
2、下载安装Andriod SDK
AndroidDevTools - Android开发工具 Android SDK下载 Android Studio下载 Gradle下载 SDK Tools下载
我是win10系统,所以下载了这个
下载装好之后,会自动运行 SDK Manager。如果没有的话,开始菜单或者安装目录找一下,运行就好。
测试了一下安装还挺快的,我安装的是这几个
3、UiAutoMatorViewer下载安装
1、下载jdk1.8安装(据说其他版本使用UiAutoMatorViewer有问题):
可以先查看jdk(Java Development Kit——Java开发工具包)版本。开始菜单输入cmd,打开命令行窗口,输入java -version查看:
如果没有jdk的话,可以从如下网址下载安装
https://docs.oracle.com/javase/8/docs/technotes/guides/install/install_overview.html
2、下载UiAutoMatorViewer
https://dfenghuoyunji.jb51.net/201904/tools/uiautomatorviewer.rar
下载后,将里面的uiautomatorviewer.jar文件复制到之前安装的sdk的 tools/lib目录下
如果不放心的话,可以将之前的uiautomatorviewer.jar 备份一下
Sdk目录下的tools目录中,uiautomatorviewer.bat可以备份下,然后最后一行Dcom.android.uiautomator.bindir=后接adb实际存放路径。
我放在了D:\program files\Android\abd下
此时即可双击运行uiautomatorviewer.bat,打开uiautomatorviewer
4、测试
1、使用获取截图png和uix文件,保存到当前文件夹:
adb shell screencap -p /sdcard/sc.png
adb pull /sdcard/sc.png
adb shell uiautomator dump /sdcard/sc.uix
adb pull /sdcard/sc.uix
2、使用uiautomatorviewer工具查看能否解析成功
经过测试,手机桌面是可以解析的
但是王者游戏界面无法解析
所以准备使用百度文字识别api,进行操作,大致思路如下:
可以免费领取百度文字识别api的额度,如下网址:
https://cloud.baidu.com/doc/OCR/s/9k3h7xuv6#通用文字识别(高精度含位置版)
如果没有申请的话,默认是收费的,含位置信息的,最便宜的大概0.01元/次调用
里面有相应的调用方式参考代码示例
Token的话,可以参考这个文档,需要先创建应用
https://ai.baidu.com/ai-doc/REFERENCE/Bkru0l60m
作者还试用了iOCR通用版,就是你可以选择需要识别的位置,指定参考点。但是经过测试,无法满足需求。
Adb调试,使用的是华为的鸿蒙手机(百度了一下,鸿蒙系统居然不是安卓了,不过应该是为了通用,adb工具还是可以进行调试的)。
连接手机后,电脑端会跳出华为手机助手,验证过后。Cmd中使用adb截图。如果截图不了的话,华为手机助手会提示再次验证。验证通过后,即可使用adb命令
Cmd中截图,查看没问题后,使用python脚本进行测试。其中点击屏幕命令如下:
adb shell input tap 522 1120(x y)
5、最终具体Python代码实现
import os
import time
import base64
import shutil
import requests
from PIL import Imagedef Myexec(Tstr):# 自定义执行命令函数,方便调试os.system(Tstr)# client_id 为官网获取的AppKey, client_secret 为官网获取的SecretKey
host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=【你的AppKey】&client_secret=【你的SecretKey】'
response = requests.get(host)
if response:response = response.json()token = response["access_token"]print(response)print(token)
# 可以将token保存为文件,需要的时候再取出来,这里不保存也能用,所以先不保存。
# 默认过期时间30天["expires_in"]# 网络图片文字识别(含位置版)0.03一次,无折扣。能否检测,暂未尝试
# 通用文字识别(高精度版)0.03一次,多了有折扣
# request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic" # 可以检测出♀# 通用文字识别(高精度含位置版)0.04一次,多了有折扣
# request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/accurate" # 可以检测出♀# 通用文字识别(标准版含位置)0.01一次,多了有折扣
request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/general" # 可以检测出♀
# 通用文字识别,不含位置的0.005一次,多了有折扣。总结了一下,还是需要位置比较好,不包含位置的,不方便点击。spic = 'sc.png'
dpic = "tmp.png"abd1 = 'adb shell screencap -p /sdcard/'+spic
abd2 = 'adb pull /sdcard/'+spic
# adb shell screencap -p /sdcard/sc.png
# adb pull /sdcard/sc.pngtestCount = 100 # 多少次循环没有找到合适的队伍及停止
testN = 0 # 当前截屏识别次数
clickOk = 0 # 进入队伍的标志while testN<testCount:testN+=1time.sleep(2) # 经过2秒获取一次截屏(5秒以内都行)。因为王者聊天频道刷新时间大概是5秒Myexec(abd1) # 获取截屏Myexec(abd2) # 从手机拉(复制)到本地im = Image.open(spic)#返回一个Image对象:[宽,高]spicW = im.size[0]spicH = im.size[1]DpicW = spicW/2print('第%d次尝试,截屏的宽:%d,高:%d'%(testN,spicW,spicH))# 裁剪一半、保存。增加响应速度。对于王者进入队伍的需求来说,只需要左半部分进行图片识别即可cropped = im.crop((0, 0, DpicW, spicH)) # (left, upper, right, lower)cropped.save(dpic)t = time.time()tmpName = "sc"+str(t)+".png"shutil.copy(dpic,"tmp/"+tmpName) # 保存到临时文件夹# 二进制方式打开图片文件,base64编码后,发送给百度apif = open(dpic, 'rb')img = base64.b64encode(f.read())params = {"image":img}access_token = tokenrequest_url = request_url + "?access_token=" + access_tokenheaders = {'content-type': 'application/x-www-form-urlencoded'}response = requests.post(request_url, data=params, headers=headers) # 获取百度翻译api的返回值if response:response = response.json() # 解析返回值为json格式wres = response["words_result"]thisGhw = 0print (wres)for w in wres:# if "皮肤碎片红包" in w["words"]: # 也可以判断是否有红包,然后点击。哈哈哈,这个就留给大家自己去尝试了tWords = w["words"] if "♀" in tWords: # 男生的这个符号♂,经过测试,百度api识别不出来thisGhw = w["location"]["top"] # 文字距离屏幕截图顶部的距离 70-80,78thisGww = w["location"]["left"] # 文字距离屏幕截图左边的距离 110-120,116print("girl",thisGhw,thisGww)# if ("五人排位" in tWords or "无限乱斗" in tWords) and ("3/5" in tWords or "4/5" in tWords or "35)" in tWords or "45)" in tWords):if "排位" in tWords or "无限乱斗" in tWords: # 测试条件thisPhw = w["location"]["top"] # 70-80,78thisPww = w["location"]["left"] # 110-120,116print("五排或乱斗",thisPhw,thisPww)if thisGhw != 0:exY = int(thisPhw)-int(thisGhw)exX = int(thisPww)-int(thisGww)if exY>70 and exY<90 and exX>110 and exX<128: # 如果满足条件,则点击,进入房间。# 不同手机分辨率下,有可能不一样。这个需要具体测试 (我的是2340*1080px)print("点击位置,x:%s,y:%s"%(thisPww,thisPhw))# adb shell input tap 540 1104Myexec("adb shell input tap "+str(thisPww)+" "+str(thisPhw))breakif "全队" in tWords or "召集" in tWords: # 判断是否已经进入房间clickOk = 1 print("进入房间成功")if clickOk == 1:# 如果已经进入房间,退出循环break
经过测试,一般等待几分钟,就会进入想要的房间啦~再也不用一直盯着屏幕啦~其实还有很多功能,比如自动抢皮肤碎片啦、做任务啦,这些就需要大家自己去实现啦~
所用工具下载地址:链接:https://pan.baidu.com/s/1ckE8mj_eWhVatAFoV8E3Mg
提取码:lkkz
6、参考文献
- 《ADB 操作命令详解及用法大全》ADB 操作命令详解及用法大全 - 掘金
- 《Android自动化测试应用<一>《uiautomatorviewer工具的安装与使用》》https://www.cnblogs.com/corsacsherry/p/10609339.html
- 《Android SDK的下载与安装》https://www.cnblogs.com/nebie/p/9145627.html
- 《OSError: cannot write mode RGBA as JPEG》https://blog.csdn.net/weixin_39777626/article/details/82774270
- 《Python读取图片尺寸、图片格式》https://www.cnblogs.com/d0main/p/7613296.html
- 《Python实现图片裁剪的两种方式(Pillow和OpenCV)》https://www.jb51.net/article/173183.htm
- 《Uiautomatorviewer报错Unexpected error while obtaining UI hierarchy java.lang.reflect.InvocationTargetE》https://blog.csdn.net/qq_41714308/article/details/113886433
- 《UI Automator Viewer工具的使用》https://www.cnblogs.com/lhx0827/p/9577575.html
- 《用Python实现自动化操作Android手机》https://www.cnblogs.com/xakzp/articles/9662770.html
- 《python 控制手机滑屏_如何使用python控制手机(以微信游戏跳一跳为例)》https://blog.csdn.net/weixin_26757939/article/details/113642335
- 《android adb 模拟点击、滑动、输入、按键》https://blog.csdn.net/liukang325/article/details/79268173
Python控制手机,五排上分相关推荐
- 使用Python控制手机(二)关于淘宝的那些事
1. 序言 每年淘宝双十一的时候,总是要刷各种各样的浏览页面,收集能量或者喵币或者什么. 那既然如此,我就总想着,能否通过Python自动调用的方式来刷网页. 2. 前置工作 本文是基于使用Pytho ...
- 用python控制手机电脑拍照并自动发送邮箱
文章目录 本文思路 视频讲解 代码部分 兄弟们,这个是正经的教程,不要拿来乱用,可以自己用自己的电脑或者手机试,但是别搞别人,懂的都懂! 本文思路 通过opencv调用摄像头拍照保存图像本地 用ema ...
- python控制手机
文章目录 1.首先安装依赖环境,uiautomator2和其他依赖包 2.需要安装Adb环境 3.需要设备安装ATX 编写Python代码进行控制手机 4.ui的一些操作命令如下: 1.链接设备 2. ...
- 使用Python控制手机(一)
1. 配置Python环境变量 Python环境变量安装较为简单,比较常用的方式是直接百度Anaconda并且下载安装,安装过程中可直接选择自动配置环境变量,在此不再赘述. 2. 安装Python编辑 ...
- uiautomator2 adb 安装与运行 python控制手机软件
研究了三天才搞定的python自动化控制手机软件,将学到的步骤和遇到的各种坑在这里记录下来,方便我之后查找 写代码前的准备工作 一.下载adb软件.添加环境变量.调试 1.0 下载adb https: ...
- python 控制 手机来进行操作皇室战争要卡
我玩皇室战争,几乎每天都会上线要卡:然后我想了下有没有一个脚本,能够实现自动要卡, 所以我经过3天的研究,最后是做出来了 我现在在这里总结一下. 首先使用pycharm创建一个项目 然后安装几个第三方 ...
- Python控制手机下欢乐五子棋,半天时间1段到9段,90%+的胜率,就无敌
国庆节闲来无事,突然想到儿时玩的五子棋于是打开手机-小程序-欢乐五子棋.下了2把感觉太费脑子了.想到之前有个五子棋引擎,叫羿心.然后开始找官网,找到了尼玛居然官网挂了.于是就上GitHub上面去找,居 ...
- python控制手机自动刷新闻_Python控制android手机实现微信自动跳一跳
学习一个新东西一定要有趣,如果只是简单学习语法太枯燥了.弄了个跳一跳的程序,注释写的很清楚#!/usr/bin/env python # encoding: utf-8 # @software: Py ...
- python控制手机自动刷新闻_Python脚本利用adb进行手机控制的方法
一. adb 相关命令: 1. 关闭adb服务:adb kill-server 2. 启动adb服务 adb start-server 3. 查询当前运行的所有设备 adb devices 4. 可能 ...
最新文章
- 【机器学习知识体系】- 机器学习问题的一般流程
- 从零开始学习jQuery (十) jQueryUI常用功能实战
- java填空题 在非静态成员方法中_Java学习(四): 类的使用
- 双指针解决力扣两/三数之和问题
- 文件下载至storage_如何防止Storage Sense在Windows 10上删除下载的文件
- 子模板继承父模板示例_模板设计模式示例
- 1-6docker数据共享与持久化
- Python二级笔记(5)
- JAVA—字符串怎么转换成整数
- Illustrator中文版教程,如何在AI中以不同的方式组合形状?
- Linux修改命令行样式
- 我的NAS安装之旅(1)——硬件和软件选型篇
- 【笔记】《离散数学》第十章 递推方程与生成函数
- 汇智创科机器人,【汇智创科机器人】这个周六,和孩子一起“动手不动口”,比比看谁最棒!...
- caps scrlk numlk 闪烁
- 树莓派如何接硬盘_树莓派3 挂载外接硬盘
- 记录:使用DJANGO从0开始搭建微信公众平台(0)
- 大数据时代背景下的商标注册风险及应对方法
- 一年中最后一个月的最后一天说说_2020只剩最后一个月的励志说说致自己
- 读研的那些事儿(三)