因为想搞个翻译功能,已有的插件能翻译的语种又不足以满足需要,所以参考Qwekkx这位大佬写的天气查询脚本浅弄了一下API接口
用的是百度翻译API,需要注册并认证获得专属APP ID和密钥,这里只放一下没有技术力的简单代码(附md5.lua)
编译小白,希望能跑
key_translate_plus="translate#" --触发词
appID = "2015063000000001" --修改为个人appID
salt = "1234"--自定义随机数
key = "12345678"--修改为个人密钥
--对传入参数编码,兼容中文
function encodeURI(s)
s = string.gsub(s, "([^%w%.%- ])", function(c) return string.format("%%%02X", string.byte(c)) end)
return string.gsub(s, " ", "+")
end
function translate_plus(msg)
local from = string.match(msg.fromMsg,"from#(.+)to") --源语言
local to = string.match(msg.fromMsg,"to#(.+)as") --目标语言
local text = string.match(msg.fromMsg,"as#(.+)") --待翻译字段
local api="https://fanyi-api.baidu.com/api/trans/vip/translate?" --API接口
local polar="" --最终网址
local sign="" --签名
local que="" --转码后字段
md5=require "md5"
if(from == nil)then from="auto" end --源语言自动匹配
if(to and text)then
sign=appID..text..salt..key --拼接
sign=md5.sumhexa(sign) --MD5加密,需安装MD5库
que=encodeURI(text) --转码
polar=api.."q="..que.."&from="..from.."&to="..to.."&appid="..appID.."&salt="..salt.."&sign="..sign
else return "格式:translate#from#(源语言)to#目标语言as#待翻译文本\n源语言部分可省略"
--这是我自定义的正则匹配格式,非常累赘,建议修改
end
json=require "json"
res,data = http.get(polar)
j=json.decode(data)
local error_code=j.error_code
if(error_code==nil) then --正常访问
local src = j.trans_result[1].src
local dst = j.trans_result[1].dst
local info = "原文:"..src.."\n译文:"..dst
return info
else return "ERROR 序号"..error_code --返回错误码
end
end