【玩具】使用Python自動化發送微信消息進行訂水


事情是這樣的,我知道淘寶上有賣一種USB接口的大按鈕,估計是給工廠或者醫院之類的場景設計的,樣子長這樣:

 

 

然后我就一直挺想搞一個的,不為別的,就是玩,但是想來想去也沒想到這玩意兒對我而言能有啥用途,就暫且擱置了這個想法。直到這幾周來,每次發現辦公室桶裝礦泉水被喝完了之后,都需要微信通知訂水師傅來送水,就萌生了個想法,我何不搞個誇張的大按鈕,每次訂水的時候直接拍一下按鈕然后自動發送消息呢?

然后就是可行性研究,需要確認的地方有這些:

1. 如何實現自動發送微信消息?

2. 如果第一步可以,那如何通過這個按鈕調用我寫好的自動發消息的腳本?

關於如何發送微信消息這里,我粗略的查了下,發現微信這個壞東西比QQ還要嚴,壓根不存在QQ機器人這類的框架或工具的,網頁版微信也早就被拋棄了,沒有API可以調用(其實也正常,真要出個能模擬用戶的API,黑產不樂瘋了)。那么咋辦呢?

答案是Python的pyautogui圖像自動化庫。

哎呀,雖然以前就聽說過什么“人生苦短,我用Python”這類的話,但是之前也沒咋認真接觸過,而這不看則已,一看驚人啊,這個Python的圖像自動化庫簡直神器,完美契合了我的需求,他可以根據你提供的圖片,自動在屏幕上尋找相似的地方,然后返回坐標,得到目標的具體坐標了豈不是什么都能干了。

第二個問題則更好解決,找一個可以自定義快捷鍵的大按鈕即可。

然后就在網上找pyautogui這個庫的代碼,依葫蘆畫瓢的寫了一個打開微信並發送消息的腳本:

 # coding=utf8
import pyautogui
import pyperclip
import time

contacter = "訂水"
msg = '送兩桶水,麻煩收到回復'

#打開微信
location=pyautogui.locateCenterOnScreen('WeChat.png',confidence=0.9)
if location is not None:
    print('打開微信')
    pyautogui.click(location.x,location.y,clicks=1,interval=0,duration=0.2,button='left')
    #搜索訂水
    location=pyautogui.locateCenterOnScreen('search.png',confidence=0.7)
    if location is not None:
        print('搜索用戶')
        pyautogui.click(location.x,location.y,clicks=1,interval=0,duration=0.2,button='left')
        pyperclip.copy(contacter)
        pyautogui.hotkey('ctrl', 'v')
        time.sleep(1)
        #打開聊天窗口,輸入文字
        location=pyautogui.locateCenterOnScreen('contacter.png',confidence=0.7)
        if location is not None:
            print("打開聊天框")
            pyautogui.click(location.x,location.y,clicks=1,interval=0,duration=0.2,button='left')
            #time.sleep(1)
            #焦點在輸入框,輸入文字            
            location=pyautogui.locateCenterOnScreen('input.png',confidence=0.7)
            if location is not None:
                print("輸入文字並發送")
                pyautogui.click(location.x,location.y,clicks=1,interval=0,duration=0.2,button='left')
                pyperclip.copy(msg)
                pyautogui.hotkey('ctrl', 'v')
                pyautogui.press('enter')
print("結束")

 

關於發送消息的那個地方,這個庫就有些力不從心了,因為他能提供的功能是模擬鼠標和鍵盤的操作,但是打字嘛...特別是用拼音打出漢字,真就得輸入拼音然后加空格,通過輸入法打出來,而這個辦法實際上不是很穩定。

那么什么辦法實現漢字的輸入呢?那自然是我們最熟悉的Ctrl+C、Ctrl+V了。

而Python還有個庫(pyperclip)就提供了Windows剪貼板的功能,可以將字符串復制進剪貼板,然后就可以調用這個自動化庫pyautogui里面的熱鍵方法來觸發Ctrl+V,將復制到的文字粘貼到目標位置。

至此,代碼上的准備工作已經結束,保存后創建一個快捷方式,設置為Ctrl+數字鍵盤上的減號鍵。

然后將淘寶來的這個大按鈕接到電腦上,設置這個按鈕觸發上述的快捷鍵,到此就大功告成了。

 

后記:今天是完成之后的第一次使用,使用很穩定,孩子很喜歡,下次還來。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM