天天看點

七夕來了,你還沒有女朋友?Python 追女生神器!每天堅持給她發早安

今年的七夕馬上就要到了。那麼,在七夕如何能讓女朋友高興一天呢?當然是在早上給她發一句早安啦!

但是,你能保證你可以早早地起床嗎?要是女朋友都吃完早餐來找你了才起床,那你就完了!

那麼,本文我們就來使用 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