小姐姐知道我用微信機器人和她聊天以後,把我拉黑了

前言

事情是這樣的,最近認識的一位小姐姐有天天早晨看天氣預報的習慣。在我看來,不少人起牀第一件事情就是看微信消息,既然這樣,我就勉爲其難天天早晨給小姐姐發送一則天氣預報吧。html

開始幾天,我是使用很原始的方法,本身去獲取天氣預報截圖,再手動發送給小姐姐。連續幾天以後我一想:不對呀,我怎麼說也是一個程序猿,怎麼能用這麼 low 的方式呢。python

聯想起以前看到的一個開源 python 庫—— wxpy,一個很是強大的微信 api 調用類庫,正好知足我當前的須要,那話很少說,開幹。linux

任務分解

  • 調用微信 api 發送簡單消息
  • 獲取當日天氣預報截圖信息
  • 設置定時任務

調用微信 api 發送簡單消息

本程序主要是經過 wxpy 庫使用的,參考其官網文檔,咱們須要作以下準備工做:web

1.Python 環境(本人使用的是 mac 自帶的 python2.7)chrome

2.安裝 wxpy 庫api

pip install -U wxpy -i "https://pypi.doubanio.com/simple/"(國內用戶使用豆瓣的源)
複製代碼

獲取聊天對象,發送消息

咱們先試着獲取文件傳輸助手,拿它練練手瀏覽器

from wxpy import *# 初始化一個機器人對象bot = Bot()# 獲取文件傳輸助手file_helper = bot.file_helper# 向文件傳輸助手發送消息file_helper.send('Hello')
複製代碼

經過暱稱獲取指定微信好友緩存

# 獲取暱稱爲 『志明』,這邊的暱稱指你給的好友備註friend = bot.friends().search('志明')friend.send(u'Hello 志明') #在字符前面加上 u 爲了不編碼轉換的異常,由於存在中文
複製代碼

獲取當日天氣預報截圖信息

國內天氣網的 api 不少,我找了一個簡單易用的天氣查詢網站——中國天氣bash

img

個人需求是把網頁中紅框圈起來的內容截取,轉化成圖片,一搜索還真的找個這麼一個神器——webkit2png,官網地址微信

webkit2png

這是 linux 環境下,可以把網頁內容轉成圖片的命令行工具,mac 能夠直接經過 brew 安裝

brew install webkit2png
複製代碼

拿 google 主頁練練手,在命令行輸入以下命令,這邊有個小問題,webkit2png 默認必須使用 https 的連接,須要手動修改一下 webkit2png 的程序,能夠參考連接 參考連接

webkit2png http://www.google.com/
複製代碼

能夠在當前執行命令行的目錄當中發現 google 主頁圖片

img

那我想要截取頁面的某個部分轉換成圖片呢,webkit2png 徹底 ok,查看使用文檔以後發現它是能夠傳入 CSS選擇器參數

img

經過 chrome 瀏覽器的調試工具,能夠很容易的找到指定區域的網頁元素所對應的選擇器

img

來試試看經過選擇器進行網頁截圖,在命令行輸入以下指令,能夠看到對應的網頁截圖

webkit2png --ignore-ssl-check --selector=#today http://www.weather.com.cn/weather1d/101020100.shtml\#search
複製代碼

img

設置定時任務

萬事俱備,只欠東風,咱們來設定一個定時的 job,這邊我是用的是 BlockingScheduler 庫,很是簡單易用

if __name__ == '__main__':    from apscheduler.schedulers.blocking import BlockingScheduler    sched = BlockingScheduler()
    # 設置保活 job,這個 job 每 10 秒給我本身發送一條消息 # 讓微信機器人長期處於一個在線的狀態 sched.add_job(keep_online, 'interval', seconds=10) # 設置定時發送天氣預報的任務,經過 cron 表達式,指定發送週期爲週一至週五天天早上 6:30 sched.add_job(weather_notification, 'cron', day_of_week='1-5', hour=6, minute=30) sched.start()
複製代碼

這邊有個小技巧,因爲首次啓動微信聊天機器人須要掃碼登陸,所以 wxpy 提供了緩存功能,意味着可讓微信保持長期在線,不用重複掃碼登陸

# 實例化機器人對象時,指定 cache_path 參數啓動緩存功能,qr_path 則是二維碼路徑bot = Bot(console_qr=2, cache_path=True, qr_path='wepy.pkl')
複製代碼

結尾

知道真相以後,小姐姐決定不理我了,由於她不知道和她聊天的是機器人仍是我本人,因此這些功能慎用,感動的同時她還吐槽到:怪不得程序猿單身羣體數量這麼高

相關文章
相關標籤/搜索