给母亲大人买了台智能机,好不容易教会她用微信。有一天母亲大人跟我哭诉,平时聊天都很晚回复她。作为IT狗天天加班也没时间看微信,于是写了个微信机器人,目前的功能就是给母亲大人报天气和讲笑话。
废话不多说直接上代码!
#coding=utf-8
import urllib
import urllib2
import re
import json
import time
import threading
import itchat
from itchat.content import *
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
headers = { 'User-Agent' : user_agent }
mylist=[]
i=0
for page in range(1,20):
url = 'http://www.qiushibaike.com/hot/page/' + str(page)
try:
request = urllib2.Request(url,headers = headers)
response = urllib2.urlopen(request)
content = response.read().decode('utf-8')
pattern = re.compile('<div class="author clearfix">.*?href.*?<img src.*?title=.*?<h2>(.*?)</h2>.*?<div class="content">(.*?)</div>.*?<i class="number">.*?</i>',re.S)
items = re.findall(pattern,content)
for item in items:
mytest=item[1].replace('<span>','').replace('</span>','').replace('<br/>','')
mylist.append(mytest)
#print mytest
except urllib2.URLError, e:
if hasattr(e,"code"):
print e.code
if hasattr(e,"reason"):
print e.reason
wlist=[]
def weather(id):
try:
url = 'https://api.heweather.com/x3/weather?cityid='+str(id)+'&key=84e1b2f93f58433abc6cbc'
request = urllib2.Request(url,headers = headers)
response = urllib2.urlopen(request)
content = response.read()
data=json.loads(content)
#mydict={}
myw=data['HeWeather data service 3.0'][0]['daily_forecast']
wlist=[]
for i in range(0,7):
wdict={}
#print myw[i]['date']
wdict['date']=myw[i]['date']
#print myw[i]['cond']['txt_d']
wdict['txt_d']=myw[i]['cond']['txt_d']
#print myw[i]['cond']['txt_n']
wdict['txt_n']=myw[i]['cond']['txt_n']
#print myw[i]['tmp']['max']
wdict['max']=myw[i]['tmp']['max']
#print myw[i]['tmp']['min']
wdict['min']=myw[i]['tmp']['min']
#print myw[i]['wind']['dir']
wdict['dir']=myw[i]['wind']['dir']
#print myw[i]['wind']['sc']
wdict['sc']=myw[i]['wind']['sc']
wlist.append(wdict)
#print wlist
return wlist
except urllib2.URLError, e:
if hasattr(e,"code"):
print e.code
if hasattr(e,"reason"):
print e.reason
#weather()
@itchat.msg_register(TEXT, isGroupChat=True)
def weather_reply(msg):
if msg['Content']==u'天气':
if msg['ActualNickName']=='LIAO':
a=[]
a=weather('CN101210101')
itchat.send(u"亲爱的大帅哥:杭州今天%s的天气,白天 %s,晚上 %s ,最高温度%s, 最低温度%s, %s风力等级%s"%(a[0]['date'],a[0]['txt_d'],a[0]['txt_n'],a[0]['max'],a[0]['min'],a[0]['dir'],a[0]['sc']),itchat.get_chatrooms()[0]['UserName'])
time.sleep(1)
itchat.send(u"亲爱的大帅哥:杭州明天%s的天气,白天 %s,晚上 %s ,最高温度%s, 最低温度%s, %s风力等级%s"%(a[1]['date'],a[1]['txt_d'],a[1]['txt_n'],a[1]['max'],a[1]['min'],a[1]['dir'],a[1]['sc']),itchat.get_chatrooms()[0]['UserName'])
#print wlist
elif msg['ActualNickName']=='pilipala':
c=[]
c=weather('CN101280701')
itchat.send(u"亲爱的老弟:珠海今天%s的天气,白天 %s,晚上 %s ,最高温度%s, 最低温度%s, %s风力等级%s"%(c[0]['date'],c[0]['txt_d'],c[0]['txt_n'],c[0]['max'],c[0]['min'],c[0]['dir'],c[0]['sc']),itchat.get_chatrooms()[0]['UserName'])
time.sleep(1)
itchat.send(u"亲爱的老弟珠海:明天%s的天气,白天 %s,晚上 %s ,最高温度%s, 最低温度%s, %s风力等级%s"%(c[1]['date'],c[1]['txt_d'],c[1]['txt_n'],c[1]['max'],c[1]['min'],c[1]['dir'],c[1]['sc']),itchat.get_chatrooms()[0]['UserName'])
#wlist=[]
else:
b=[]
b=weather('CN101300404')
itchat.send(u"象州今天%s的天气,白天 %s,晚上 %s ,最高温度%s, 最低温度%s, %s风力等级%s"%(b[0]['date'],b[0]['txt_d'],b[0]['txt_n'],b[0]['max'],b[0]['min'],b[0]['dir'],b[0]['sc']),itchat.get_chatrooms()[0]['UserName'])
time.sleep(1)
itchat.send(u"象州明天%s的天气,白天 %s,晚上 %s ,最高温度%s, 最低温度%s, %s风力等级%s"%(b[1]['date'],b[1]['txt_d'],b[1]['txt_n'],b[1]['max'],b[1]['min'],b[1]['dir'],b[1]['sc']),itchat.get_chatrooms()[0]['UserName'])
#print wlist
elif msg['Content']==u"笑话":
itchat.send(mylist[0],itchat.get_chatrooms()[0]['UserName'])
del mylist[0]
elif msg['isAt']==True:
itchat.send(u"我是一只可爱的机器人:可以播报天气预报,也可以讲笑话,回复天气或者笑话",itchat.get_chatrooms()[0]['UserName'])
itchat.auto_login()
itchat.run()