Skip to content

Commit 0724ced

Browse files
authored
Merge pull request #1 from baoyuanle/master
优先用translation字段翻译,加Api请求1秒间隔
2 parents d013872 + 6f3b7ac commit 0724ced

File tree

2 files changed

+32
-2
lines changed

2 files changed

+32
-2
lines changed

cmd/QtTranser/QtTranser.go

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,12 +70,18 @@ func Trans(args QtTransArgs) {
7070
Secret: args.Secret,
7171
To: args.TargetLan,
7272
}
73+
alreadyTranNum := 0
74+
baidu.ResetFailedCnt()
7375
transData.Language = args.TargetLan
7476
for i := 0; i < len(transData.Contexts); i++ {
7577
ctx := &transData.Contexts[i]
7678
for j := 0; j < len(ctx.Messages); j++ {
7779
msg := &ctx.Messages[j]
78-
input.Query = msg.Source
80+
if msg.Trans.Trans != "" {
81+
input.Query = msg.Trans.Trans
82+
} else {
83+
input.Query = msg.Source
84+
}
7985
if args.API == "baidu" {
8086
ans := baidu.Trans(input)
8187
if ans.Result != "" {
@@ -89,8 +95,11 @@ func Trans(args QtTransArgs) {
8995
msg.Trans.Type = ""
9096
}
9197
}
98+
alreadyTranNum++
99+
fmt.Printf("translate %d words already.\r\n", alreadyTranNum)
92100
}
93101
}
102+
fmt.Printf("baidu translate %d words failed.\r\n", baidu.GetFailedCnt())
94103

95104
res, err := xml.MarshalIndent(&transData, "", " ")
96105
if err != nil {

services/baidu/baidu.go

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,19 @@ type result struct {
143143
TransResult []transItem `json:"trans_result"`
144144
}
145145

146+
var glastApiTime int64
147+
var gFailedCnt int //翻译失败总数量
148+
149+
//GetFailedCnt GetFailedCnt
150+
func GetFailedCnt() int {
151+
return gFailedCnt
152+
}
153+
154+
//ResetFailedCnt ResetFailedCnt
155+
func ResetFailedCnt() {
156+
gFailedCnt = 0
157+
}
158+
146159
//Trans trans
147160
func Trans(input *transer.TransInput) *transer.TransOutput {
148161
output := new(transer.TransOutput)
@@ -160,19 +173,25 @@ func Trans(input *transer.TransInput) *transer.TransOutput {
160173
values["appid"] = []string{input.ID}
161174
values["salt"] = []string{salt}
162175
values["sign"] = []string{signStr}
176+
crtTime := time.Now().UnixNano()
177+
tmWait := 1e9 - (crtTime - glastApiTime)
178+
if tmWait > 0 {
179+
time.Sleep(time.Duration(tmWait)) //免费用户1秒只能请求一次
180+
}
163181
res, err := http.PostForm(baiduAPI, values)
164182
if err != nil {
165183
fmt.Println(err)
166184
return output
167185
}
168186
defer res.Body.Close()
187+
glastApiTime = time.Now().UnixNano()
169188

170189
body, err := ioutil.ReadAll(res.Body)
171190
if err != nil {
172191
fmt.Println(err)
173192
return output
174193
}
175-
// fmt.Println(string(body))
194+
//fmt.Println("ret:" + string(body))
176195
r := &result{}
177196
err = json.Unmarshal(body, &r)
178197
if err != nil {
@@ -183,6 +202,8 @@ func Trans(input *transer.TransInput) *transer.TransOutput {
183202
// fmt.Println(r.TransResult[0].Src)
184203
// fmt.Println(r.TransResult[0].Dst)
185204
output.Result = r.TransResult[0].Dst
205+
} else {
206+
gFailedCnt++
186207
}
187208
return output
188209
}

0 commit comments

Comments
 (0)