昨天回家女朋友吐槽说最近天气总是多变,突然就下雨了~
其实我想说,你出门之前能不能看看天气预报,但是谁让她是我的心头肉呢,所以说是不可能说的,但是咱们可以预防!
我直接用Python整了一手自动发消息,每天定时把天气预报发给她,这回总能长点心了!
大家可以收藏一下,以后绝对用得到!也可以弄成定时给你的女神发送关心的消息,想发什么内容改一改就行了,下一个海王就是你~
首先我们来了解一下思路
这里的需求是什么?
我们是要防止女朋友不知道天气情况,导致被淋雨!
没问题,之前我们刚好使用过发送短信的手段,那我们把它用起来。
我们搜索相关天气频道的获取天气的接口,发送短信,和天气都获取到后,我们就要找材料了。
材料:
1、twilio 模块,直接pip安装
2、一个天气预报的接口
3、女朋友手机号码
4、注册一个twilio账号。
那第四步的话,需要申请一个手机号码,给大家一个网址吧:https://www.twilio.com/
OK,首先来看,如果发送短信到手机。
发送短信代码如下:
def send_message(text):
# 下面认证信息的值在你的 twilio 账户里可以找到
account_sid = "ACecad97aaec8f2e1fbd95b1390ef2acf"
auth_token = "b5a5a863223b6c3dad4f1e488975dd4"
client = Client(account_sid, auth_token)
client.messages.create( to="+86", # 区号+你的手机号码
from_="+150", # 你的 twilio 电话号码
body=text)
print("发送成功")
# 我还给大家准备了大量的Python学习资料,直接在群里就可以免费领取了。
# Python学习交流群:924040232
这么看是不是很简单这个短信代码,没错就是怎么简单。
那剩下的就是搞定天气,那我们接着来看。
我们需要天气接口,并获取接口返回的信息。
我这里给大家提供一个接口:
http://t.weather.sojson.com/api/weather/city/101280101
主要格式:http://t.weather.sojson.com/api/weather/city/+city_id
city_id有一个文件专门提供,待会儿打包带走。
那我们如何获取信息呢?
我们使用到掉接口的模块,这里使用requests。
代码如下:
def get_weather():#获取天气
url = "http://t.weather.sojson.com/api/weather/city/101280101"
html = requests.get(url)
x = html.json()
forecast="""时间:{0},{1}
{2},{3},{4},风力{5},{6}
温馨提示:{7}
""".format(x["data"]["forecast"][0]["ymd"], x["data"]["forecast"][0]["week"],
x["data"]["forecast"][0]["high"], x["data"]["forecast"][0]["low"],
x["data"]["forecast"][0]["fx"], x["data"]["forecast"][0]["fl"],
x["data"]["forecast"][0]["type"], x["data"]["forecast"][0]["notice"])
data="""{0}:{1}
湿度:{2}
pm25:{3}
pm10:{4}
温度:{5}
质量:{6}
提醒:{7}
{8}""".format(x["time"], x["cityInfo"]["city"], x["data"]["shidu"],
x["data"]["pm25"], x["data"]["pm10"], x["data"]["quality"],
x["data"]["wendu"], x["data"]["ganmao"], forecast)#短信格式
print(data)
好了,搞定,成功获取到天气。来看一下输出结果:
2019-06-24 14:13:21:广州市
湿度:97%
pm25:8.0
pm10:11.0
温度:优
质量:23
提醒:各类人群可自由活动
时间:2019-06-24,星期一
高温 30.0℃,低温 25.0℃,无持续风向,风力<3级,大雨
温馨提示:出门最好穿雨衣,勿挡视线
看见这个满满的温馨提示,女朋友都开心了不少吧!
然后再来固定每天早上8:00发送。
来看完整的代码:
import requests
import time
from twilio.rest import Client
def send_message(text):
# 下面认证信息的值在你的 twilio 账户里可以找到
account_sid = "ACecad97aaec8fe1dfbd95b1390ef2acf"
auth_token = "b5a5a8632223b6c3dd4f1e488975dd4"
client = Client(account_sid, auth_token)
client.messages.create( to="+86", # 区号+你的手机号码
from_="+133", # 你的 twilio 电话号码
body=text)
print("发送成功")
def get_weather():
url = "http://t.weather.sojson.com/api/weather/city/101280101"
html = requests.get(url)
x = html.json()
forecast="""时间:{0},{1}
{2},{3},{4},风力{5},{6}
温馨提示:{7}
""".format(x["data"]["forecast"][0]["ymd"], x["data"]["forecast"][0]["week"],
x["data"]["forecast"][0]["high"], x["data"]["forecast"][0]["low"],
x["data"]["forecast"][0]["fx"], x["data"]["forecast"][0]["fl"],
x["data"]["forecast"][0]["type"], x["data"]["forecast"][0]["notice"])
data="""{0}:{1}
湿度:{2}
pm25:{3}
pm10:{4}
温度:{5}
质量:{6}
提醒:{7}
{8}""".format(x["time"], x["cityInfo"]["city"], x["data"]["shidu"],
x["data"]["pm25"], x["data"]["pm10"], x["data"]["quality"],
x["data"]["wendu"], x["data"]["ganmao"], forecast)
send_message(data)#调用发送短信的函数
if __name__=="__main__":
while true:
time.sleep(1)#防止cpu处理太多,加一个一秒的停顿
if time.strftime("%H:%M", time.localtime())=="08:00":
get_weather()
成功发送短信,还是挺简单的!