3773浏览
查看: 3773|回复: 2

[入门教程] 【2020】借助古德微树莓派,实现疫情实时播报

[复制链接]
2020年初,新冠肺炎肆虐,及时获取实时疫情成为每一名中国人的迫切需求。本文介绍借助python图形化编程古德微机器人平台,用树莓派和OLED显示屏,实现疫情数据实时播报。本文主要思路是爬取网页信息,处理相关数据,数据实时输出。
一、确定爬取页面。
获取疫情实时信息,有很多网站都有提供,这里,我们选择是丁香园(https://lab.isaaclin.cn/nCoV/)疫情实时数据接口。进入网址后,可看到数据说明:
【2020】借助古德微树莓派,实现疫情实时播报图1
丁香园API提供了不同的接口,要查询各省疫情需要使用下面的接口:https://lab.isaaclin.cn/nCoV/api/area,具体说明如下图:
【2020】借助古德微树莓派,实现疫情实时播报图2
根据文档提示,下面我们使用查询山东省各地市的页面。地址为:https://lab.isaaclin.cn/nCoV/api/area?latest=1&province=山东省
打开网址,便确定了我们的目标数据,在网页中的山东省内各地市的疫情数据如下图:
【2020】借助古德微树莓派,实现疫情实时播报图3
密密麻麻的这么多数据,各种列表、元组和字典的嵌套,该怎样分析这这些数据呢?
二、分析数据,理清数据结构
我们的目标非常明确,那就是要取得各地市的名称,以及确诊人数。
1、Json数据在线解析。
如何把杂乱的数据清晰化显示,这里我们使用到了json在线解析。打开json.cn,进入json在线解析页面,将上一步中获得的json数据,粘贴到页面左侧,在页面右侧便出现了标准的数据格式。
【2020】借助古德微树莓派,实现疫情实时播报图4
2、理解数据层次结构
现在数据变得层次分明了,如何取得我们需要的数据。我们不妨采用“顺瓜摸滕”的方法。
以青岛为例,它存在于一个字典当中。从青岛这个字典中取出键为cityName的值就是青岛,从这个字典中取出键为confirmedCount的值即为47人,有了这两个键对应的值,就有了我们最终的目标:青岛和47的目标数据。
【2020】借助古德微树莓派,实现疫情实时播报图5
同理,我们需要滨州的数据,就要从滨州这个字典中取出相应键的值。
【2020】借助古德微树莓派,实现疫情实时播报图6
再倒着往回走一步,怎样确定青岛或者滨州这些字典呢?
将各个城市字典最小化,再次观察:原来所有的城市都包含在一个叫cities的列表中,青岛不过是这个cities列表的第1项而已,在python中,cities[0]就是青岛字典,最后一项就是滨州字典。
【2020】借助古德微树莓派,实现疫情实时播报图7
再往回倒,如何确定cities列表呢?继续观察数据结构:原来,cites列表藏在一个叫山东的字典里,里面包含着山东省的各项数据。需要cites列表,只需要取出键为cities的值即可。
【2020】借助古德微树莓派,实现疫情实时播报图8
“顺瓜摸滕”果然好用,重复使用,终于理清所有的数据结构:山东字典是省份列表的第1项,而这个省份列表又是返回字典的键为results的值。
【2020】借助古德微树莓派,实现疫情实时播报图9
确定了整个数据结果,接下来,我们就开始我们的图形化编程之旅了!
三、图形化编程,获取指定信息
登陆树莓派图形化编程软件古德微机器人平台,依次实现以下图形化编程:
1、获取请求数据。
初始化request对象。
获取请求数据,赋值给返回数据。
将返回数据转化为字典数组,赋值给返回字典。
【2020】借助古德微树莓派,实现疫情实时播报图10
2、处理字典列表,获得初步数据
如果获取数据成功,赋值是否变量为1。
【2020】借助古德微树莓派,实现疫情实时播报图11
如果获取成功,从返回字典中取得键为results的项的值,赋值给省份列表。
从省份列表中取得第1项,赋值给山东字典。
从山东字典中取得键为cities的项的值,赋值给地市列表。
【2020】借助古德微树莓派,实现疫情实时播报图12
3、建立循环,获取详细数据。
按照省内城市数目,建立一个i循环,分别取得地市列表中的第i项城市数据,从每一个城市数据获得每一个确定的城市字典。
从城市字典中获取键为cityName的值,即为具体的城市名称,赋值给城市变量。
从城市字典中获取键为confirmedCount的值,即为具体的确诊人数,赋值给确诊人数变量。
【2020】借助古德微树莓派,实现疫情实时播报图13
四、语音显示屏结果反馈
把获取的城市名称和确诊人数组合成相应的字符串,通过音箱进行动态语音播报。
把获取的城市名称和确诊人数组合成两行字符,用OLED屏形成两行文字,进行动态文字显示。
【2020】借助古德微树莓派,实现疫情实时播报图14
五、程序功能拓展:
至此,程序先后经历了页面爬取和数据分析,最后实现了相应的输出,其基本功能已经全部实现。但是如果再次深入思考,我们还有一些拓展的地方:
1、程序开始不够友好,OLED屏的显示也稍嫌单调。为此,我们在程序运行开始加一个语音播报和一个片头字幕。
【2020】借助古德微树莓派,实现疫情实时播报图15
语音播报内容为山东省各地市确诊认数实时通报。OLED显示屏显示一张图片33.jpg。图片内容如下:
【2020】借助古德微树莓派,实现疫情实时播报图16
2、程序输出中OLED文字输出也可以丰富一下形式,如增加一张背景图片。
【2020】借助古德微树莓派,实现疫情实时播报图17
其中11.jpg的内容作为城市和确认人数显示的背景图片,使显示更美观。
【2020】借助古德微树莓派,实现疫情实时播报图18
3、程序功能尽一步拓展。
本文我们仅仅使用了一个接口,获取了山东省的相关数据。我们知道丁香园API有很多接口,使用不同接口,就可以获取不同的数据。我们可以根据自己的需要,从数据中选取需要的数据,进行结果反馈,一定会使程序的各项功能更加强大。
再一步拓展,如果我们使用丁香园以外的API接口,我们数据就不必局限于疫情,按这个思路做下去,我们的数据资源会变得更加丰富。
期待大家的进一步发现,实现更多的功能!

且歌且行  中级技师

发表于 2020-2-15 22:39:52

疫情播报,不一样的思路。
回复

使用道具 举报

kylinpoet  初级技神

发表于 2020-2-18 01:37:29

楼主强大,多谢分享。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4 备案 沪公网安备31011502402448

© 2013-2025 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail