事情是這樣的:今天晚上,女朋友讓我十二點催她睡覺,
不過,可是我實在太困了,熬不下去…… 是吧?女朋友哪有睡覺重要?
但,女朋友的命令,我是不敢違抗的……
但是睡覺也不能缺!
這時候我們該怎么辦呢?是時候讓Python登場了!
Python登場
這次我們來做一個自動發送微信的程式,在深夜十二點的時候給女朋友發去訊息,也算是盡了一個男朋友的義務了,
安裝和匯入
我們需要兩個模塊:apscheduler,pyautogui
快捷鍵 Windows+r 打開運行控制框,輸入 cmd,進入命令列,輸入:
pip install apscheduler pip install pyautogui
匯入:
import pyautogui from datetime import datetime from apscheduler.schedulers.blocking import BlockingScheduler # 阻塞當前行程的調度器 # blocking型別調度器會阻塞當前行程,若你想要后臺運行的調度器,可以使用以下代碼: # from apscheduler.schedulers.background import BackgroundScheduler
pyautogui
首先我們來實作自動發送訊息
pyautogui 是一個非常強大的庫,可以操作滑鼠和鍵盤,我們將用它來完成自動操作電腦,
先來做一些基本設定:
pyautogui.PAUSE = 1 # 設定每一步操作的間隔(秒),可防止操作太快
然后我們登錄微信,最小化,
接下來我們把滑鼠放到微信的任務欄圖示上,運行以下陳述句,獲取此時游標的坐標,回傳一個Point物件:
print(pyautogui.position()) # 列印坐標,Point(x=148, y=879) icon_position = pyautogui.position() # Point(x=148, y=879)
打開微信,選擇女朋友的回話視窗,將滑鼠放在輸入框上,同樣獲取游標坐標,為了將焦點鎖定到輸入框以方便待會的輸入,
print(pyautogui.position()) # 列印坐標,Point(x=174, y=751) entry_position = pyautogui.position() # Point(x=174, y=751)
接下來,控制程式依次點擊這兩個點:
pyautogui.click(icon_position) # 默認左鍵單擊 # pyautogui.click(148, 879) pyautogui.click(entry_position) # pyautogui.click(174, 751)
打開微信并鎖定焦點后,我們開始輸入文本, 輸入文本可以有兩種方式: pyautogui.typewrite(['o', 'n', 'e', 'enter']) 在方法中傳入一個串列,里面每一元素都是單個字母或特殊按鍵 pyautogui.typewrite('You can type multiple letters in this way') 傳入字串,但不能同時列印字母和特殊按鍵, 這兩種方式都不能直接輸入中文,所以只能依靠你的輸入法來輸入中文了,
pyautogui.typewrite([*list('zhengzai '), *list('jinxing '), 'shift', *list('pyautogui'), 'shift', *list('shiyan '), 'enter'], 0.1) # 第一個引數是輸入文本,第二個是輸入每個字符的間隔時間
為了使我們的操作更加
人模狗樣
像人的操作,我么來加上移動滑鼠的代碼:
pyautogui.moveTo(icon_position, duration=2) # duration為執行時長,可選 pyautogui.click(icon_position) pyautogui.moveTo(entry_position, duration=2) pyautogui.click(entry_position) pyautogui.typewrite([*list('zhengzai '), *list('jinxing '), 'shift', *list('pyautogui'), 'shift', *list('shiyan '), 'enter'], 0.1) # 第二個引數為按下每一個字母的間隔,可選
看看效果:
當然,若是你要輸入的內容實在很多,又嫌麻煩,可以通過復制粘貼來實作:
import pyperclip pyperclip.copy('正在進行發中文試驗,看到請忽略,更不要罵傻逼') # 復制 pyautogui.hotkey('ctrl', 'v') # 按下組合鍵的方法,ctrl+v粘貼 pyautogui.press('enter') # 按下按鍵
這樣,我們便完成了自動發送微信訊息的功能了,
apscheduler APScheduler 是一個Python庫,可實作延遲調度要執行Python代碼的功能,可以只執行一次,也可以定期執行,可以隨時添加新任務或洗掉舊任務,能夠十分方便地進行定時任務,
scheduler = BlockingScheduler() # 實體化一個調度器 scheduler.add_job(main, 'date', run_date=datetime(2021, 8, 18, 24, 00, 00)) # 添加任務 scheduler.start()
add_job 方法在這里傳了 3 個引數,第一個為到時間后要執行的函式,第二個為觸發器的型別,這里選用的是 date 觸發器,特定的時間點觸發,作業任務只會執行一次,第三個引數 run_date 就是執行的時間,在這前我已經把自動發送訊息的代碼封裝為了 main 函式,只需到時后呼叫即可,
完整代碼
import pyautogui import pyperclip from datetime import datetime from apscheduler.schedulers.blocking import BlockingScheduler def main(): pyautogui.PAUSE = 0 icon_position = pyautogui.Point(x=148, y=879) # 任務欄圖示位置 entry_position = pyautogui.Point(x=174, y=751) # 輸入框位置 pyautogui.moveTo(icon_position, duration=1) # duration為執行時長,可選 pyautogui.click(icon_position) pyautogui.moveTo(entry_position, duration=0.7) pyautogui.click(entry_position) pyperclip.copy('快去睡覺') pyautogui.hotkey('ctrl', 'v') pyautogui.press('enter') pyperclip.copy('笨豬') pyautogui.hotkey('ctrl', 'v') pyautogui.press('enter') scheduler = BlockingScheduler() # 實體化 scheduler.add_job(main, 'date', run_date=datetime(2021, 8, 18, 24, 00, 00)) # 添加任務 scheduler.start()
完成啦!現在可以去睡覺了,
結果
第二天早上起床,我被我媽媽罵了一頓,問我為什么午夜12點的時候電腦還亮著,而且還在自己發微信!
不過,好在女朋友沒丟,我成功完成了女朋友的任務!
– the End –
好啦,這篇文章就到這里了,以上就是我分享的全部內容,感謝閱讀!
⑥專案原始碼案例分享有
如果你用得到的話可以直接拿走,在我的QQ技術交流群里群號:948351247(純技術交流和資源共享,廣告勿入)以自助拿走
點擊這里 領取
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/295501.html
標籤:其他