【玩具】使用Python自动化发送微信消息进行订水
事情是这样的,我知道淘宝上有卖一种USB接口的大按钮,估计是给工厂或者医院之类的场景设计的,样子长这样:

然后我就一直挺想搞一个的,不为别的,就是玩,但是想来想去也没想到这玩意儿对我而言能有啥用途,就暂且搁置了这个想法。直到这几周来,每次发现办公室桶装矿泉水被喝完了之后,都需要微信通知订水师傅来送水,就萌生了个想法,我何不搞个夸张的大按钮,每次订水的时候直接拍一下按钮然后自动发送消息呢?
然后就是可行性研究,需要确认的地方有这些:
1. 如何实现自动发送微信消息?
2. 如果第一步可以,那如何通过这个按钮调用我写好的自动发消息的脚本?
关于如何发送微信消息这里,我粗略的查了下,发现微信这个坏东西比QQ还要严,压根不存在QQ机器人这类的框架或工具的,网页版微信也早就被抛弃了,没有API可以调用(其实也正常,真要出个能模拟用户的API,黑产不乐疯了)。那么咋办呢?
答案是Python的pyautogui图像自动化库。
哎呀,虽然以前就听说过什么“人生苦短,我用Python”这类的话,但是之前也没咋认真接触过,而这不看则已,一看惊人啊,这个Python的图像自动化库简直神器,完美契合了我的需求,他可以根据你提供的图片,自动在屏幕上寻找相似的地方,然后返回坐标,得到目标的具体坐标了岂不是什么都能干了。
第二个问题则更好解决,找一个可以自定义快捷键的大按钮即可。
然后就在网上找pyautogui这个库的代码,依葫芦画瓢的写了一个打开微信并发送消息的脚本:
# coding=utf8
import pyautogui
import pyperclip
import time
contacter = "订水"
msg = '送两桶水,麻烦收到回复'
#打开微信
location=pyautogui.locateCenterOnScreen('WeChat.png',confidence=0.9)
if location is not None:
print('打开微信')
pyautogui.click(location.x,location.y,clicks=1,interval=0,duration=0.2,button='left')
#搜索订水
location=pyautogui.locateCenterOnScreen('search.png',confidence=0.7)
if location is not None:
print('搜索用户')
pyautogui.click(location.x,location.y,clicks=1,interval=0,duration=0.2,button='left')
pyperclip.copy(contacter)
pyautogui.hotkey('ctrl', 'v')
time.sleep(1)
#打开聊天窗口,输入文字
location=pyautogui.locateCenterOnScreen('contacter.png',confidence=0.7)
if location is not None:
print("打开聊天框")
pyautogui.click(location.x,location.y,clicks=1,interval=0,duration=0.2,button='left')
#time.sleep(1)
#焦点在输入框,输入文字
location=pyautogui.locateCenterOnScreen('input.png',confidence=0.7)
if location is not None:
print("输入文字并发送")
pyautogui.click(location.x,location.y,clicks=1,interval=0,duration=0.2,button='left')
pyperclip.copy(msg)
pyautogui.hotkey('ctrl', 'v')
pyautogui.press('enter')
print("结束")
关于发送消息的那个地方,这个库就有些力不从心了,因为他能提供的功能是模拟鼠标和键盘的操作,但是打字嘛...特别是用拼音打出汉字,真就得输入拼音然后加空格,通过输入法打出来,而这个办法实际上不是很稳定。
那么什么办法实现汉字的输入呢?那自然是我们最熟悉的Ctrl+C、Ctrl+V了。
而Python还有个库(pyperclip)就提供了Windows剪贴板的功能,可以将字符串复制进剪贴板,然后就可以调用这个自动化库pyautogui里面的热键方法来触发Ctrl+V,将复制到的文字粘贴到目标位置。
至此,代码上的准备工作已经结束,保存后创建一个快捷方式,设置为Ctrl+数字键盘上的减号键。
然后将淘宝来的这个大按钮接到电脑上,设置这个按钮触发上述的快捷键,到此就大功告成了。
后记:今天是完成之后的第一次使用,使用很稳定,孩子很喜欢,下次还来。
【玩具】使用Python自动化发送微信消息进行订水的更多相关文章
- python实现发送微信消息
import json from threading import Timer from wxpy import * import requests import urllib.parse def g ...
- python使用itchat发送微信消息提醒
最近在学习一点python,先找了找有趣的应用,实际修改跑了一下提高兴趣程度. 找到itchat,它的简介是这样的: “itchat是一个开源的微信个人号接口,使用python调用微信从未如此简单. ...
- 全网最全的Windows下Anaconda2 / Anaconda3里Python语言实现定时发送微信消息给好友或群里(图文详解)
不多说,直接上干货! 缘由: (1)最近看到情侣零点送祝福,感觉还是很浪漫的事情,相信有很多人熬夜为了给爱的人送上零点祝福,但是有时等着等着就睡着了或者时间并不是卡的那么准就有点强迫症了,这是也许程序 ...
- Python下发送定时消息给微信好友
""" Description:时间可以改长一点 一分钟一个 Author:Nod Date: Record: #---------------------------- ...
- Python发送微信消息
针对此 需要安装itchat第三方模块 采用pip安装就可以了 pip install itchat import itchatimport time#引入时间函数进行测试time_format= ...
- 登录以及发送微信消息itchat 库
项目地址点这里 itchat itchat是一个开源的微信个人号接口,使用python调用微信从未如此简单. 使用不到三十行的代码,你就可以完成一个能够处理所有信息的微信机器人. 当然,该api的 ...
- Python+wxpy 实现微信消息轰炸
需要导入wxpy,在终端中输入以下命令即可 pip install wxpy 如果没有pip先安装pip,安装好了的直接输入命令即可,安装好了但是显示没有安装的可能是没有将pip添加到PATH中,需要 ...
- 03: itchat发送微信消息
1.1 微信机器人自动回复消息 1.运行程序,会弹出二维码,扫描授权后即可实现自动回复信息 参考01 参考02 #coding=utf8 import itchat, time from itcha ...
- Appium+python自动化获取toast消息的方法
转载地址:https://www.cnblogs.com/shangren/p/8191879.html 1. 首先执行这个命令:npm install -g cnpm --registry=http ...
随机推荐
- ThreadLocal部分源码分析
结构演进 早起JDK版本中,ThreadLocal内部结构是一个Map,线程为key,线程在"线程本地变量"中绑定的值为Value.每一个ThreadLocal实例拥有一个Map实 ...
- 【Spring】IoC容器 - 依赖查找
前言 上一篇文章已经学习了[IoC的主要实现策略]有2种: 1.依赖查找 2.依赖注入 这里稍加详细的介绍一下依赖查找 1.依赖查找的方式 依赖查找的方式可以以多种维度来划分: 1.按名称/类型/注解 ...
- F1西班牙大奖赛-加泰罗尼亚赛道地图及简介
背景 银石双赛结束,第二轮三连赛的最后一场将转战西班牙,第50届F1西班牙大奖赛将于本周末(正赛2020-08-15)在加泰罗尼亚赛道上演. 作为近年来F1承办季前测试的赛道,所有人都对这里再熟悉不过 ...
- 【UE4 C++ 基础知识】<14> 多线程——AsyncTask
概念 AsyncTask AsyncTask 系统是一套基于线程池的异步任务处理系统.每创建一个AsyncTas,都会被加入到线程池中进行执行 AsyncTask 泛指 FAsyncTask 和 FA ...
- 从原理—实战分析SQL注入
前言 SQL注入是web安全中最常见的攻击方式,SQL注入有很多方法,但如果只知道payload或只用用sqlmap,不知道原理,感觉也很难掌握,这次就总结一下我所遇到的SQL注入方法,原理分析+题目 ...
- BUAA-OO-UML
BUAA-OO-UML 作业架构设计分析 第一次作业 类图如下: 这个架构十分简明,就是在底层数据和调用者之间建立起一层隔离层.但其实可以将转换过程延迟到调用阶段. 第二次作业 类图如下: 架构基本同 ...
- Noip模拟20 2021.7.19
T1 玩具 题目读错意思直接报零... 拼接方式没读懂以为是个数学题,用卡特兰数,可是的确想多了 数据范围表达出你怎么暴力都行,选择$n^3,dp$ 相当于一片森林,每次多加一条边就合并成一棵树 在$ ...
- 零基础如何更好的学习Linux
本节旨在介绍对于初学者如何学习 Linux 的建议.如果你已经确定对 Linux 产生了兴趣,那么接下来我们介绍一下学习 Linux 的方法. 如何去学习 学习大多类似庖丁解牛,对事物的认识一般都是由 ...
- 基于Vue的工作流项目模块中,使用动态组件的方式统一呈现不同表单数据的处理方式
在基于Vue的工作流项目模块中,我们在查看表单明细的时候,需要包含公用表单信息,特定表单信息两部分内容.前者表单数据可以统一呈现,而后者则是不同业务的表单数据不同.为了实现更好的维护性,把它们分开作为 ...
- jquery 实现 <imput>标签 密码框显示/隐藏密码功能
1 <!doctype html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 < ...