使用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的Django框架中的ORM建立查询API
Apr 20 Python
python的文件操作方法汇总
Nov 10 Python
解决pycharm的Python console不能调试当前程序的问题
Jan 20 Python
python构建指数平滑预测模型示例
Nov 21 Python
Pytorch在dataloader类中设置shuffle的随机数种子方式
Jan 14 Python
将python文件打包exe独立运行程序方法详解
Feb 12 Python
django日志默认打印request请求信息的方法示例
May 17 Python
基于python纯函数实现井字棋游戏
May 27 Python
python中数字是否为可变类型
Jul 08 Python
PyCharm设置注释字体颜色以及是否倾斜的操作
Sep 16 Python
Python浮点型(float)运算结果不正确的解决方案
Sep 22 Python
python Autopep8实现按PEP8风格自动排版Python代码
Mar 02 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
咖啡的植物学知识
2021/03/03 咖啡文化
PHP面向对象编程快速入门
2006/10/09 PHP
php数组键值用法实例分析
2015/02/27 PHP
PHP脚本监控Nginx 502错误并自动重启php-fpm
2015/05/13 PHP
thinkPHP5框架实现基于ajax的分页功能示例
2018/06/12 PHP
MacOS下PHP7.1升级到PHP7.4.15的方法
2021/02/22 PHP
Javascript select下拉框操作常用方法
2009/11/09 Javascript
基于jquery实现的服务器验证控件的启用和禁用代码
2010/04/27 Javascript
prettify 代码高亮着色器google出品
2010/12/28 Javascript
基于jquery的无缝循环新闻列表插件
2011/03/07 Javascript
编写自己的jQuery插件简单实现代码
2011/04/19 Javascript
jQuery Tools tooltip使用说明
2012/07/14 Javascript
用jquery存取照片的具体实现方法
2013/06/30 Javascript
jquery.ui.draggable中文文档(原文翻译)
2013/11/15 Javascript
jquery ajax传递中文参数乱码问题及解决方法说明
2014/02/07 Javascript
json+jQuery实现的无限级树形菜单效果代码
2015/08/27 Javascript
通过jquery实现页面的动画效果(实例代码)
2016/09/18 Javascript
详解如何在项目中使用jest测试react native组件
2018/02/09 Javascript
解决使用bootstrap的dropdown部件时报错:error:Bootstrap dropdown require Popper.js问题
2018/08/30 Javascript
使用vue2实现带地区编号和名称的省市县三级联动效果
2018/11/05 Javascript
Angular4.0动画操作实例详解
2019/05/10 Javascript
pm2启动ssr失败的解决方法
2019/06/29 Javascript
layer弹出层自适应高度,垂直水平居中的实现
2019/09/16 Javascript
[02:27]2018DOTA2亚洲邀请赛趣味视频之钓鱼大赛 谁是垂钓冠军?
2018/04/05 DOTA
[01:19:23]2018DOTA2亚洲邀请赛 4.5 淘汰赛 Mineski vs VG 第二场
2018/04/06 DOTA
对numpy中array和asarray的区别详解
2018/04/17 Python
Python中捕获键盘的方式详解
2019/03/28 Python
Python 读取用户指令和格式化打印实现解析
2019/09/02 Python
CSS3 Notes: -webkit-box-reflect实现倒影的实例
2016/12/08 HTML / CSS
详解rem 适配布局
2018/10/31 HTML / CSS
ivx平台开发之不用代码实现一个九宫格抽奖功能
2021/01/27 HTML / CSS
Huda Beauty官方商店:化妆和美容产品
2020/09/05 全球购物
前台文员我鉴定
2014/01/12 职场文书
领导参观欢迎词
2015/01/26 职场文书
感恩节寄语2015
2015/03/24 职场文书
法律意见书范文
2015/05/20 职场文书