写在前面
最近收到百度翻译的邮件,大概就是说原来的翻译 API 已经全面升级,旧的接口快不能用了,保留到2016年1月31日。因为之前在少数派分享过几条有用到这个 API 的 Workflow 所以特此来更新下。。顺便分享下如何使用百度的 API ,以防之后又更新的。
申请接入
接口需要申请,之前的那条 Workflow 用的是我的 appkey,大家最好还是申请自己的。这样的话如果以后有更新 API 可以第一时间得到邮件通知。
进去之后,点击「申请接入」
写着好像是收费的,但是。。
其实个人使用的话,可以看作免费的。
点进去之后,填写一些必要的个人信息,比如,邮箱,手机号码等,还有你的网站或者应用名称。 这玩意儿随便填填就好了,剩下不带星号的,空着就好了
填好之后,你就获得了你的 APP ID 和密钥。收藏起来。
官方文档的阅读
首先,当然是阅读接入文档,挺简单,又都是中文的。
来看下必要的参数。
- 「q」关键字,这是我们要输入的东西。
- 「from」翻译源语言,我们选择自动识别了,这样可以自动识别日英等语言。
- 「to」译文语言,我们选择中文(zh)。
- 「appid」刚刚申请到了。
- 「salt」随机数,我也不太清楚这是什么,不过发现随便输入点数字就可以了,大家就随便输点好了。可谓是真・随机数。(好吧,其实可以用 Random Number )
- 「sign」,签名,下文讲解如何获取。
sign 计算方法
首先看下官文文档怎么写的。
sign的计算方法:
>拼接串1
appid=2015063000000001 salt=1435660288 q=hi
串1=2015063000000001hi1435660288
>拼接串2(平台分配的私钥为12345678)
串2=2015063000000001hi143566028812345678
>计算签名(sign)
sign=md5(2015063000000001hi143566028812345678)
sign=4429c3a63d860eff6d296d3cca5a8183
噢!官方的例子太真实了,一堆数字和字母看着头疼。
我来简化下
sign=md5(appid+q+随机数+密钥)
此处为了方便阅读添加了加号,实际是不需要加号的
嗯,大概就这样。
MD5 加密
百度翻译原来的 API 是不需要 MD5 加密的。不过这次升级好像是为了接口的安全。
一开始我确实是懵逼了。。不过意外的发现 Workflow 竟然可以 MD5 加密。
使用的 Action 是 Generate Hash(MD5)

开始制作 Workflow
好了,做好了所有的准备之后,就可以开始制作了。
这是百度翻译的完整请求方式:
http://api.fanyi.baidu.com/api/trans/vip/translate?q=关键字&appid=刚刚申请的appid&salt=随机数&from=auto&to=zh&sign=签名
- 首先,当然需要一个 ask for input 来输入你的关键字,当然你可以直接调用剪切板,具体看实际使用情况
- 对文字进行转码 URL Encode(Encode)
- 注意!!此处需要设定 2 个变量,转码前的文字,和转码后的文字。因为,你的sign 需要转码前的关键字。
- 在来个随机数。
- 开始计算下sign。
- 把上面的东西并按照完整请求方式填入在 Text 里面
- 开始请求。
Get Value for Key 里面的字符可以参照官方文档。 - 但是这样还是不够,如果你输入的多行的文字的话,获取译文的时候可能会出现这个情况。
- 你需要进行这样处理
以上就是简易的流程
问题
目前这条 Workflow 还有问题。不对,可能百度翻译的接口还有点问题,当你输入的文字含有加号的时候,它就会返回签名错误。(研究了好久才发现这个问题)
对了,原来的百度翻译的接口的问题好像识别不了 &。
额,好吧,所以最好先对输入的文字做下处理。查找 + 并把它替成 and。
小结
个人觉得,还是挺简单的。原来那条会在2016年1月31日过期,在这之前,最好把这个替换进去。
写在后面
一堵墙,无形之中,增加了多少工作量!!!如果你能稳定科学上网,又嫌麻烦的话,直接用自带的就好了。
这个是自带的 Action
对比下,感受下墙内的水深火热。
这个时候,只要微笑就可以了。
