今年的七夕馬上就要到了。那麼,在七夕如何能讓女朋友高興一天呢?當然是在早上給她發一句早安啦!
但是,你能保證你可以早早地起床嗎?要是女朋友都吃完早餐來找你了才起床,那你就完了!
那麼,本文我們就來使用 Python 的 wxpy 子產品給自己的女朋友發一句早安。
準備
1、導入子產品
安裝 wxpy:
pip install wxpy
導入:
import wxpy
import time
2、登入微信
登入微信的格式:
bot = wxpy.Bot(cache_path=None, console_qr=False, qr_path=None,
qr_callback=None, login_callback=None, logout_callback=None)
參數 | 說明 |
---|---|
cache_path | 設定目前會話的緩存路徑,并開啟緩存功能;為 None (預設) 則不開啟緩存功能。開啟緩存後可在短時間内避免重複掃碼,緩存失效時會重新要求登陸。 設為 True 時,使用預設的緩存路徑 ‘wxpy.pkl’ |
console_qr | 在終端中顯示登陸二維碼,需要安裝 pillow 子產品。可為整數(int),表示二維碼單元格的寬度,通常為 2 (當被設為 True 時,也将在内部當作 2)。也可為負數,表示以反色顯示二維碼,适用于淺底深字的指令行界面。 例如: 在大部分 Linux 系統中可設為 True 或 2,而在macOS Terminal 的預設白底配色中,應設為 -2 |
qr_path | 儲存二維碼的路徑 |
qr_callback | 獲得二維碼後的回調,可以用來定義二維碼的處理方式,接收參數: uuid, status, qrcode |
login_callback | 登陸成功後的回調,若不指定,将進行清屏操作,并删除二維碼檔案 |
logout_callback | 登出時的回調 |
登入時,會顯示一個二維碼讓你掃描登入。那麼,為了在七夕早上能夠不掃碼登入,我們在登入時要把 cache_path 設為 True。這樣,隻需要在七夕前一天掃碼登入,七夕早上就不用重複掃碼了。
找到你的女朋友
首先擷取你的所有好友。
參數 | 說明 |
---|---|
update | 是否更新 |
然後搜尋你的女朋友。
查找朋友中名為 “女朋友的微信名” 的好友,并選擇第一個。
發送消息
我們将時間定為 2021 年 8 月 14 日上午 7 : 30。我們可以通過一個循環判斷是否到達時間。
while True:
now = time.time()
clock = time.mktime(time.strptime('2021-08-14 7:30:00', "%Y-%m-%d %H:%M:%S"))
if now >= clock:
break
time.sleep(1)
然後,發送資訊。
處理消息
為了接收女朋友給我們發的消息,我們需要注冊一個函數。
将 bot.register() 作為函數的裝飾器,即可完成注冊。
其中msg_types參數,是指定接收消息的類型,wxpy中支援以下消息類型:
值 | 描述 |
---|---|
TEXT 或 ‘Text’ | 文本 |
MAP 或 ‘Map’ | 位置 |
CARD 或 ‘Card’ | 名片 |
NOTE 或 ‘Note’ | 提示 |
SHARING 或 ‘Sharing’ | 分享 |
PICTURE 或 ‘Picture’ | 圖檔 |
RECORDING 或 ‘Recording’ | 語音 |
ATTACHMENT 或 ‘Attachment’ | 檔案 |
VIDEO 或 ‘Video’ | 視訊 |
FRIENDS 或 ‘Friends’ | 好友請求 |
SYSTEM 或 ‘System’ | 系統 |
其他參數
參數 | 描述 |
---|---|
chats | 消息所在的聊天對象:單個或清單形式的多個聊天對象或聊天類型,為空時比對所有聊天對象; 既可以是聊天對象執行個體,也可以是對象類。當為類時,表示比對該類型的所有聊天對象。 |
msg_types | 消息的類型:單個或清單形式的多個消息類型,為空時比對所有消息類型 (SYSTEM 類消息除外) |
except_self | 排除由自己發送的消息 |
run_async | 是否異步執行所配置的函數:可提高響應速度 |
enabled | 目前配置的預設開啟狀态,可事後動态開啟或關閉 |
我們來嘗試一下。
@bot.register(chats=girl_friend)
def reply():
girl_friend.send_msg(msg='哈哈')
好啦!
阻塞程序
如果不阻塞程序,那麼程式執行到這裡就會退出,無法接收女朋友的消息并回複了。是以,我們需要阻塞程序。
wxpy 的 embed() 可在堵塞線程的同時,進入 Python 指令行。
參數 | 說明 |
---|---|
shell: str | 指定指令行類型,可設為 ‘ipython’,’bpython’,’python’,或它們的首字母; 若為 None,則按上述優先級進入首個可用的 Python 指令行。 |
local: dict | 設定本地變量環境,若為 None,則擷取進入之前的變量環境。 |
banner: str | 設定歡迎内容,将在進入指令行後展示。 |
完成!
接下來,我們隻需等待即可。
完整代碼
import wxpy
import time
bot = wxpy.Bot(cache_path=True)
girl_friend = friends.search('女朋友的微信名')[0]
while True:
now = time.time()
clock = time.mktime(time.strptime('2021-08-14 7:30:00', "%Y-%m-%d %H:%M:%S"))
if now >= clock:
break
time.sleep(1)
girl_friend.send_msg(msg='早安')
@bot.register(chats=girl_friend)
def reply():
girl_friend.send_msg(msg='哈哈')
wxpy.embed()
題外話:
作者最近用 tkinter 寫了一個網絡音樂播放器,它支援以下功能:
- 酷我音樂搜尋、下載下傳
- 進度條檢視、控制(本文)
- 滾動歌詞
據我所知,這恐怕是全站第一個同時擁有這些功能的音樂播放器了。因為我在開發時也曾經搜尋過資料,但幾乎沒有找到後兩個的實作方法,最後是我自己解決的。
傳送門:https://blog.csdn.net/weixin_48448842/article/details/119592536
希望多多支援一下作者謝謝!
作者部落格:https://blog.csdn.net/weixin_48448842