項目連接:github.com/QiDaChen/pe…python
筆者是一個coder,git
一個有女友的coder。程序員
一個有女友但特別懶的coder,github
一個有女友但特別懶可仍是很想讓女友如沐春風的coder,api
一個有女友但特別懶可仍是很想讓女友如沐春風可記性不大好的coder,服務器
後來發現,呆板如筆者,實在難於兼容女友大人的需求版本,譬如,天天的早安晚安打卡老是由於一把遊戲或者一個需求的影響忘得死死的,當想起來了的時候發現該到下一輪的打卡了。老是由於這樣讓人難以控制的緣由須要解釋安撫半天,這讓筆者絕望而且懊惱。直到有一天看到這句話,人工智能能夠替代人類從事一部分工做,把人類從繁雜、重複的勞動中解脫出來,從事更加須要感性思惟的工做,如藝術、科研、神學、哲學等工做。一瞬間醍醐灌頂,繁雜、重複、解脫、解脫,一個可怕可是讓筆者興奮不已的想法開始在腦海中生根發芽。撩妹本領不夠,編碼技能來湊。微信
有了這個想法以後,筆者就迅速開始準備策劃,千萬不要等女友受不了我以後才作出來呀,眼看他起高樓,眼看他宴賓客,眼看他樓塌了,這是多麼絕望的情景呀,畢竟,有女友是一件值得讓程序員驕傲的事,但是有過女友,就要遜色太多了,想到這裏,百度已經幫筆者找到了解決方案,itchat,迅速翻文檔,測試代碼,:itchat.readthedocs.io/zh/latest/ 通過簡單的api研究,安裝完模塊,就開始了第一個版本的開發工做,數據結構
1:python 控制微信自動發送消息dom
import itchat
itchat.auto_login()
itchat.send('Hello, world', toUserName='filehelper')
複製代碼
完工運行,文件助手收到了,個人第一條消息,但是來不及興奮,筆者趕忙進行研究文檔,看怎麼去給特定好友好友發送信息,toUserName應該是每一個好友都有的相似網名或者id的東西,想到這裏,就決定得先把全部好友的信息拿下來研究一番,ide
friends = itchat.get_friends(update=True)[1:]
複製代碼
拿到好友信息,進行簡單的數據結構分析,便發現了其中的奧祕
def dealFriendsData(friends):
''' 函數的參數是微信好友信息的字典 微信全部好友的信息抓取 好友信息中的網名 id 備註 個性簽名 城市 性別 都被保存在了DataFrame數據幀裏面 留做備用 轉換好的df被做爲返回值返回 '''
fs = {}
for i in friends:
fs[i['NickName']] = {'UserName':i['UserName'],'Remark':i['RemarkName'],'Sex':i['Sex'],'qianming':i['Signature'],'city':i['City']}
dfs = pd.DataFrame(fs).T
return dfs
複製代碼
通過以上操做,好友的信息便被安排的明明白白,經過對信息中的命名的檢查,一眼找到 UserName的信息,
想要找到女友的username手到擒來
she_username = df[df['Remark']=='女友的備註'].iloc[0].UserName
複製代碼
ok!至此,只剩下時間的問題了,要選在什麼時間呢,不能太早,不能太晚,不能每天準點發,一個隨機時間還不足以讓筆者費腦筋
import time
from random import randint
def initConfig():
''' 設置問候語和問候時間段的地方 words 是問候語設置位置 time 由於時間是隨機的,可是有範圍,[7,2]表示<7點以後兩小時以內的隨機時間> '''
config = {'morning':{'flag': True,'words':'早安','time':[7,2]},
'afternoon':{'flag': True,'words':'晚安','time':[21,2]},
'daily':{'flag': True,'words':qinghua(),'time':[11,7]}}
for i,j in config.items():
config[i]['unix'] = today + j['time'][0]*3600 + randint(1,j['time'][1]*3600)
return config
#定時發送信息
today = 1558886400#北京時間2019-05-27 00:00:00 unix時間戳
oneday = 24*60*60
nextday = today + oneday
set_ = initConfig()
while 1:
now = int(time.time())#得到當前的時間戳
temp = now - nextday
#一天過完以後
if temp > 0:
today = nextday
nextday += oneday
set_ = initConfig()
#檢測 時間
else:
for i,j in set_.items():
if now-j['unix'] > 0 and j['flag']:
itchat.send_msg(j['words'],she_username)
set_[i]['flag'] = False
複製代碼
定時發送通過unix時間戳的靈活運用,實現了完美隨機,接下來就是情話了,筆者是沒有說情話的天分的,可是做爲一個spider,歷來都不怕,筆者準備了一個txt文本,把日常看到的聽到的情話整理了起來,隨機讀取一下試試,
def qinghua():
''' 從qinghua.txt中隨機取一句話出來 注意在文本中添加新的情話時候要換行 '''
with open ('qinghua.txt','r') as file:
word = file.read()
word_list = word.split('\n')
return choice(word_list)
複製代碼
到此爲止,全部的問題全都被解決,整理代碼上傳到github地址:github.com/QiDaChen/pe…其中除了定時爲發送問候,還有實時微信消息控制爬蟲<百度一下、圖靈機器人、工做數據讀取等功能>,而後阿里雲服務器對代碼進行運行,今後,腳本幫我哄女友,而我有更多的時間寫個人代碼。
用戶指南,進入github地址後,紅框中的兩個文件就能夠實現每日問候的功能,python環境及擴展包,
python:3.x
itchat
pandas
模塊安裝都很簡單,直接黑框輸入《pip install itchat》
配置完成後,就等一個美好的早晨,代碼往閒置多年的服務器上一扔就開始腳本的運行把,至於爲何是早晨,是由於我在午後運行了下代碼以後,女友收到消息讓我解釋一下是麼叫陪你滿腔豪邁和悲歌。