对该项目不了解的朋友可先阅读爬坑指南(一)
背景
因为系统开发与设计需要提交个人作业,但说来惭愧,手头上没有拿的出来的作品,只能将树莓派机器人交上去。
不看还好,一看吓一跳,图灵 API 失效,点歌功能失效,我还把物联网的器件交给了老师···看样子要更新代码不是一件很容易的事啊。事实证明,果然如此,这次相当于我基于原来的框架又重新写了一遍
更新说明
图灵机器人 V2.0
这里是个大坑,让我头疼了很久,在这耗费了大量时间
-
坑一:格式
官网示例
更新后的图灵机器人在命令行中要采用POST
方式,JSON
的参数这样的形式才生效
这么复杂的东西,不复制到代码里然后修改很容易出错 -
坑二:返回参数
看下面这段代码,不经过测试,鬼知道怎么读取
try:
res = requests.post(url=apiUrl, data=json.dumps(data))
b = res.json()
print(b)
return b['results'][0]['values'][b['results'][0]['resultType']]
except Exception:
return "我无法理解【%s】的含义" % msg
- 坑三:原来的机器人不能用
官网没有任何提示(可能有,反正我没看到)我一直再用老版本机器人,提示加密方式错误,提交反馈也没人理我,网站还用的http
。
一开始我以为是实名认证的锅,提交了身份认证,足足让我等了两个礼拜才通过?!通过后仍然报错,摸索了很久,试了很多方法,一气之下新建机器人才算搞定
总之,用图灵机器人V2.0
的API
一定要新建机器人
点歌播放
也就三个月,小豆机器人的点歌 API 失效了.无奈只好重新寻找,皇天不负有心人,在经过一日一夜的寻找,在某网站发现了老版网易云的根据歌名得到 ID
的链接,得到 ID
就可以拼接链接,用 mplayer
播放
import requests
import json
def get_musicurl(text):
try:
url = 'http://s.music.163.com/search/get/?src=lofter&type=1&filterDj=true&s='+text+'&limit=2&offset=0&callback=loft.w.g.cbFuncSearchMusic'
res = requests.get(url)
j = json.loads(res.text[27:-1])
id = j['result']['songs'][0]['id']
_url = 'http://music.163.com/song/media/outer/url?id='+str(id)+'.mp3'
return _url
except Exception:
return "我找不到歌名【%s】" % text
图床功能
博客嘛,图床是不可避免的。但是 iOS 只有 SM.MS,没有腾讯云的对象存储。有了需求,加上官网上的文档,功能就出来了。不过环境需要在本地配置。当然也可以将相关的密钥参数用模块的形式导入
优化
去除了原先冗杂的抛异常代码以及小豆机器人失效的功能,使功能更加健全
例如可以输入 明天杭州到武汉的火车
查询相关信息
项目总结
项目地址(将原有的分支改为主分支,master
变为副分支)
其实正确的做法应该在原来的基础上新建分支然后合并,而不是在本地上更改完以后提交代码,有所欠缺。
网友评论