bilibili-视频演示
以下内容
-
LVGL显示GIF图片
-
HTTP GET请求API获取哔哩哔哩当前粉丝数
旧图展示
参考文档
《MicroPython 工具 Ampy:给ESP32传送JPG,GIF等文件》
本期内容对应视频会演示流程
旧的GIF仅供参考,现在有更好的显示方式
现在使用新的LVGL方法显示
官方文档
https://docs.lvgl.io/8.3/libs/fsdrv.html#usage
LVGL 有一个文件系统模块,为各种文件系统驱动程序提供抽象层
引入文件驱动,设置存储标识为S
# 导入LVGL文件系统
import fs_driver
fs_drv = lv.fs_drv_t()
fs_driver.fs_register(fs_drv, 'S')
下载gif动图
使用ampy传输文件到ESP32—S3
查看ESP32-S3文件,说明传输成功
设置GIF
官方文档
https://docs.lvgl.io/8.3/libs/gif.html
# 设置哔哩哔哩gif
gif_bilibili = lv.gif(scr)
gif_bilibili.set_src("S:bilibili.gif")
gif_bilibili.set_x(50)
gif_bilibili.set_y(120)
设置fans文案
注意,为了动态显示粉丝数,特别把数字部分拆分开了
# 显示粉丝文案
label_fans = lv.label(scr)
label_fans.set_text("bilibili fans:")
label_fans.set_x(120)
label_fans.set_y(135)
# 显示粉丝数
label_fans_num = lv.label(scr)
label_fans_num.set_text("0")
label_fans_num.set_x(210)
label_fans_num.set_y(135)
使用HTTP GET请求,请求哔哩哔哩粉丝数API
然后用定时器定时请求并刷新粉丝数文案
文档地址
https://makeblock-micropython-api.readthedocs.io/en/latest/public_library/Third-party-libraries/urequests.html
github地址
https://github.com/micropython/micropython-lib/blob/master/python-ecosys/urequests/urequests.py
注意事项
如果提示没有urequests这个模块,就需要gthub下载对应的文件,然后保存到ESP32-S3的存储中
NameError(“name ‘urequests’ isn’t defined”,)
引入依赖
import urequests
设置HTTP GET请求
哔哩哔哩API
http://api.bilibili.com/x/relation/stat?vmid=你的id
# HTTP GET获取粉丝
def http_fans():
try:
print("http获取粉丝")
response = urequests.get('http://api.bilibili.com/x/relation/stat?vmid=31238770')
parsed = response.json()
print("parsed",parsed)
fans_num_str=str(parsed["data"]["follower"])
label_fans_num.set_text(""+fans_num_str)
except Exception as e:
print("http请求错误",repr(e))
http_fans()
获取的请求结果
更新的结果
设置定时器
10分钟更新一次
注意事项,这个API不是官方提供的,所以要控制频率(况且小V一天也没有几个涨粉)
tim11 = Timer(11)
# 10分钟执行一次
tim11.init(period=1000*60*10, mode=Timer.PERIODIC, callback=lambda t:http_fans())
到此为止,哔哩哔哩粉丝计数功能完成
总结如下
-
需要把GIF图片传输到ESP32-S3
-
使用LVGL文件系统+GIF API显示GIF图片(不需要转码)
-
使用urequests发送HTTP GET请求哔哩哔哩API获取粉丝数
-
设置定时器,控制请求频率,10分钟一次,更新粉丝数字文字显示
END