使用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结合shell查询google关键词排名的实现代码
Feb 27 Python
Python批量更改文件名的实现方法
Oct 29 Python
python 多维切片之冒号和三个点的用法介绍
Apr 19 Python
python3利用ctypes传入一个字符串类型的列表方法
Feb 12 Python
详解Python安装tesserocr遇到的各种问题及解决办法
Mar 07 Python
python 修改本地网络配置的方法
Aug 14 Python
python装饰器的特性原理详解
Dec 25 Python
Python 实现递归法解决迷宫问题的示例代码
Jan 12 Python
python矩阵运算,转置,逆运算,共轭矩阵实例
May 11 Python
python使用多线程+socket实现端口扫描
May 28 Python
Python3以GitHub为例来实现模拟登录和爬取的实例讲解
Jul 30 Python
Python内存泄漏和内存溢出的解决方案
Sep 26 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
一个可以删除字符串中HTML标记的PHP函数
2006/10/09 PHP
PHP HTML JavaScript MySQL代码如何互相传值的方法分享
2012/09/30 PHP
PHP使用递归方式列出当前目录下所有文件的方法
2015/06/02 PHP
php中smarty变量修饰用法实例分析
2015/06/11 PHP
PHP 开发者该知道的 5 个 Composer 小技巧
2016/02/03 PHP
thinkphp3.x中session方法的用法分析
2016/05/20 PHP
PHP dirname功能及原理实例解析
2020/10/28 PHP
让innerText在firefox火狐和IE浏览器都能用的写法
2011/05/14 Javascript
jQuery1.6 使用方法二
2011/11/23 Javascript
远离JS灾难css灾难之 js私有函数和css选择器作为容器
2011/12/11 Javascript
ExtJS下书写动态生成的xml(兼容火狐)
2013/04/02 Javascript
node.js中的fs.unlinkSync方法使用说明
2014/12/15 Javascript
jQuery的观察者模式详解
2014/12/22 Javascript
JS实现图片放大镜效果的方法
2015/02/27 Javascript
javascript常用经典算法实例详解
2015/11/25 Javascript
js中最容易被忽视的事件问题大总结
2016/05/15 Javascript
jQuery 选择符详细介绍及整理
2016/12/02 Javascript
JS设置时间无效问题的解决办法
2017/02/18 Javascript
jQuery插件FusionCharts实现的2D饼状图效果【附demo源码下载】
2017/03/03 Javascript
深入理解vue路由的使用
2017/03/24 Javascript
使用 NodeJS+Express 开发服务端的简单介绍
2017/04/07 NodeJs
node+multer实现图片上传的示例代码
2020/02/18 Javascript
深入讨论Python函数的参数的默认值所引发的问题的原因
2015/03/30 Python
python基于隐马尔可夫模型实现中文拼音输入
2016/04/01 Python
Python实现绘制双柱状图并显示数值功能示例
2018/06/23 Python
Python3安装Pillow与PIL的方法
2019/04/03 Python
Python3中_(下划线)和__(双下划线)的用途和区别
2019/04/26 Python
Python collections中的双向队列deque简单介绍详解
2019/11/04 Python
Python遍历字典方式就实例详解
2019/12/28 Python
Beauty Expert美国/加拿大:购买奢侈美容产品
2018/12/05 全球购物
UML设计模式笔试题
2014/06/07 面试题
篝火晚会策划方案
2014/05/16 职场文书
小学运动会口号
2014/06/07 职场文书
大学毕业生自我鉴定范文
2019/06/21 职场文书
react中的DOM操作实现
2021/06/30 Javascript
JS前端使用canvas实现扩展物体类和事件派发
2022/08/05 Javascript