【得捷电子Follow me第2期】任务4:分任务1:日历&时钟
[复制链接]
又是一周过去了,这个任务四的分任务一确实较前几个比较难,这几个晚自习一直在学习相关方面的知识。
发现实现天气的api调用还是比较麻烦的,看了大佬的示例,了解了可以用高德,心知天气的api,不过这些都要注册获取key,比较麻烦
我们可以用这个网站提供的免费api接口
https://www.sojson.com/api/weather.html
这其中又要我们来获取我们所在城市的城市代码
在这里给大家提供对应表
提取码: u8sk
我们get到返回到返回的json字符串后,还要进一步进行解析,前面加上各种名称,如空气质量等等,内容才能被正常阅读
这是下面的具体代码
#导入所需的库
import board
import os
import wifi
import ssl
import socketpool
import adafruit_requests
import displayio
from adafruit_display_text import label
from adafruit_bitmap_font import bitmap_font
display = board.DISPLAY
# 连接上Wi-Fi
wifi.radio.connect('你家Wi-Fi的ssid', '你家Wi-Fi的密码')
# 请求获取JSON
JSON_TIME_URL = "http://t.weather.sojson.com/api/weather/city/101210101" //最后的代码要查那个表来寻找你所在城市所对应的
pool = socketpool.SocketPool(wifi.radio)
requests = adafruit_requests.Session(pool, ssl.create_default_context())
# 解析get到的Json
response = requests.get(JSON_TIME_URL)
weather = response.json()
cityInfo = weather['cityInfo']
city_weather = weather['data']
forecast = city_weather['forecast']
#将解析好的数据与名称一一对应
dis_str = ""+cityInfo['parent']+' '+cityInfo['city']
dis_str += '\n' + weather['time']
dis_str += '\n 空气质量:'+city_weather['quality'] +" " +forecast[0]['type']
dis_str += "\n 最"+forecast[0]['high']+' 最'+forecast[0]['low']
dis_str += "\n 湿度: "+city_weather['shidu']+'\n pm2.5:'+str(city_weather['pm25']) +'\n pm10:'+str(city_weather['pm10'])
dis_str += '\n 提示:'+forecast[0]['notice']
#与任务一的代码基本没区别,用来显示文字
font = bitmap_font.load_font("/fonts/wenquanyi_9pt.pcf")
color = 0x9499CA
text_group = displayio.Group()
text_area = label.Label(font, text=dis_str, color=color)
text_area.x = 0
text_area.y = 10
text_area.line_spacing = 0.8
text_area.scale = 1
text_group.append(text_area)
display.show(text_group)
while True:
pass
再多说一句,随着任务的递进,我们所要导入的库文件也越来越多,然而板子的内存实在是有限,2mb,之前的字体文件太大了,导致连库都拖不进去
只好重新换了一个字体,看来还是要自己搞字体啊,用大佬们做好的内存不容易控制住,顾此失彼了。下周再做任务总结和录视频吧😘😘😘
做作业先😔
|