学了有一段时间Go语言了,大部分基础语法都已经开始熟了,一直找不到什么东西练手,正好,看到了QQ的C#群里面有人搞百度翻译的API,于是我就想到用Go语言写了,看了下官网的文档,没有golang的DEMO,百度了一下,有一个例子写出来了,于是我就参考一下,自己写了一个,代码放下面,做个记录。
package main
import (
"crypto/md5"
"encoding/hex"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
"net/url"
"strconv"
"time"
)
type Transapi struct {
Q string
From string
To string
Appid string
Salt string
Sign string
Passwd string
}
func apimsg(q, from, to, appid, passwd string) Transapi {
transapi := Transapi{
Q: q,
From: from,
To: to,
Appid: appid,
Passwd: passwd,
}
return transapi
}
func (t Transapi) apisum() string {
appid := t.Appid
q := t.Q
salt := t.saltrand()
passwd := t.Passwd
content := appid + q + salt + passwd
//fmt.Println(content)
return content
}
func (t Transapi) saltrand() string {
salt := strconv.Itoa(time.Now().Second())
//fmt.Println(salt)
return salt
}
func (t Transapi) md5cul() string {
md5cultc := md5.New()
md5cultc.Write([]byte(t.apisum()))
t.Sign = hex.EncodeToString(md5cultc.Sum(nil))
sign := t.Sign
//fmt.Println(sign)
return sign
}
func (t Transapi) sumurl() url.Values {
values := url.Values{
"q": {t.Q},
"from": {t.From},
"to": {t.To},
"appid": {t.Appid},
"salt": {t.saltrand()},
"sign": {t.md5cul()},
}
return values
}
func main() {
appid := "******"
passwd := "******"
url := "https://fanyi-api.baidu.com/api/trans/vip/translate"
src := ""
fmt.Println("请输入要翻译的内容:")
fmt.Scanln(&src)
apimsg := apimsg(src, "en", "zh", appid, passwd)
values := apimsg.sumurl()
resp, _ := http.PostForm(url, values)
defer resp.Body.Close()
content, _ := ioutil.ReadAll(resp.Body)
var trans map[string]interface{}
trans = make(map[string]interface{}, 0)
err := json.Unmarshal([]byte(content), &trans)
if err != nil {
fmt.Printf("fail")
}
fmt.Println(trans["trans_result"])
}
按照这个代码写一下基本就能实现功能了,例如这里翻译apple,正常来说,捕捉resp.Body的内容如下:
{"from":"en","to":"zh","trans_result":[{"src":"apple","dst":"\u82f9\u679c"}]}但是我这里用Unmarshal,把这个json格式反序列了,所以这里最后只是输出了翻译的原文字和翻译后的文字,依然是map格式的
例如我翻译一个apple:
[map[dst:苹果 src:apple]]因为初学,map这里不是很会处理,后期处理好了就放出来吧。
这里再做点解释:
1.通用翻译API如何收费?(以下是客服回复)
答案:您好,各类别服务计费方式如下:
· 通用翻译API-标准版:可不限调用字符量免费使用(QPS为1);
· 通用翻译API-高级版:每月翻译字符数低于200万,享免费服务;超过200万字符,按照49元人民币/百万字符支付当月超出部分字符量费用(QPS为10);
· 通用翻译API-尊享版:每月翻译字符数低于200万,享免费服务;超过200万字符,按照49元人民币/百万字符支付当月超出部分字符量费用(QPS为100)。
所以咱用标准版就好了。
2.代码中的******是什么?
答案:appid和密钥,这两个玩意只要注册了百度账号,开通百度翻译开放平台就能在开发者信息里面看到了
3.有三处做了注释的是什么?
答案:这里主要是输出一下接口需要的内容,做测试用,查看md5有没有算错啥的。
参考文档:
1.Go语言使用百度翻译api
2.通用翻译API接入文档
最后一次更新于2020-04-03




0 条评论