使用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对字符串实现去重操作的方法示例
Aug 11 Python
python实现感知器算法详解
Dec 19 Python
PyQt5每天必学之布局管理
Apr 19 Python
pthon贪吃蛇游戏详细代码
Jan 27 Python
Python实现的在特定目录下导入模块功能分析
Feb 11 Python
Python操作rabbitMQ的示例代码
Mar 19 Python
Django实现基于类的分页功能
Oct 31 Python
使用tqdm显示Python代码执行进度功能
Dec 08 Python
Pytorch 使用不同版本的cuda的方法步骤
Apr 02 Python
PyCharm中关于安装第三方包的三个建议
Sep 17 Python
windows系统Tensorflow2.x简单安装记录(图文)
Jan 18 Python
Python使用socket去实现TCP客户端和TCP服务端
Apr 12 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
PhpStorm terminal无法输入命令的解决方法
2016/10/09 PHP
PHP构造二叉树算法示例
2017/06/21 PHP
TP5(thinkPHP框架)实现后台清除缓存功能示例
2019/05/29 PHP
避免 showModalDialog 弹出新窗体的原因分析
2010/05/31 Javascript
extjs中grid中嵌入动态combobox的应用
2011/01/01 Javascript
输入自动提示搜索提示功能的javascript:sugggestion.js
2013/09/02 Javascript
简单的ajax连接库分享(不用jquery的ajax)
2014/01/19 Javascript
JQuery与Ajax调用新浪API获取短网址的代码
2014/02/07 Javascript
jQuery实现鼠标可拖动调整表格列宽度
2014/05/26 Javascript
js操作IE浏览器弹出浏览文件夹可以返回目录路径
2014/07/14 Javascript
防止登录页面出现在frame中js代码
2014/07/22 Javascript
jQuery使用animate创建动画用法实例
2015/08/07 Javascript
一种Javascript解释ajax返回的json的好方法(推荐)
2016/06/02 Javascript
CSS3 media queries结合jQuery实现响应式导航
2016/09/30 Javascript
80%应聘者都不及格的JS面试题
2017/03/21 Javascript
Vue.js基础指令实例讲解(各种数据绑定、表单渲染大总结)
2017/07/03 Javascript
Three.js中网格对象MESH的属性与方法详解
2017/09/27 Javascript
vue init失败简单解决方法(终极版)
2017/12/22 Javascript
Vue中使用vee-validate表单验证的方法
2018/05/09 Javascript
Vue EventBus自定义组件事件传递
2018/06/25 Javascript
浅谈vue在html中出现{{}}的原因及解决方式
2020/11/16 Javascript
[00:35]DOTA2上海特级锦标赛 Newbee战队宣传片
2016/03/03 DOTA
python函数形参用法实例分析
2015/08/04 Python
Django使用Celery异步任务队列的使用
2018/03/13 Python
Python将json文件写入ES数据库的方法
2019/04/10 Python
解决python执行不输出系统命令弹框的问题
2019/06/24 Python
Python利用逻辑回归模型解决MNIST手写数字识别问题详解
2020/01/14 Python
基于css3 animate制作绚丽的动画效果
2015/11/24 HTML / CSS
澳大利亚领先的优质葡萄酒拍卖会:Langton’s Fine Wines
2019/03/24 全球购物
雷蛇美国官网:Razer
2020/04/03 全球购物
大学生专科学习生活的自我评价
2013/12/07 职场文书
网上开商店的创业计划书
2014/01/19 职场文书
森林防火标语
2014/06/23 职场文书
单位作风建设自查报告
2014/10/23 职场文书
《比尾巴》教学反思
2016/02/24 职场文书
MySQL如何解决幻读问题
2021/08/07 MySQL