行空板之上海确诊小区查询器
2022-04-121750
AI 快速预览详细
本文介绍了如何使用行空板和Mind+软件制作一个上海确诊小区查询器。该项目的主要功能是通过爬取上海卫健委官网的数据,并实时显示在行空板屏幕上。首先需要注册百度AI开放平台账号,获取必要的API密钥。然后,通过编写Python代码,实现网页信息的爬取和存储。最后,利用语音识别技术,可以通过语音指令进行查询。整个项目不仅方便快捷,还能帮助用户及时了解疫情动态。
# 创意起源
我是一个普普通通的打工人,受疫情影响导致在在家办公,再此期间最关心无非就是病例的增加以及自身小区是否有阳性病例!!
因为每次在上海发布看大区确诊名单都要翻好久才能确认自己小区是否上榜,因此做了一款快捷方便查询器。
# 效果预览
# 行空板介绍以及Mind+使用
https://makelog.dfrobot.com.cn/article-311576.html
大家可以先看看这篇帖子,大致了解什么是行空板,以及使用行空板的主要软件。然后再具体学习以下内容。
# 功能介绍
此项目主要功能是查询上海卫健委官网确诊新冠数据,实时显示屏幕上面。
# 注册账号
## 具体步骤如下:
1、登录百度AI开放平台,[https://ai.baidu.com],点击页面右上角“控制台”,然后**注册**或者**登录**自己的百度账号。
**从上面可以看到我们应用(APP_ID,API_KEY ,SECRET_KEY)等信息,这个要留着我们后面会用到。 **
# 爬取内容
**一定要先让板子连接WIFI,不然爬取不了网上内容的**
## 爬取网页信息存储到txt文本中
代码
from urllib import request
from urllib import parse
import re
def get_url(word,url):
url = url
#此处使用urlencode()进行编码
params = parse.urlencode({'wd':word})
url = url.format(params)
return url
def request_url(url,filename):
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0) Gecko/20100101 Firefox/6.0'}
# 请求对象 + 响应对象 + 提取内容
req = request.Request(url=url,headers=headers)
res = request.urlopen(req)
html = res.read().decode('utf-8')
# 保存文件至本地
with open(filename,'w+',encoding='utf-8') as f:
f.write(html)
while True:
word = "上海多日数据"
url = get_url(word1,'https://wsjkw.sh.gov.cn/xwfb/index.html')
#print(url)
filename1 = word + '.txt'
request_url(url,filename1)
f1 = open(filename1,"r",encoding='utf-8')#设置文件对象
data = f1.read() # 读取信息
# print(data)
parrern = re.compile('<a href="(https://mp.weixin.qq.com/s/.+)" title="') # 用正则匹配所需要的信息
str2 = re.findall(parrern, data) # 查找所有符合条件的信息
# print(str2)
f2 = open("各区确诊信息.txt", "w+", encoding="utf-8") # 打开并写入信息
# print(";".join(str2).replace(";", "\n"))
f2.write(";".join(str2).replace(";", "\n") + "\n") # 先转为非数组类型,再用分行输出
f2.close() # 有开就有关
f1.close() # 有开就有关
代码
from unihiker import GUI,Audio #导入包
from aip import AipSpeech
gui=GUI() #实例化GUI类
audio = Audio() # 实例化Audio类
APP_ID = '*****'
API_KEY = ''*****'
SECRET_KEY = ''*****'
client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()
def voiceToText():
res = client.asr(get_file_content('3s.wav'), 'wav', 16000, {
'dev_pid': 1537,
})
#print(res)
return res.get('result')[0][:-1]
def Record():
print("开始进行录音(5秒时间)")
audio.record('3s.wav', 5)
def Recognition():
print("开始进行语音识别")
msg = voiceToText()
#print(msg)
return msg
gui.draw_text(x=120, y=150, text='录音(A键)',origin='bottom' ,onclick=lambda: Record())
gui.draw_text(x=120, y=240, text='识别(B键)',origin='bottom' ,onclick=lambda: Recognition())
while True:
if gui.wait_a_click()==None:
Record()
if gui.wait_b_click()==None:
data = Recognition()
print(data)


2、输出行空板地址,默认地址:10.1.2.3

3、连接成功显示,行空板主页面

界面显示

查询演示




