天气变冷了,给父母制做一个天气提醒小助手

背景

最近天气变冷了,和父母聊天中得知,他们查看天天的天气预报不太方便,我记得小时候,每晚 19:30 左右,一家人都要守在电视机旁边收听次日的天气状况。json

现在,对于咱们年轻人来讲,获取天气状况很方便,可是对于咱们不擅长用手机的父母来讲,仍是很吃力,他们用的多的仍是微信吧。为此,我用不到 40 行代码写了一个小工具,天天定时把当天的天气状况直接发到微信群里。服务器

查询天气接口

要获取天气状况,须要一个查询天气的接口,网上找了一下,通常都是注册后送必定调用次数的,我选择了一个,免费送 500 次查询次数的。微信

咱们看看接口的 API 文档。工具

其中城市名 cityname 和 key 是必填项。spa

http://v.juhe.cn/weather/index?format=2&cityname=%E8%8B%8F%E5%B7%9E&key=您申请的KEY复制代码

key 值在 juhe.cn 个人接口那一栏中能够看到。3d

咱们也能够事先在 Postman 工具中看看接口可否调通。调试

Postman 接口工具没用过的不要紧,他们网页上也提供了调试工具。​code

查询天气方法

咱们直接用 requests 库请求接口就能得到 json 格式的天气信息,json 数据中包含了当天和将来几天的天气信息,这里我只须要当天的,当天数据都在 result 下的 today 里,提取出来用 return 返回。orm

经过微信发送天气消息

咱们经过微信把天气信息发到群里,这里咱们须要用到调用微信的库,itchat 库或者 wxpy 均可以,这里我用了 wxpy 库。cdn

先导入 wxpy 库。

from wxpy import *复制代码

咱们把刚才的请求接口返回的天气信息整合一下,而后用 wxpy 库的 search 方法经过群名称找到你须要发送天气消息的这个群,用 send 方法发送。

我这里是发送到群里,固然,你也能够直接发送给我的微信。

my_friend = bot.friends().search(u'pk哥')[0]复制代码

定时操做

若是每次都须要咱们手动运行,那就有点麻烦,咱们要让程序天天在固定时间定时发送,这里须要用到 Timer 定时器。

Timer 定时器格式:

Timer(86400, get_weather)复制代码

第一个参数表示相隔指定时间(单位:秒)后再次调用方法(第二个参数),注意,方法后不要带括号。

86400 秒就是相隔 24 小时,也就是一天的时间。

t = Timer(86400, get_weather)  
t.start()
t.join()复制代码

异常处理

若是信息发送失败,咱们把信息发给本身,这里我作了一个异常处理。

except BaseException:
        my_friend = bot.friends().search(u'brucepk')[
            0]  # 发送不成功,则发送消息给本身,提醒消息发送失败
        my_friend.send(u'天气消息发送失败')复制代码

咱们的程序须要持续运行,那是否是须要一直在电脑上运行啊,这样有点不现实啊,咱们把它部署到服务器上就能够搞定了,如今服务器也很便宜,作活动的时候通常 100 元之内就能够买一年。

部署在服务器

在服务器中运行程序,直接扫码登陆微信,下面是我周五开始运行的,相隔 24 小时后,周六再次调用方法,获取新的天气信息。发到群里效果以下图,固然,你还能够多加一些接口返回的信息或者本身想说的话。

可能存在的问题

一、个人微信登陆不了网页版微信由于 itchat 库和 wxpy 库都是调用微信的网页版接口,若是你的微信注册比较晚,被限制了网页版登陆功能,那这个程序你没法运行。

二、发送不到指定群先检查下群名称,把群名称一些 emoji 表情符号去掉,这些特殊符号可能致使没法识别。

群名称没错的话,看看自动发送信息的这个号有没有把这个群添加到通信录。

这样,一个定时发送消息的小工具就完成了,你也能够在上面扩展,加上其余功能,这样就更完善了。

本文所有源码在公众号「Python 知识圈」后台回复「天气小工具」获取,源码中 key 值和群名称需换成本身的。

本文由博客一文多发平台 OpenWrite 发布!

相关文章
相关标签/搜索