使用Python实现微信拍一拍功能的思路代码


Posted in Python onJuly 09, 2020

使用Python实现微信拍一拍功能的思路代码

最近微信“拍一拍”火遍了各大微信群,并迅速占据了热搜话题榜

使用Python实现微信拍一拍功能的思路代码

于是我突发奇想,决定用pyhton自动实现微信“拍一拍”,没想到还真给搞成功了,整个过程才用了30行代码,下面给大家介绍一下具体实现步骤:

本文亮点:

用appium模拟操控手机并截图,通过图像识别定位好友头像坐标,最后用appium模拟双击头像坐标,以此实现“拍一拍”功能。

具体步骤:

一、用appium操控手机

关于appium的安装及使用方法,之前已经写过很多了,这里就不再赘述了,直接进入操作步骤

1.用python打开微信,代码如下:

desired_caps = {"platformName": "Android", 
            "deviceName": "VOG-AL00", 
            "appPackage": "com.tencent.mm", 
            "appActivity": ".ui.LauncherUI", 
            "noReset": "true", 
            "fullReset": "false"} 
server = 'http://localhost:4723/wd/hub' 
driver = webdriver.Remote(server, desired_caps) 

难点在于desired_cap参数的配置,这里再给大家介绍一下:

  • platformName:表示设备操作系统
  • deviceName:表示设备名称
  • apppackage:表示app程序包名
  • appActivity:表示app入口Activity名。

将手机连接电脑,打开开发者模式,运行此程序,就会发现手机自动打开了微信。

二、模拟双击头像

1.原理介绍

我们都知道,微信“拍一拍”是通过双击好友头像实现的,如下图所示:

使用Python实现微信拍一拍功能的思路代码

想要双击头像,就要先获得头像在屏幕中的坐标

这里给大家介绍1个函数:

基于Python-opencv2的目标定位模块:Aircv使用其find_template函数,可以查找目标图像在原始图像中的坐标范围,用法如下:

def matchImg(imgsrc, imgobj, confidencevalue=0.7):  
    imsrc = ac.imread(imgsrc) 
    imgobj = ac.imread(imgobj) 
    match_result = ac.find_template(imsrc, imgobj,confidencevalue)  
    return match_result 

其中imgsrc=原始图片路径,imgobj=待查找的目标图片路径。

如果未找到,则match_result=None;

若找到,则返回如下数据:

{
'result':(570.0, 2771.0), 'rectangle': ((30, 1601), (30, 3941), (1110, 1601), (1110,3941)), 'confidence': 0.999999463558197
}

其中:

  • result为匹配图片在原始图片上的中心坐标点,也就是我们要找的点击点;
  • rectangle为匹配图片在原始图像上四边形的坐标;
  • confidence为匹配相似率。

2.那么该如何在程序中自动获取获取好友头像坐标呢?

在客户端appium中,可以确定头像在屏幕中的像素为140×140我们可以先把好友头像保存,再用ps把头像改为此像素。

然后在程序中创建1个while循环,在第一步完成的基础上,手动进入好友聊天框(其实也可以通过识别好友头像自动进入)

通过appium对手机屏幕截图并命名为src.png,将其和头像路径(obj.png)导入1中的检测函数:

driver.save_screenshot('src.png') 
imgsrc='src.png' 
imgobj='obj.png' 
match_result=matchImg(imgsrc, imgobj)

若返回None,则说明聊天窗口没检测到好友头像,继续循环;

若检测到头像坐标,则解析返回的坐标数据,用for循环模拟双击坐标位置:

if match_result is not None: 
    result = [match_result['rectangle'][0], match_result['rectangle'][3]] 
    for i in range(2): 
        driver.tap(result,100) 
    print('拍成功') 
else: 
    print('没找到头像') 

这样就大功告成了

使用Python实现微信拍一拍功能的思路代码

是不是很简单?

小结:本文介绍了用python模拟微信“拍一拍”的主要思路,感兴趣的可以接着做下去,实现一些有趣的功能,例如,监控微信群聊,谁发消息就“拍”谁一下,或者把群聊用户挨个拍一遍,都挺有意思的。

到此这篇关于使用Python实现微信"拍一拍"的思路详解的文章就介绍到这了,更多相关python 微信拍一拍内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python中使用PyQt把网页转换成PDF操作代码实例
Apr 23 Python
Python文件与文件夹常见基本操作总结
Sep 19 Python
浅析python中SQLAlchemy排序的一个坑
Feb 24 Python
Python深度优先算法生成迷宫
Jan 22 Python
Python基于pycrypto实现的AES加密和解密算法示例
Apr 10 Python
在python中bool函数的取值方法
Nov 01 Python
解决python写入带有中文的字符到文件错误的问题
Jan 31 Python
python实现弹窗祝福效果
Apr 07 Python
关于Python作用域自学总结
Jun 10 Python
Python实现Keras搭建神经网络训练分类模型教程
Jun 12 Python
pytorch cuda上tensor的定义 以及减少cpu的操作详解
Jun 23 Python
python3.7中安装paddleocr及paddlepaddle包的多种方法
Nov 27 Python
pytorch 多分类问题,计算百分比操作
Jul 09 #Python
详解Python 循环嵌套
Jul 09 #Python
keras分类之二分类实例(Cat and dog)
Jul 09 #Python
python中tkinter窗口位置\坐标\大小等实现示例
Jul 09 #Python
Python2.x与3​​.x版本有哪些区别
Jul 09 #Python
浅谈keras中Dropout在预测过程中是否仍要起作用
Jul 09 #Python
在keras中对单一输入图像进行预测并返回预测结果操作
Jul 09 #Python
You might like
手把手教你使用DedeCms的采集的图文教程
2007/03/11 PHP
php框架Phpbean说明
2008/01/10 PHP
深入eAccelerator与memcached的区别详解
2013/06/06 PHP
php使用cookie实现记住登录状态
2015/04/27 PHP
Zend Framework教程之动作的基类Zend_Controller_Action详解
2016/03/07 PHP
laravel框架实现去掉URL中index.php的方法
2019/10/12 PHP
HTML Dom与Css控制方法
2010/10/25 Javascript
js关闭浏览器窗口及检查浏览器关闭事件
2013/09/03 Javascript
图片上传插件jquery.uploadify详解
2013/11/15 Javascript
javaScript对文字按照拼音排序实现代码
2013/12/27 Javascript
javascript入门教程基础篇
2015/11/16 Javascript
javascript+HTML5 Canvas绘制转盘抽奖
2020/05/16 Javascript
jQuery实现的自定义弹出层效果实例详解
2016/09/04 Javascript
Vuex之理解Mutations的用法实例
2017/04/19 Javascript
在React项目中使用Eslint代码检查工具及常见问题
2018/10/10 Javascript
详解js获取video任意时间的画面截图
2019/04/17 Javascript
微信小程序canvas分享海报功能
2019/10/31 Javascript
vue.js路由mode配置之去掉url上默认的#方法
2019/11/01 Javascript
微信小程序实现拨打电话功能的示例代码
2020/06/28 Javascript
[39:18]完美世界DOTA2联赛PWL S3 Forest vs LBZS 第二场 12.17
2020/12/19 DOTA
python 生成不重复的随机数的代码
2011/05/15 Python
Python版的文曲星猜数字游戏代码
2013/09/02 Python
使用Python编写一个简单的tic-tac-toe游戏的教程
2015/04/16 Python
Python实现简单拆分PDF文件的方法
2015/07/30 Python
matplotlib 输出保存指定尺寸的图片方法
2018/05/24 Python
Pytorch 定义MyDatasets实现多通道分别输入不同数据方式
2020/01/15 Python
python3用PyPDF2解析pdf文件,用正则匹配数据方式
2020/05/12 Python
python实现数字炸弹游戏程序
2020/07/17 Python
CSS3解析抖音LOGO制作的方法步骤
2019/04/11 HTML / CSS
CSS3中的弹性布局em运用入门详解 1em等于多少像素
2021/02/08 HTML / CSS
新加坡领先的在线生活方式和杂货购物网站:EAMART
2019/04/02 全球购物
英国休闲奢华的缩影:Crew Clothing
2019/05/05 全球购物
质检部职责
2013/12/28 职场文书
应用英语专业自荐信
2014/01/26 职场文书
函授毕业自我鉴定
2014/02/04 职场文书
外科护士长工作总结
2015/08/12 职场文书