[go语言]百度翻译软件

韩昊杰
2022-04-13 / 0 评论 / 108 阅读 / 正在检测是否收录...

百度翻译软件

l1wmho7o.png
对接的是百度翻译

下面直接贴代码,附带源码和成品,请自行下载
package main

import (
    "bufio"
    "bytes"
    "encoding/json"
    "fmt"
    "io/ioutil"
    "net/http"
    "os"
    "strings"
)

type PostJSONData struct {
    Kw string `json:"kw"`
}

type baiduReturnData struct {
    Errno int         `json:"errno"`
    Data  []baiduData `json:"data"`
}

type baiduData struct {
    K string `json:"k"`
    V string `json:"v"`
}

func main() {
    for {
        fmt.Println(`
            韩昊杰go语言软件
            百度翻译工具
            输入quit即可退出
        `)
        var scan string

        fmt.Print("请输入你要翻译的词语:")

        reader := bufio.NewReader(os.Stdin) // 标准输入输出
        scan, _ = reader.ReadString('\n')   // 回车结束
        scan = strings.TrimSpace(scan)      // 去除最后一个空格

        if scan == "quit" {
            os.Exit(1)
        }

        var postData PostJSONData

        postData.Kw = scan

        data, _ := PostJSON("https://fanyi.baidu.com/sug", postData)

        var baiduData baiduReturnData

        json.Unmarshal([]byte(data), &baiduData)

        fmt.Println("------------------------------下面是结果------------------------------")
        fmt.Println("")
        for _, value := range baiduData.Data {
            fmt.Printf("输入的是:%v,翻译的结果:%v\n", value.K, value.V)
        }
        fmt.Println("")
        fmt.Println("------------------------------上面面是结果------------------------------")
        fmt.Println("再次输入内容即可再次查询")
    }

}

func PostJSON(uri string, obj interface{}) ([]byte, error) {
    jsonData := make([]byte, 0, 0)
    if str, ok := obj.(string); ok {
        jsonData = []byte(str)
    } else {
        var err error
        jsonData, err = json.Marshal(obj)
        if err != nil {
            return nil, err
        }
    }

    jsonData = bytes.ReplaceAll(jsonData, []byte("\\u003c"), []byte("<"))
    jsonData = bytes.ReplaceAll(jsonData, []byte("\\u003e"), []byte(">"))
    jsonData = bytes.ReplaceAll(jsonData, []byte("\\u0026"), []byte("&"))
    body := bytes.NewBuffer(jsonData)
    response, err := http.Post(uri, "application/json;charset=utf-8", body)
    if err != nil {
        return nil, err
    }
    defer response.Body.Close()

    if response.StatusCode != http.StatusOK {
        return nil, fmt.Errorf("http get error : uri=%v , statusCode=%v", uri, response.StatusCode)
    }
    return ioutil.ReadAll(response.Body)
}

1

评论 (0)

取消