又到了辭舊迎新的時候,群裡的紅包也多起來了。然而大佬們總是喜歡趁我不在的時候發紅包,經常開啟手機,發現紅包已被搶完,感覺錯過了一個億。
安卓上有不少紅包助手工具,但 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的程式設計教室