又到了辭舊迎新的時候,羣裏的紅包也多起來了。然而大佬們總是喜歡趁我不在的時候發紅包,經常打開手機,發現紅包已被搶完,感覺錯過了一個億。
安卓上有不少紅包助手工具,但 iOS 似乎沒有。而且就算有,這種需要很高權限的第三方插件工具總讓人不那麼放心。所以我還是自己來做一個好了。如果要求不那麼高,只要在 出現紅包的時候發出提醒 ,那麼實現起來並不複雜。
先來看下效果(實際使用不需要打開手機,此處爲演示需要):
實現代碼主要有兩個部分:
1、接收紅包消息
直接從手機端微信獲取數據比較麻煩,主流的方法都是 通過微信網頁版來獲取 。因爲網頁版的消息接口可以被抓包分析,比較容易獲取和使用。目前主流的包都是通過這個方式,使用比較多的庫有 itchat 、 wxpy 。這裏我用的是 itchat,通過 pip 即可安裝,之前我也寫過文章介紹:《Crossin:微信機器人進化指南》。
項目地址:
https://github.com/littlecodersh/ItChat
核心代碼:
import itchat
@itchat.msg_register('Note', isGroupChat=True)
def get_note(msg):
if '紅包' in msg['Text']:
print('note:',msg['Text'])
alarm() # 自定義提醒
itchat.auto_login(hotReload=True)
itchat.run()
itchat.logout()
msg_register
是註冊消息時間的響應函數,'Note'
是紅包、轉賬等通知消息類型,isGroupChat=True
包含了羣聊。當網頁版收到紅包後,會顯示“ 收到紅包,請在手機上查看 ”。所以判斷消息文本中包含“紅包”字樣時,就發出提醒。
由於是基於網頁版運行,代碼運行後,需要用 手機掃二維碼登錄 。
2、發通知
最簡單的通知方法就是發出聲音,在 Python 中有幾種不同實現:
def alarm():
# Windows嗡鳴聲
import winsound
winsound.Beep(1000, 3000)
# Mac語音
import os
os.system('say "有人發紅包了,趕緊去搶啊!"')
# 播放MP3
import pygame
pygame.mixer.init()
track = pygame.mixer.music.load('alarm.mp3')
pygame.mixer.music.play()
發出聲音需要用到調用系統接口, Windows 和 Mac 有不同的實現,或者也可以通過 pygame
播放 MP3 文件。上面三種方法保留一種即可。
還嫌不夠的話,可以彈個窗:
import tkinter.messagebox
tkinter.messagebox.showinfo('重要提醒','有人發紅包啦!')
最終效果視頻演示:
python微信紅包提醒演示 https://www.zhihu.com/video/1073230800832622592
完整代碼就上面這兩段,如果你要下載也可以在公衆號 (Crossin的編程教室) 裏回覆關鍵字 紅包 ,裏面還包含了一篇關於紅包算法討論的舊文。
不過由於大量自動化營銷機器人都在使用微信網頁版接口,現在網頁版的功能已被刪減許多,且剛註冊的新號已無法登錄網頁版。有傳言說可能之後會取消網頁版,就像之前的 Web QQ。你在使用 itchat 的時候要注意:
- 不要頻率過高過快的發送消息,也是有很大概率被限制網頁版登錄
- 登錄狀態有可能掉線,而且掉線是不會有通知的
- 不支持領取紅包
- 切勿拿來做什麼不好的事情(憑現在的功能其實也做不了啥)
自動搶紅包實現起來就要複雜很多,需要從安卓 APP 層面入手。而且這本身也有風險,據說搶得太快是有可能被系統識別限制賬號的紅包功能,所以請謹慎嘗試。我這裏也不多說了。
如果你真想自動搶,我給你指條明路:
不用謝!
════
其他文章及回答:
如何自學Python | 新手引導 | 精選Python問答 | Python單詞表 | 人工智能 | 爬蟲 | 我用Python | requests | 計算機視覺 | 字符播放器 | 一圖學Python | 智能防擋彈幕
歡迎搜索及關注公衆號: Crossin的編程教室