基于树莓派的微信机器人(更新 API)

对该项目不了解的朋友可先阅读爬坑指南(一)

背景

因为系统开发与设计需要提交个人作业,但说来惭愧,手头上没有拿的出来的作品,只能将树莓派机器人交上去。

不看还好,一看吓一跳,图灵 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.0API 一定要新建机器人

点歌播放

也就三个月,小豆机器人的点歌 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 变为副分支)

其实正确的做法应该在原来的基础上新建分支然后合并,而不是在本地上更改完以后提交代码,有所欠缺。

你可能感兴趣的:(基于树莓派的微信机器人(更新 API))