使用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学习笔记:字典的使用示例详解
Jun 13 Python
浅析Python中的多进程与多线程的使用
Apr 07 Python
python实现统计文本中单词出现的频率详解
May 20 Python
python gensim使用word2vec词向量处理中文语料的方法
Jul 05 Python
Python Matplotlib 基于networkx画关系网络图
Jul 10 Python
Python Threading 线程/互斥锁/死锁/GIL锁
Jul 21 Python
python实现翻转棋游戏(othello)
Jul 29 Python
python多线程与多进程及其区别详解
Aug 08 Python
Python调用scp向服务器上传文件示例
Dec 22 Python
基于keras输出中间层结果的2种实现方式
Jan 24 Python
python 实现控制鼠标键盘
Nov 27 Python
python邮件中附加文字、html、图片、附件实现方法
Jan 04 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
关于PHP中操作MySQL数据库的一些要注意的问题
2006/10/09 PHP
Smarty局部缓存的几种方法简介
2014/06/17 PHP
使用PHP实现微信摇一摇周边红包
2016/01/04 PHP
PHP实现QQ快速登录的方法
2016/09/28 PHP
php大小写转换函数(strtolower、strtoupper)用法介绍
2017/11/17 PHP
PHP生成二维码与识别二维码的方法详解【附源码下载】
2019/03/07 PHP
JavaScript 函数式编程的原理
2009/10/16 Javascript
JQuery的read函数与js的onload不同方式实现
2013/03/18 Javascript
js判断生效时间不得大于失效时间的思路及代码
2013/04/23 Javascript
jQuery ajax中使用confirm,确认是否删除的简单实例
2016/06/17 Javascript
JavaScript原生编写《飞机大战坦克》游戏完整实例
2017/01/04 Javascript
jQuery实现用户输入自动完成功能
2017/02/13 Javascript
js实现随机数字字母验证码
2017/06/19 Javascript
vue组件生命周期详解
2017/11/07 Javascript
Vue-router的使用和出现空白页,路由对象属性详解
2018/09/03 Javascript
vue解决一个方法同时发送多个请求的问题
2018/09/25 Javascript
js取0-9随机取4个数不重复的数字代码实例
2019/03/27 Javascript
Vue中computed、methods与watch的区别总结
2019/04/10 Javascript
对于防止按钮重复点击的尝试详解
2019/04/22 Javascript
使用VueRouter的addRoutes方法实现动态添加用户的权限路由
2019/06/03 Javascript
JS实现网站楼层导航效果代码实例
2020/06/16 Javascript
[35:44]2014 DOTA2华西杯精英邀请赛 5 24 iG VS VG
2014/05/26 DOTA
Python中的CURL PycURL使用例子
2014/06/01 Python
python实现简单的计时器功能函数
2015/03/14 Python
python和ruby,我选谁?
2017/09/13 Python
pandas.DataFrame删除/选取含有特定数值的行或列实例
2018/11/07 Python
使用Tensorflow实现可视化中间层和卷积层
2020/01/24 Python
详解查看Python解释器路径的两种方式
2020/10/15 Python
浅谈css3新单位vw、vh、vmin、vmax的使用详解
2017/12/01 HTML / CSS
英国男士时尚网站:Dandy Fellow
2018/02/09 全球购物
IFCHIC台湾:欧美国际设计师品牌
2019/05/18 全球购物
职业培训师职业生涯规划
2014/02/18 职场文书
什么是执行力?9个故事告诉您:成功绝非偶然!
2019/07/05 职场文书
创业计划书之物流运送
2019/09/17 职场文书
php去除deprecated的实例方法
2021/11/17 PHP
python实现一个简单的贪吃蛇游戏附代码
2022/06/28 Python