python实现消息推送_python使用微信推送消息

from wxpy import * #该库主要是用来模拟与对接微信操作的

importrequestsfrom datetime importdatetimeimporttimeimportschedulefrom apscheduler.schedulers.blocking import BlockingScheduler #定时框架

importschedule#微信登录,程序启动会弹出二维码,微信扫一扫登陆

bot = Bot(cache_path=True)#cache_path = True表示开启缓存,这样在缓存生效的时间内可以避免每次启动程序都进行微信扫码了#然后我们写一个变量,用来存在图灵机器人的key,后面会用到(去图灵申请一个免费的机器人即可)

tuling = Tuling(api_key="41648a0b8ed94a50ac08fb1cc7b5d1dd")"""推送名单维护"""

def weather_friend(): #定义一个名为weather_friend的函数

#天气推送名单 也可以送备注来搜索好友

my_friends = [] #创建一个空列表,用来存放好友名单

my_friends.append(bot.friends().search(u'相忘于江湖')[0]) #搜索指定好友并添加至列表

#my_friends.append(bot.friends().search(u'🔥')[0])

#my_friends.append(bot.friends().search(u'佐之格⊙魅殇')[0])

returnmy_friends

# 发送的内容def Weather(location): #定义一个发送天气的函数,并需要接收一个参数(该参数是好友在微信中设置的地点)

#准备url地址

path ='http://api.map.baidu.com/telematics/v3/weather?location=%s&output=json&ak=TueGDhCvwI6fOrQnLM0qmXxY9N0OkOiQ&callback=?'url= path %location

response= requests.get(url) #对该地址和参数进行get请求

result = response.json() #将返回的结果转成json串#为了防止因好友未设置地点而导致程序报错,所以需要对返回的error参数进行判断

if int(result['error']) != 0: #当error为0时,搜索是正常的,一旦不等于0,表示存在错误

location = '北京' #此时将地址设为一个默认地址 如北京

url = path % location #拼接新的url

response = requests.get(url) #在对新的url进行get请求

result =response.json()#下面就是对正确请求到数据后的结果进行处理了

#问候语

greetings = ('早上好!这是今天的天气预报!……\n机器人:你的小野猫\n')try: #此处增加异常处理是因为当好友设置的地区为国外的时候,error返回值不会报错,但不会有results

#取出天气结果

results = result['results']except:return "啊哦,我迷路了,找不到地点!" #当没有该地区的结果时,函数直接返回字符串,此时函数结束#当正常取出结果后,继续进行下列操作

#取出数据字典第一天数据

data1 =results[0]#取出城市

city = data1['currentCity']

str1= '你的城市: %s\n' %city#取出pm2.5值

pm25 = data1['pm25']

str2= 'PM值: %s\n' %pm25#评估空气质量

pollution = calculate(pm25) #此时调用calculate函数进行计算,所以该函数要写在此函数之前

str3 = '污染指数: %s\n' %pollution

result1=results[0]

weather_data= result1['weather_data']

data=weather_data[0]

temperature_now= data['date']

str4= '当前温度: %s\n' %temperature_now

wind= data['wind']

str5= '风向 : %s\n' %wind

weather= data['weather']

str6= '天气 : %s\n' %weather

str7= '温度 : %s\n' % data['temperature']try: #此处异常操作是因为有时候返回结果里面不存在下方内容

message = data1['index']

str8= '穿衣 : %s\n' % message[0]['des']

str9= '我很贴心: %s\n' % message[2]['des']

str10= '运动 : %s\n' % message[3]['des']

str11= '紫外线 : %s\n' % message[4]['des']

str= greetings + str1 + str2 + str3 + str4 + str5 + str6 + str7 + str8 + str9 + str10 +str11except:

str= greetings + str1 + str2 + str3 + str4 + str5 + str6 +str7returnstr#计算pm2.5的程度

defcalculate(pm):if pm == '':

pm25= -1

else:

pm25=int(pm)#通过pm2.5的值大小判断污染指数

if 0 <= pm25 < 35:

pollution= '优'

elif 35 <= pm25 < 75:

pollution= '良'

elif 75 <= pm25 < 115:

pollution= '轻度污染'

elif 115 <= pm25 < 150:

pollution= '中度污染'

elif 150 <= pm25 < 250:

pollution= '重度污染'

elif pm25 >= 250:

pollution= '严重污染'

else:

pollution= '希望你健在'

returnpollution#1- 天气推送

defsend_weather():

my_friends=weather_friend()#发送给好友

for friend inmy_friends:

friend.send(Weather(friend.city))#friend.city 可获取到好友在微信上设置的地点

#给文件传输助手发送消息

bot.file_helper.send('天气推送完毕')"""推送时间维护"""

print('star')

sched=BlockingScheduler() # 定时框架

sched.add_job(send_weather,'cron', month='1-12', day='1-31', hour=21, minute=12) #表示每天的21点12分发送

sched.start() # 服务启动

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值