背景最近天气越来越冷了。我从和父母聊天中了解到,他们不方便查看每天的天气预报。记得小时候,每天晚上19:30左右,全家人都守在电视机前收听第二天的天气情况。现在对于我们年轻人来说获取天气信息已经很方便了,但是对于我们这些不擅长使用手机的父母来说还是很困难的。他们可能经常使用微信。为此,我写了一个不到40行代码的小工具,每天将当天的天气情况直接发送到微信群。查询天气接口获取天气情况,需要一个查询天气的接口。我在网上找到的。一般注册后,会发送一定数量的电话。我选择了一个,它会免费发送500个查询。让我们看一下该接口的API文档。其中,城市名cityname和key是必填项。http://v.juhe.cn/weather/index?format=2&cityname=%E8%8B%8F%E5%B7%9E&key=你申请的KEYkey值可以在我在juhe.cn界面的一栏看到.我们也可以提前在Postman工具中查看接口是否可以连接。没用过Postman接口工具也没关系,他们的网页上也提供了调试工具。天气查询方法我们可以直接使用requests库请求接口获取json格式的天气信息。json数据包含当天和未来几天的天气信息。这里我只需要当天,当天的数据都在result下的today里面,提取出来用return返回。通过微信发送天气信息我们通过微信向群发送天气信息,这里需要用到调用微信的库,itchat库或者wxpy都可以,这里我使用的是wxpy库。首先导入wxpy库。fromwxpyimport*我们整合了刚才请求接口返回的天气信息,然后使用wxpy库的search方法通过组名找到你需要发送天气信息的组,使用send方法发送.我这里是发到群里,当然你也可以直接发到你的个人微信里。my_friend=bot.friends().search(u'pkbrother')[0]定时操作如果我们每次都需要手动运行,会有点麻烦。我们想让程序在每天固定的时间发送,这里就需要用到Timer定时器。Timer定时器格式:Timer(86400,get_weather)第一个参数表示在指定的时间间隔(单位:秒)后再次调用该方法(第二个参数)。请注意,方法后没有括号。86400秒相隔24小时,也就是一天。t=Timer(86400,get_weather)t.start()t.join()异常处理如果信息发送失败,我们就给自己发送信息,这里我做了异常处理。exceptBaseException:my_friend=bot.friends().search(u'brucepk')[0]#如果发送不成功,给自己发送消息,提醒消息发送失败my_friend.send(u'weathermessagesendingfailed')我们的程序需要持续运行,是否需要一直在电脑上运行?买一年。部署在服务器上,在服务器上运行程序,扫码直接登录微信,下面是我周五开始运行,24小时后,周六再次调用该方法获取新的天气信息。发到群里的效果如下图所示。当然你也可以添加一些界面返回的信息或者你想说的。可能出现的问题1、我的微信无法登录网页版微信,因为itchat库和wxpy库都调用了网页版微信接口。如果你的微信注册时间比较晚,网页版的登录功能被限制,那么你是不能使用这个程序的。跑步。2.如果无法发送到指定的群,请先查看群名,去掉群名中的一些emoji表情。这些特殊符号可能会导致无法识别。如果群名正确,请查看自动发送消息的号码是否已将该群添加到通讯录中。这样一个定时发送消息的小工具就完成了,你还可以在它的基础上进行扩展,增加其他的功能,使其更加完善。本文所有源码通过在公众号“Python知识圈”后台回复“天气小工具”获得。源码中的键值和组名需要自己替换。关注微信公众号Python知识圈,获取更多精彩Python内容。
