天气变冷了,给你的爱人制作一个天气提醒小助手
前言
文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。
作者: PK哥
PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取
python免费学习资料以及群交流解答点击即可加入
如今,对于我们年轻人来说,获取天气情况很方便,但是对于我们不擅长用手机的父母来说,还是很吃力,他们用的多的还是微信吧。为此,我用不到 40 行代码写了一个小工具,每天定时把当天的天气情况直接发到微信群里。
查询天气接口
要获取天气情况,需要一个查询天气的接口,网上找了一下,一般都是注册后送一定调用次数的,我选择了一个,免费送 500 次查询次数的。
我们看看接口的 API 文档。
其中城市名 cityname 和 key 是必填项。
http://v.juhe.cn/weather/index?format=2&cityname=%E8%8B%8F%E5%B7%9E&key=您申请的KEY
key 值在 juhe.cn 我的接口那一栏中可以看到。
我们也可以事先在 Postman 工具中看看接口能否调通。
Postman 接口工具没用过的没关系,他们网页上也提供了调试工具。
查询天气方法
我们直接用 requests 库请求接口就能获得 json 格式的天气信息,json 数据中包含了当天和未来几天的天气信息,这里我只需要当天的,当天数据都在 result 下的 today 里,提取出来用 return 返回。
通过微信发送天气消息
我们通过微信把天气信息发到群里,这里我们需要用到调用微信的库,itchat 库或者 wxpy 都可以,这里我用了 wxpy 库。
先导入 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 小时后,周六再次调用方法,获取新的天气信息。
发到群里效果如下图,当然,你还可以多加一些接口返回的信息或者自己想说的话。
可能存在的问题
1、我的微信登录不了网页版微信
因为 itchat 库和 wxpy 库都是调用微信的网页版接口,如果你的微信注册比较晚,被限制了网页版登录功能,那这个程序你无法运行。
2、发送不到指定群
先检查下群名称,把群名称一些 emoji 表情符号去掉,这些特殊符号可能导致无法识别。
群名称没错的话,看看自动发送信息的这个号有没有把这个群添加到通讯录。
这样,一个定时发送消息的小工具就完成了,你也可以在上面扩展,加上其他功能,这样就更完善了。
完整代码
- jinshan-message.py
from twilio.rest import Client
import requests
from threading import Timer
from time import sleep# def get_weather():
# url = 'http://v.juhe.cn/weather/index?cityname=上海&key=b0da46b36d3a2cce53fac9cdf51dc98a' # 城市名cityname和key值换成自己的
# weather_json = requests.get(url).json()
# temperature = weather_json['result']['today']['temperature']
# weather = weather_json['result']['today']['weather']
# week = weather_json['result']['today']['week']
# city = weather_json['result']['today']['city']
# dressing_advice = weather_json['result']['today']['dressing_advice']
# return temperature, weather, week, city, dressing_advicedef get_msg():url = 'http://open.iciba.com/dsapi/' # 金山词霸每日一句 api 链接html = requests.get(url)content = html.json()['content'] # 获取每日一句英文语句note = html.json()['note'] # 获取每日一句英文的翻译语句return content, notewhile True:try:content, note = get_msg()msg_all = content + '\n' + note + '\n' + 'from 爱你的人'# Your Account Sid and Auth Token from twilio.com/console# DANGER! This is insecure. See http://twil.io/secureaccount_sid = '输入你的account_sid'auth_token = '输入你的auth_token'client = Client(account_sid, auth_token)message = client.messages \.create(body=msg_all, from_='+输入你获得的免费号码', to='+输入你验证的接收号码')print(message.sid)print(msg_all)t = Timer(86400, get_msg) # Timer(定时器)是 Thread 的派生类,用于在指定时间后调用一个方法。t.start()t.join()# 异常处理,发送失败except:print('发送失败')break
parent-weather.py
from wxpy import *
import requests
from threading import Timer
from time import sleepbot = Bot(cache_path=True) # 扫码登录微信,如果在Linux环境中运行,加一个参数 bot = Bot(console_qr=-2,cache_path=True)def get_weather():url = 'http://v.juhe.cn/weather/index?cityname=上海&key=xxx' # 城市名cityname和key值换成自己的weather_json = requests.get(url).json()temperature = weather_json['result']['today']['temperature']weather = weather_json['result']['today']['weather']week = weather_json['result']['today']['week']city = weather_json['result']['today']['city']dressing_advice = weather_json['result']['today']['dressing_advice']return temperature, weather, week, city, dressing_advicewhile True: # !!!调试时记得先把while True注释掉,不然会一直重复发送失败,一天限制100次调用的,成功后再加上注释try:temperature, weather, week, city, dressing_advice = get_weather()# 发送到微信群里my_groups = bot.groups().search('你的群名称')[0] # 换成发送信息的群名称msg = '今天是:' + week + '\n' \+ city + '的天气:' + weather + '\n' \+ '今天温度:' + temperature +'\n' \+ '穿衣指南:' + dressing_adviceprint(msg)my_groups.send(msg)# 单独私发微信# my_friend = bot.friends().search(u'pk')[0] # 此处是对方自己的昵称,不是微信号,也不是你的备注。# my_friend.send(msg) # 发送文字t = Timer(86400, get_weather) # Timer(定时器)是 Thread 的派生类,用于在指定时间后调用一个方法。t.start()t.join()# 异常处理,发送失败,发送提醒消息给自己except BaseException:my_friend = bot.friends().search(u'xxx')[0] # 发送不成功,则发送消息给自己,提醒消息发送失败 xxx改成你自己微信的昵称my_friend.send(u'天气消息发送失败,请停止程序进行调试')break
- weather-message.py
from twilio.rest import Client
import requests
from threading import Timer
from time import sleepdef get_weather():url = 'http://v.juhe.cn/weather/index?cityname=上海&key=输入你自己的key,在v.juhe.cn网站注册获取' # 城市名cityname和key值换成自己的weather_json = requests.get(url).json()temperature = weather_json['result']['today']['temperature']weather = weather_json['result']['today']['weather']week = weather_json['result']['today']['week']city = weather_json['result']['today']['city']dressing_advice = weather_json['result']['today']['dressing_advice']return temperature, weather, week, city, dressing_advicewhile True:try:temperature, weather, week, city, dressing_advice = get_weather()msg = '今天是:' + week + '\n' \+ city + '的天气:' + weather + '\n' \+ '今天温度:' + temperature +'\n' \+ '穿衣指南:' + dressing_adviceprint(msg)# Your Account Sid and Auth Token from twilio.com/console# DANGER! This is insecure. See http://twil.io/secureaccount_sid = '输入你的account_sid'auth_token = '输入你的auth_token'client = Client(account_sid, auth_token)message = client.messages \.create(body=msg, from_='输入你获取的号码', to='+输入你验证过的号码')print(message.sid)t = Timer(86400, get_weather) # Timer(定时器)是 Thread 的派生类,用于在指定时间后调用一个方法。t.start()t.join()# 异常处理,发送失败except BaseException:print('发送失败')break
天气变冷了,给你的爱人制作一个天气提醒小助手相关推荐
- python发微信提醒天气冷了注意保暖_给客户发天气变冷注意保暖短信 提醒客户注意保暖的温馨句子...
导语:气温突然大跌,亲朋好友们都在相互问候,让彼此多穿点,别着凉.但是,很多人却忘了一些非常重要的人,那就是我们的"上帝"们.那么,给客户发天气变冷注意保暖短信要怎么写呢?下面小编 ...
- python发微信提醒天气冷了注意保暖_天气变冷的短信问候语_天凉了注意保暖的微信问候语...
天气变冷的短信问候语 降温了,花落的声音风知道,思念的感觉心知道,变冷的温 度冬知道. 关于天气变冷的短信问候怎么说呢 ? 下面是小编给大家 分享的天气变冷的短信问候语,仅供大家参阅. 天气变冷的短信 ...
- python发微信提醒天气冷了注意保暖_天气变冷了,用Python给父母制作一个天气提醒小助手~...
背景 最近天气变冷了,和父母聊天中得知,他们查看每天的天气预报不太方便,我记得小时候,每晚 19:30 左右,一家人都要守在电视机旁边收听第二天的天气情况. 如今,对于我们年轻人来说,获取天气情况很方 ...
- python发微信提醒天气冷了注意保暖_2019天气变冷的朋友圈说说 注意保暖的微信问候语...
2019天气变冷的朋友圈说说 注意保暖的微信问候语 ★1☆ .天气转凉,送你一条神奇的短信,它具有"防寒保暖"之功效,凡是收到之人,寒风吹不到,感冒够不着,如果转发效果更加,快快行 ...
- python发微信提醒天气冷了注意保暖_秋天了,降温天气变冷注意保暖的微信早安问候语...
国庆过后又进入到十一月天气是真的寒冷起来了,在这里小编和你一起来分享秋天了,降温天气变冷注意保暖的微信早安问候语,下面一起来看看. 1.轻轻的秋走了,正如冬轻轻地来,挥一挥衣袖,带来了寒冷的气流,那飘 ...
- python天气预报制作过程_天气变冷了,用Python给父母制作一个天气提醒小助手~...
背景 最近天气变冷了,和父母聊天中得知,他们查看每天的天气预报不太方便,我记得小时候,每晚 19:30 左右,一家人都要守在电视机旁边收听第二天的天气情况. 如今,对于我们年轻人来说,获取天气情况很方 ...
- 天气变冷了,给父母制作一个天气提醒小助手
本文转自公众号"Python知识圈" 点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本 ...
- 天气变冷了,用Python给爸妈制作一个天气提醒小助手
天气慢慢变冷了,和父母聊天中得知,他们查看每天的天气预报不太方便,我记得小时候,每晚 19:30 左右,一家人都要守在电视机旁边收听第二天的天气情况. 如今,对于我们年轻人来说,获取天气情况很方便,但 ...
- pyqt 事件更新图片显示_使用PyQTamp;树莓派制作一个天气站
吃灰的很久树莓派 b 偶然翻出来 发挥下余热,系统采用官方固件 Raspberry Pi OS(Raspbian) ,由于我的屏幕时由HDMI 驱动所以无需特殊配置其他驱动(我这装了下卖家给的驱动调整 ...
最新文章
- oracle每天一次差异备份,Oracle的差异增量备份和累积增量备份(zt)
- mongo explain分析详解
- C语言从青铜到王者——基础知识总结
- LeetCode题解之Copy List with Random Pointer
- 智慧城市_城市大脑:加速构建智慧城市
- MySQL常用数据类型以及内置函数
- 关于设置table样式后,不停点击按钮table中的数据会逐渐被最后一行替换的问题...
- windows 设置 rocketmq环境变量_RocketMQ 开篇
- 前端人最需要的学习资料有哪些?我现在免费送给你!
- 学习webpack系列之二 ---- (管理静态资源)
- linux tar 命令无效,linux Tar 命令
- ai中如何插入签名_如何在PDF文件中插入手写签名?手把手教会你,轻松设置签名...
- 移动端开发H5页面点击按钮后出现闪烁或黑色背景的解决办法
- 二冲程发动机均值模型仿真
- S100数字源表之LDO芯片电学特性测试方案
- 前端实现图片验证码效果(数字和字母)
- 2018桂林J - Stone Game(博弈)
- java打印小票的时间_Java编程打印购物小票实现代码
- golang语言 []interface{}和interface{}
- Java Web(day05) —— 请求和响应
热门文章
- c语言5 gt 2 gt 7 gt 8,格雷矿脉查找器【GT5】
- c语言current_ch如何使用,C++ seekp和seekg函数用法详解
- Spark 随机森林算法原理、源码分析及案例实战
- git一键切换多个项目分支并拉取远程
- python之爬去微信通信录好友头像
- 【内外网映射】通过外网ip来访问虚拟机服务器
- css position:absolute 居中
- android note分析,三星Note9七大亮点解析
- LeetCode每日一题———365. 水壶问题
- mysql分表的原则_Mysql分表准则