设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
查看: 4534|回复: 0
打印 上一主题 下一主题

用Python写个了红包提醒,再不怕错过一个亿了

[复制链接]

169

主题

1

好友

733

积分

版主

Rank: 7Rank: 7Rank: 7

跳转到指定楼层
楼主
发表于 2019-1-28 15:29:10 |只看该作者 |倒序浏览

又到了辞旧迎新的时候,群里的红包也多起来了。然而大佬们总是喜欢趁我不在的时候发红包,经常打开手机,发现红包已被抢完,感觉错过了一个亿。

安卓上有不少红包助手工具,但 iOS 似乎没有。而且就算有,这种需要很高权限的第三方插件工具总让人不那么放心。所以我还是自己来做一个好了。如果要求不那么高,只要在出现红包的时候发出提醒,那么实现起来并不复杂。

先来看下效果(实际使用不需要打开手机,此处为演示需要):

实现代码主要有两个部分:
1、接收红包消息
直接从手机端微信获取数据比较麻烦,主流的方法都是通过微信网页版来获取。因为网页版的消息接口可以被抓包分析,比较容易获取和使用。目前主流的包都是通过这个方式,使用比较多的库有 itchat、wxpy。这里我用的是 itchat,通过 pip 即可安装,之前我也写过文章介绍:《Crossin:微信机器人进化指南》。

项目地址:

https://github.com/littlecodersh/ItChat

核心代码:
  1. import itchat
  2. @itchat.msg_register('Note', isGroupChat=True)
  3. def get_note(msg):
  4.     if '红包' in msg['Text']:
  5.         print('note:',msg['Text'])
  6.         alarm()  # 自定义提醒
  7. itchat.auto_login(hotReload=True)
  8. itchat.run()
  9. itchat.logout()
复制代码
msg_register是注册消息时间的响应函数,'Note'是红包、转账等通知消息类型,isGroupChat=True包含了群聊。当网页版收到红包后,会显示“收到红包,请在手机上查看”。所以判断消息文本中包含“红包”字样时,就发出提醒。

由于是基于网页版运行,代码运行后,需要用手机扫二维码登录。
2、发通知
最简单的通知方法就是发出声音,在 Python 中有几种不同实现:
  1. def alarm():
  2.     # Windows嗡鸣声
  3.     import winsound
  4.     winsound.Beep(1000, 3000)
  5.     # Mac语音
  6.     import os
  7.     os.system('say "有人发红包了,赶紧去抢啊!"')
  8.     # 播放MP3
  9.     import pygame
  10.     pygame.mixer.init()
  11.     track = pygame.mixer.music.load('alarm.mp3')
  12.     pygame.mixer.music.play()
复制代码
发出声音需要用到调用系统接口,Windows 和 Mac 有不同的实现,或者也可以通过 pygame 播放 MP3 文件。上面三种方法保留一种即可。

还嫌不够的话,可以弹个窗:
  1. import tkinter.messagebox
  2. tkinter.messagebox.showinfo('重要提醒','有人发红包啦!')
复制代码
最终效果视频演示:
  python微信红包提醒演示 https://www.zhihu.com/video/1073230800832622592  
完整代码就上面这两段,如果你要下载也可以在公众号(Crossin的编程教室)里回复关键字 红包,里面还包含了一篇关于红包算法讨论的旧文。

不过由于大量自动化营销机器人都在使用微信网页版接口,现在网页版的功能已被删减许多,且刚注册的新号已无法登录网页版。有传言说可能之后会取消网页版,就像之前的 Web QQ。你在使用 itchat 的时候要注意:
不要频率过高过快的发送消息,也是有很大概率被限制网页版登录登录状态有可能掉线,而且掉线是不会有通知的不支持领取红包切勿拿来做什么不好的事情(凭现在的功能其实也做不了啥)
自动抢红包实现起来就要复杂很多,需要从安卓 APP 层面入手。而且这本身也有风险,据说抢得太快是有可能被系统识别限制账号的红包功能,所以请谨慎尝试。我这里也不多说了。

如果你真想自动抢,我给你指条明路:

不用谢!


════

其他文章及回答:

如何自学Python | 新手引导 | 精选Python问答 | Python单词表 | 人工智能 | 爬虫 | 我用Python | requests | 计算机视觉 | 字符播放器 | 一图学Python | 智能防挡弹幕

欢迎搜索及关注公众号:Crossin的编程教室

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-11-21 18:01 , Processed in 0.024460 second(s), 24 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部