利用python在微信群中签到、抢沙发(适用于任何账号)
利用python在微信群中签到、抢沙发
注意
- 程序仅能在电脑上运行,运行时需要保证群界面在最前端且不被移动。
背景
我是一名高中生(2020年),疫情期间,在家上网课,有的老师让我们在班群里签到。
其中一个群反应速度特别快,老师一说“签到吧”,不到1秒,近半个班的人就回复了。所以,要是抢到了沙发,就特别有成就感。
实现前
实现目标需做到两点:
- 判断是否提交签到,
- 提交签到。
思考:
1. 判断是否提交签到
也就是判断老师是否发表了签到消息。
由观察可知,在微信群中,若拉动条在最下端,这时群里来了新消息,且行数一定时,新消息会出现在固定位置。
而我们老师在发布签到通知时,总是发“签到吧”或者“同学们签到吧”之类文字,不会超过一行。因此消息行数固定为一行。
接下来通过分析新消息的头像,就可以判断信息是否是老师发送的,避免在有同学手滑提前回复时,程序出现误判;
如下图,是这时需判断发送人。
消息若是老师发的,那十有八九是通知签到,不是的话,发送就发送了吧。这么做可以省去程序对文本的分析。
所以,我们只要不断截屏检测该固定位置,判断是否是老师的头像,就可以判断是否应该签到了。
至于如何实现,我稍后说,下面介绍第二个需求的思考。
2. 提交签到
这里,使程序模拟键盘按下回车来发送消息。
提前打下发送信息,保持光标在编辑框中。
- 综上,程序流程如下:
用PPT做的,我没能用Markdown做出来。
具体实现
首先是截屏,这里我使用的是
pyautogui。
截图用法如下:
pyautogui.screenshot(region=[710, 720, 500, 250])
# x, y , x1, y1
运行上述代码会截取屏幕 (x, y) 到 (x + x1, y + y1) 区间的内容。
用IPython的话,图像会直接显示在控制台上。
然后,多次尝试,找到头像的坐标。
我进行了多次尝试。
找到位置后定义函数:
def getscreenshot():
return pyautogui.screenshot(region=[425,590,45,47])
注意,这个坐标不一定适用于你的电脑哦。
接下来,截取老师的头像,留作正确结果。用返回图像的save方法,保存图片到和程序的相同路径下,如
XXX.save('老师的头像.png')。在加载时,用PIL模块的Image的open方法加载图片就好,如:
goal = Image.open('老师的头像.png')
我使用模块
pynput模拟键盘。这个模块也可以控制、监听鼠标和键盘,并且是跨平台的。这里只用到了一点。
代码如下:
import pynput
def enter():
ctr = pynput.keyboard.Controller() #获得控件。
ctr.press(pynput.keyboard.Key.enter) #按下回车。
ctr.release(pynput.keyboard.Key.enter)#松开回车。
最后,定义main函数:
def main():
while getscreenshot() != goal:
pass
enter()
print("Success.")
全部代码如下:
import pynput
from PIL import Image
goal = Image.open('老师的头像.png')
#加载目标文件,需要你自己提前用getscreenshot函数截取。
def getscreenshot():
return pyautogui.screenshot(region=[425,590,45,47])
def enter():
ctr = pynput.keyboard.Controller()
ctr.press(pynput.keyboard.Key.enter)
ctr.release(pynput.keyboard.Key.enter)
def main():
while getscreenshot() != goal:#如果截图和目标不相同,就一直循环。
pass
enter()
print("Success.")
if __name__ == '__main__':
main()
闲谈
写完程序,感觉用python实现这种简单的图像识别并不太困难。
而我们那位老师,每次让我们签到,然后手动核对、填写Excel在上交学校,做了很多重复的机械性工作。
如果他会python,上网课这么长时间,足够把这项工作自动化了,毕竟elif足够胜任了。
学编程真好。
利用python在微信群中签到、抢沙发(适用于任何账号)的更多相关文章
- 利用python进行微信好友分析
欢迎python爱好者加入:学习交流群 667279387 本文主要利用python对个人微信好友进行分析并把结果输出到一个html文档当中,主要用到的python包为itchat,pandas,py ...
- 利用python实现微信小程序游戏跳一跳详细教程
利用python实现微信小程序游戏跳一跳详细教程 1 先安装python 然后再安装pip <a href="http://newmiracle.cn/wp-content/uploa ...
- 如何利用Python实现自动打卡签到
需求描述 我们需要登录考勤系统(网页端,非手机端)进行签到,如果不想每天都早早起来打卡签到,就可以通过写程序实现这一功能. 业务梳理 通过长时间的早起打卡签到发现规律,我每天只是不停的点击,签到,都是 ...
- 如何利用python制作微信好友头像照片墙?
这个不难,主要用到itchat和pillow这2个库,其中itchat用于获取微信好友头像照片,pillow用于拼接头像生成一个照片墙,下面我简单介绍一下实现过程,代码量不多,也很好理解,实验环境wi ...
- 利用Python查看微信共同好友
思路 首先通过itchat这个微信个人号接口扫码登录个人微信网页版,获取可以识别好友身份的数据.这里是需要分别登录两人微信的,拿到两人各自的好友信息存到列表中. 这样一来,查共同好友就转化成了查两个列 ...
- 利用 Python 分析微信好友性别和位置
今天用到一个非常有意思的库——itchat,它已经完成了 wechat 的个人账号API接口,使爬取个人微信信息更加方便. 下载 爬取微信好友信息 这样就将你所有微信好友的信息都返回了,我们并不需要 ...
- 利用Python统计微信联系人男女比例以及简单的地区分布
寒暄的话不多说,直接进入主题. 运行效果图: [准备环境] Python版本:v3.5及其以上 开发工具:随意,此处使用Pycharm [依赖包] 1.itchat (CMD运行:pip instal ...
- 利用Python玩微信跳一跳
创建python项目jump_weixin,新建python程序jump.py 需要4个辅助文件[adb.exe,AdbWinApi.dll,AdbWinUsbApi.dll,fastboot.exe ...
- 利用python 实现微信公众号群发图片与文本消息功能
在微信公众号开发中,使用api都要附加access_token内容.因此,首先需要获取access_token.如下: #获取微信access_token def get_token(): paylo ...
随机推荐
- 立体匹配-----NCC视差匹配
目录 一.立体匹配算法 1.立体匹配算法分类 二.NCC 视差匹配方法 1.原理 2.NCC计算公式 3.算法流程 4.代码实现 5.不同场景运行 三.结论 四.遇到的问题及解决方法 一.立体 ...
- python实现秒杀商品的微信自动提醒功能(附代码)
技术实现原理:获取京东的具体的商品信息,然后再使用微信发送提醒 工具:需要两个微信号,这两个微信号互为好友 如果你处于想学Python或者正在学习Python,Python的教程不少了吧,但是是最新的 ...
- windows下部署.netcore+docker系列四 (部署程序,重点就要来了)
前面的都是为这章做准备,加油把骚年们 PS:C# 项目可以按照流程一步步来,java 偶然其他的可以找下其他的网上资源 1.在 VS2019中 添加docker 支持 (其实也就是追加一个Docker ...
- python学习笔记(六)---文件操作与异常处理机制
文件读取 读取整个文件 要读取文件,需要一个包含几行文本的文件.下面首先来创建一个文件,它包含精确到小数点后30位的圆周率值,且在小数点后每10位处都换行: pi_digits.txt 3.14159 ...
- Git (一)预设环境和免密登录
背景 一直用的svn,这段时间换了之后才发现git的强大功能.缺点就是可能上手比较难一点. 接下来就带你Git入门 Git是什么? Git是目前世界上最先进的分布式版本控制系统 Git有什么特点?好用 ...
- Spring Boot中使用Swagger CodeGen生成REST client
文章目录 什么是Open API规范定义文件呢? 生成Rest Client 在Spring Boot中使用 API Client 配置 使用Maven plugin 在线生成API Spring B ...
- Comparable 接口与Comparator的使用的对比
package com.yhqtv.java; import org.junit.Test; import java.util.Arrays; import java.util.Comparator; ...
- 配置IIS5.5/6.0 支持 Silverlight
在安装完Silverlight1.1 Alpha后,要使自己的IIS服务器支持Silverlight的浏览还需要配置一下IIS网站的 Http头->MIME映射添加内容如下:扩展名 ...
- Spring依赖注入—@Resource注解使用
1.@Autowired默认按类型装配(这个注解是属业spring的),默认情况下必须要求依赖对象必须存在,如果要允许null 值,可以设置它的required属性为false,如:@Autowire ...
- JWT的浅谈
在实际工作过程中,运行jmeter脚本的时候,开发给了一个jwt的授权信息,到底是做什么用的呢,翻阅了一些资料,整理如下: 一.JWT(Json Web Token)是什么 JWT是一串格式为xxxx ...



