用微信定时给好友发送天气预报
环境
系 统:windows10系统
编 辑 器:Sublime3
编程语言:python3
库 :wxpy、tkinter
前言
之前写过一个程序,获取7天内天气预报的,但是仅仅是获取到七天内某个城市的天气预报,没有想过具体的实际案例。
随后看了一些其他的模块,感觉跟微信结合起来的应用场景还是挺实用的,然后就把它折腾出来了。
基本功能
基本功能其实也是核心功能,主要就是获取指定城市的天气情况
本次利用的是百度的一个api网址:
http://api.map.baidu.com/telematics/v3/weather?location=%s&output=json&ak=TueGDhCvwI6fOrQnLM0qmXxY9N0OkOiQ&callback=?
其中location这个参数后面跟的就是城市,调用这个api可以获取到当前城市天气情况,比如北京当前天气:
得到的是json数据,经过简单的处理就可以得到能看的数据
核心程序如下:
#发送天气情况
def send_weather(location):
path ='http://api.map.baidu.com/telematics/v3/weather?location=%s&output=json&ak=TueGDhCvwI6fOrQnLM0qmXxY9N0OkOiQ&callback=?'
url = path % location
print(url)
response = requests.get(url)
result = response.json()
#如果城市错误就按照海淀发送天气
if result['error'] !=0:
location ='海淀'
url = path % location
print(url)
response = requests.get(url)
result = response.json()
str0 = (' 这是今天的天气预报!\n')
results = result['results']
# 取出数据字典
data1 = results[0]
# 取出城市
city = data1['currentCity']
str1 =' 当前地区: %s\n' % city
# 取出pm2.5值
pm25 = data1['pm25']
str2 =' Pm值 : %s\n' % pm25
# 将字符串转换为整数 否则无法比较大小
if pm25 =='':
pm25 =0
pm25 =int(pm25)
# 通过pm2.5的值大小判断污染指数
if 0 <= pm25 <35:
pollution ='优'
elif 35 <= pm25 <75:
pollution ='良'
elif 75 <= pm25 <115:
pollution ='轻度污染'
elif 115 <= pm25 <150:
pollution ='中度污染'