这一节来说说怎么显示天气和星座图标。
首先说说天气部分,和各位大佬一样我用的也是心知天气,前期工作也是和其他大佬的一样,注册、登录、获取私钥,这里链接附上:心知天气 - 高精度气象数据 - 天气数据API接口 - 行业气象解决方案
然后是下载心知天气的天气现象图标,我数了一下,一共是40中天气,链接附上:天气现象代码说明 | 心知天气文档
然后是处理天气现象图标,把它们全部转化成dat文件。转化方法我在第(4)节已经说的很详细了,这里我直接把文件附上,大家拿来即用即可。
同理的还有十二星座的图标,我也一起放在压缩包里面。十二星座的图标还是我从一张图片里一张一张截图出来的,制作成的。
心知天气的api:"https://api.seniverse.com/v3/weather/now.json?key=你的私钥&location=ningbo&language=en&unit=c"
见链接:天气实况 · 心知科技
接下来写我们的获取天气函数:
import network,time,urequests,ujson
def tianqi():
data = urequests.get("https://api.seniverse.com/v3/weather/now.json?key=你的私钥&location=你的城市&language=en&unit=c")
weth=ujson.loads(data.text)
print(weth)
return weth["results"][0]["now"]["text"]
print('ye'+tianqi())
用request请求的方式获取该城市的天气信息。
weth["results"][0]["now"]["text"]就是现实天气现象。
显示天气现象的代码:
def show_img(m):
with open("selwe_dat/"+str(m)+".dat", "rb") as f:
for row in range(64):
buffer = f.read(128)
tft.show_img(160,row+30,224,row+30, buffer)
代码很好理解,不赘述,但是我们还要处理下,因为:
很显然,白天和晚上的表示方式是不一样的。我数了下,就是'Fair'、'Partly Cloudy'、'Mostly Cloudy'三种,白天和晚上有区别。
把代码完善下:
def tianqi_show(m):
if str(tianqi())!='Fair' and str(tianqi())!='Partly Cloudy' and str(tianqi())!='Mostly Cloudy':
show_img(str(tianqi()))
else:
if m>=6 and m<=18:
show_img(str(tianqi()))
else:
show_img('ye'+tianqi())
这里的大于6小于18,很好理解,代表白天嘛!
接下来是显示星座,很简单:
def star_img(m):
with open("star_dat/star"+str(m)+".dat", "rb") as f:
for row in range(64):
buffer = f.read(128)
tft.show_img(30,row+20,94,row+20, buffer)
当然星座要判断下:
if timeshow[4]<=21:
if timeshow[3]>=4:
star_img(timeshow[3]-3)
else:
star_img(timeshow[3]+9)
else:
if timeshow[3]>=4:
star_img(timeshow[3]-2)
else:
star_img(timeshow[3]+10)
比如白羊座是第一个星座,3.21~4.21,如果是3月的白羊座,必然是21号以后。