火山翻译

首先介绍用火山翻译英译汉。

package mainimport ("bufio""bytes""encoding/json""fmt""io""log""net/http""os""strings""unicode"
)type DictRequestHS struct {Source         string   `json:"source"`Words          []string `json:"words"`SourceLanguage string   `json:"source_language"`TargetLanguage string   `json:"target_language"`
}
type DictResponseHS struct {Details []struct {Detail string `json:"detail"`Extra  string `json:"extra"`} `json:"details"`
}type DictResponseHSData struct {Result []struct {Ec struct {Basic struct {Explains []struct {Pos   string `json:"pos"`Trans string `json:"trans"`} `json:"explains"`} `json:"basic"`} `json:"ec"`} `json:"result"`
}func query() {for {fmt.Println("请输入要查询的内容:")reader := bufio.NewReader(os.Stdin)word, _ := reader.ReadString('\n')word = strings.Trim(word, "\r\n")if IsEnglishString(word) {queryHS(word)break} else {fmt.Println("请输入英语")}}}
func queryHS(word string) {client := &http.Client{}request := DictRequestHS{"youdao", []string{word}, "en", "zh"}buf, err := json.Marshal(request)if err != nil {log.Fatal(err)}var data = bytes.NewReader(buf)req, err := http.NewRequest("POST", "https://translate.volcengine.com/web/dict/detail/v1/?msToken=&X-Bogus=DFSzswVOQDaibrQ3tJHN7cppgiFh&_signature=_02B4Z6wo00001g0lO6gAAIDD-FrRNX0w-.4NJT8AAOfuf7", data)if err != nil {log.Fatal(err)}req.Header.Set("authority", "translate.volcengine.com")req.Header.Set("accept", "application/json, text/plain, */*")req.Header.Set("accept-language", "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6")req.Header.Set("content-type", "application/json")req.Header.Set("cookie", "x-jupiter-uuid=16888064002651706; i18next=zh-CN; s_v_web_id=verify_ljtrq6kx_UW3ieIzP_8gQX_4abc_B8D8_AoHwuLysn026; ttcid=db98bce9149b4f09b905a71503d9331e36")req.Header.Set("origin", "https://translate.volcengine.com")req.Header.Set("referer", "https://translate.volcengine.com/?category=&home_language=zh&source_language=detect&target_language=zh&text=bad")req.Header.Set("sec-ch-ua", `"Not.A/Brand";v="8", "Chromium";v="114", "Microsoft Edge";v="114"`)req.Header.Set("sec-ch-ua-mobile", "?0")req.Header.Set("sec-ch-ua-platform", `"Windows"`)req.Header.Set("sec-fetch-dest", "empty")req.Header.Set("sec-fetch-mode", "cors")req.Header.Set("sec-fetch-site", "same-origin")req.Header.Set("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 Edg/114.0.1823.43")resp, err := client.Do(req)if err != nil {log.Fatal(err)}defer resp.Body.Close()bodyText, err := io.ReadAll(resp.Body)if err != nil {log.Fatal(err)}if resp.StatusCode != 200 {log.Fatal("bad StatusCode:", resp.StatusCode, "body", string(bodyText))}var dictResponse DictResponseHSerr = json.Unmarshal(bodyText, &dictResponse)if err != nil {log.Fatal(err)}fmt.Println("火山翻译")item := dictResponse.Details[0]jsonStr := item.Detailvar HSData DictResponseHSDataerr = json.Unmarshal([]byte(jsonStr), &HSData)if err != nil {panic(err)}for _, item := range HSData.Result[0].Ec.Basic.Explains {fmt.Println(item.Pos, item.Trans)}
}func IsEnglishString(s string) bool {for _, r := range s {if unicode.IsLetter(r) && !unicode.Is(unicode.Scripts["Han"], r) {continue} else {return false}}return true
}func main() {defer func() {if msg := recover(); msg != nil {fmt.Println(msg, "输入不合法,请重新输入")}}()query()
}

彩云翻译和百度翻译

然后运用goroutine,结合sync包,同时实现彩云翻译和百度翻译。可对输入的内容自动检测,完成英译汉,汉译英。

package mainimport ("bufio""bytes""encoding/json""fmt""io""log""net/http""os""strings""sync"
)var wg sync.WaitGrouptype DictRequestCY struct {TransType string `json:"trans_type"`Source    string `json:"source"`UserID    string `json:"user_id"`
}type DictResponseCY struct {Rc   int `json:"rc"`Wiki struct {KnownInLaguages int `json:"known_in_laguages"`Description     struct {Source string      `json:"source"`Target interface{} `json:"target"`} `json:"description"`ID   string `json:"id"`Item struct {Source string `json:"source"`Target string `json:"target"`} `json:"item"`ImageURL  string `json:"image_url"`IsSubject string `json:"is_subject"`Sitelink  string `json:"sitelink"`} `json:"wiki"`Dictionary struct {Prons struct {EnUs string `json:"en-us"`En   string `json:"en"`} `json:"prons"`Explanations []string      `json:"explanations"`Synonym      []string      `json:"synonym"`Antonym      []string      `json:"antonym"`WqxExample   [][]string    `json:"wqx_example"`Entry        string        `json:"entry"`Type         string        `json:"type"`Related      []interface{} `json:"related"`Source       string        `json:"source"`} `json:"dictionary"`
}type DictResponseBD struct {Errno int `json:"errno"`Data  []struct {K string `json:"k"`V string `json:"v"`} `json:"data"`
}func queryBD(word string) {client := &http.Client{}var data = strings.NewReader("kw=" + word)req, err := http.NewRequest("POST", "https://fanyi.baidu.com/sug", data)if err != nil {log.Fatal(err)}req.Header.Set("Accept", "application/json, text/javascript, */*; q=0.01")req.Header.Set("Accept-Language", "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6")req.Header.Set("Connection", "keep-alive")req.Header.Set("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8")req.Header.Set("Cookie", "BIDUPSID=1CDF4C78BCFB3D90B2D6A594920DA6E4; PSTM=1630726121; __yjs_duid=1_02f9d28d226309370f287ee032114e3f1630763189674; REALTIME_TRANS_SWITCH=1; HISTORY_SWITCH=1; FANYI_WORD_SWITCH=1; SOUND_SPD_SWITCH=1; SOUND_PREFER_SWITCH=1; BAIDUID=396D4FB45E415311D3C31A0DE0D1AF80:FG=1; BDUSS=V6NWkyMzJnaTB-OWplSFdUR25tRkxsTzFnVnBDanN4ZEs2bHFMc2EzaXJOcDVrRVFBQUFBJCQAAAAAAAAAAAEAAACpaydUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKupdmSrqXZkMV; BDUSS_BFESS=V6NWkyMzJnaTB-OWplSFdUR25tRkxsTzFnVnBDanN4ZEs2bHFMc2EzaXJOcDVrRVFBQUFBJCQAAAAAAAAAAAEAAACpaydUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKupdmSrqXZkMV; APPGUIDE_10_6_2=1; MCITY=-75%3A; MAWEBCUID=web_jcjIPqwGUVRAlyJeYpGiILrRIWXcMWNDAjChgRXUZoHLpLyApr; BDRCVFR[feWj1Vr5u3D]=I67x6TjHwwYf0; delPer=0; PSINO=1; BAIDUID_BFESS=396D4FB45E415311D3C31A0DE0D1AF80:FG=1; BA_HECTOR=2h852l8h2ha5840k8k0k050g1iai2fd1o; ZFY=kYWZ1Y6d6SV8cMcgDFNKAhwEEhlIK7W5gu1C:APN07HM:C; H_PS_PSSID=36546_39026_39022_38858_38957_38954_39009_38918_38972_38815_38637_26350_39041_38948_39046; ab_sr=1.0.1_MjBiYTAxMmUwMWE2MzIyODYxY2JiYzIxNjFjMWY2OTIwOTc5NTA1MTI5MzAzZGI2OWNiMGEwM2I1Y2IwNjJiZWEzNDQwOTg1ZTkyYTJkNmU1OTc3MjY1MTJhZTM1MGEwNWNlM2NkM2VjNWM0NDMwZjY0ZWJlZTEyOTQyZjFkZjE1YzhiYzY4YjBhYzQ4NzE2NWI4MjNkZjA1NTVkMDk2MmRjMjZhYTA4NThmOTYwMmEzOWMxMjAxMGM2OTdjODhm")req.Header.Set("Origin", "https://fanyi.baidu.com")req.Header.Set("Referer", "https://fanyi.baidu.com/")req.Header.Set("Sec-Fetch-Dest", "empty")req.Header.Set("Sec-Fetch-Mode", "cors")req.Header.Set("Sec-Fetch-Site", "same-origin")req.Header.Set("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 Edg/114.0.1823.43")req.Header.Set("X-Requested-With", "XMLHttpRequest")req.Header.Set("sec-ch-ua", `"Not.A/Brand";v="8", "Chromium";v="114", "Microsoft Edge";v="114"`)req.Header.Set("sec-ch-ua-mobile", "?0")req.Header.Set("sec-ch-ua-platform", `"Windows"`)resp, err := client.Do(req)if err != nil {log.Fatal(err)}defer resp.Body.Close()bodyText, err := io.ReadAll(resp.Body)if err != nil {log.Fatal(err)}if resp.StatusCode != 200 {log.Fatal("bad StatusCode:", resp.StatusCode, "body", string(bodyText))}var dictResponse DictResponseBDerr = json.Unmarshal(bodyText, &dictResponse)if err != nil {log.Fatal(err)}fmt.Println("百度翻译")for _, item := range dictResponse.Data {fmt.Println(item.V)}wg.Done()}
func queryCY(word string) {client := &http.Client{}request := DictRequestCY{TransType: "en2zh", Source: word}buf, err := json.Marshal(request)if err != nil {log.Fatal(err)}var data = bytes.NewReader(buf)req, err := http.NewRequest("POST", "https://api.interpreter.caiyunai.com/v1/dict", data)if err != nil {log.Fatal(err)}req.Header.Set("Connection", "keep-alive")req.Header.Set("DNT", "1")req.Header.Set("os-version", "")req.Header.Set("sec-ch-ua-mobile", "?0")req.Header.Set("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36")req.Header.Set("app-name", "xy")req.Header.Set("Content-Type", "application/json;charset=UTF-8")req.Header.Set("Accept", "application/json, text/plain, */*")req.Header.Set("device-id", "")req.Header.Set("os-type", "web")req.Header.Set("X-Authorization", "token:qgemv4jr1y38jyq6vhvi")req.Header.Set("Origin", "https://fanyi.caiyunapp.com")req.Header.Set("Sec-Fetch-Site", "cross-site")req.Header.Set("Sec-Fetch-Mode", "cors")req.Header.Set("Sec-Fetch-Dest", "empty")req.Header.Set("Referer", "https://fanyi.caiyunapp.com/")req.Header.Set("Accept-Language", "zh-CN,zh;q=0.9")req.Header.Set("Cookie", "_ym_uid=16456948721020430059; _ym_d=1645694872")resp, err := client.Do(req)if err != nil {log.Fatal(err)}defer resp.Body.Close()bodyText, err := io.ReadAll(resp.Body)if err != nil {log.Fatal(err)}if resp.StatusCode != 200 {log.Fatal("bad StatusCode:", resp.StatusCode, "body", string(bodyText))}var dictResponse DictResponseCYerr = json.Unmarshal(bodyText, &dictResponse)if err != nil {log.Fatal(err)}fmt.Println("彩云翻译")fmt.Println(word, "UK:", dictResponse.Dictionary.Prons.En, "US:", dictResponse.Dictionary.Prons.EnUs)for _, item := range dictResponse.Dictionary.Explanations {fmt.Println(item)}wg.Done()
}func main() {fmt.Println("请输入要查询的内容:")reader := bufio.NewReader(os.Stdin)word, _ := reader.ReadString('\n')word = strings.Trim(word, "\r\n")wg.Add(2)go queryCY(word)go queryBD(word)wg.Wait()
}


工具推荐

1.json格式数据转golang结构体

JSON转Golang Struct - 在线工具 - OKTools

2.curl转爬虫代码

Convert curl commands to code (curlconverter.com)

Go实现在线词典翻译(三种翻译接口,结合sync)相关推荐

  1. VGA、DVI、HDMI三种视频信号接口差别

    家里的高清电视越来越普遍,而这些高清电视大多带了VGA.DVI.HDMI的接口.笔记本电脑的屏幕太小,办公的人大多想要外接一个显示器.所以明白这三种视频信号接口的区别,是选购合适显示器的前提. 方法/ ...

  2. 三种录制接口脚本的方法

    三种录制接口脚本的方法 在做接口测试没有接口文档的情况下,就可以使用录制脚本的方法来录制接口测试的脚本.jmeter本身就支持录制脚本,但是还有两种另外的工具也可以录制脚本. 因为我懒得自己做截图,所 ...

  3. vue三种调用接口的方法

    注:此博客仅用于学习,自己还处于菜鸟阶段,希望给相同处境的人提供一个可参考的博客.如果您觉得不合理,您的指导,非常欢迎,但请不要否定别人的努力,谢谢您了! vue三种调用接口的方法 1. this.$ ...

  4. 高级语言到机器语言的过程、三种翻译工具的辨析

    源程序:用源语言写的,有待翻译的程序.比如C语言.C++语言.JAVA等 目标程序:.obj文件,源程序通过翻译程序加工以后,生成的机器语言程序,内容是二进制代码. 程序库:程序库中放着一些程序常用的 ...

  5. php 上传图片加密,图片加密平台源码_图片在线加密+包含三种模式上传图片+支付后看原图-html资源网...

    采用 php+mysql 的环境,php 版本是 php5.6. 源码是通过调用八图片平台的 API,进行设计开发的.用此源码搭建的网站,用户资金直接进入你自己的支付接口. 8tupian 图片加密平 ...

  6. hdmi接口有什么用_VGA、DVI、HDMI三种视频信号接口有什么区别呢

    在生活中,高清电视越来越普遍,而这些高清电视大多采用的是VGA.DVI.HDMI的接口.有的场合是需要接几个显示器的,所以需要分清楚这三种接口的特点,才能够更好的去使用. VGA接头:我们先来说说VG ...

  7. uni-app的渲染数据和三种调接口的方法

    渲染数据代码示例: <template><view class="content"><view class="page-section in ...

  8. VGA、DVI、HDMI三种视频信号接口有什么差别

    目录 1. VGA接头 2.DVI接头 3. HDMI接口 1. VGA接头 VGA (Video Graphics Array) 针数为15的视频接口,主要用于老式的电脑输出.VGA输出和传递的是模 ...

  9. 怎样翻译文本?这三种翻译方法我经常使用

    大家是不是还在将收到的文本或资料一句一句地复制到浏览器去翻译,再将翻译结果粘贴回文内呢?这种方法固然可以,但要是遇到需要翻译的文本内容比较多的情况时,就会很浪费时间和精力,如果恰好被英语不好的小伙伴遇 ...

最新文章

  1. 30年来我只坚持三件事
  2. Android程序App开机自启动
  3. 公共互联网网络安全突发事件应急预案_安徽新规:发生重大突发事件,官方5小时内必须发声...
  4. jQuery实现文字向上滚动
  5. arm rtx教程_ARM RTX操作系统—Overview—Product Description
  6. 当你在应用机器学习时你应该想什么
  7. 交换机应用之端口模式(access、trunk和hybird)、是否标记(tag、untag)、端口缺省vlan(pvid、native id)...
  8. ElasticSearch 倒排索引_08
  9. Scala tuple
  10. 【Linux 驱动】第十章 中断处理
  11. OpenCV-图像处理(24、直方图计算)
  12. 云承软件和云溪哪个好_诺承木工开料机使用什么软件好
  13. 开源代码检测FOSSID
  14. Redis_04_Redis客户端
  15. go,go语言编辑器安装,git安装,即vscode三个插件的安装
  16. Python中 os.sep 的作用
  17. 草枯树荣,让生命活得云淡风轻
  18. 张一鸣:10年面试2000人,我发现混的好的人,全都有同一个特质
  19. kernel - regulator
  20. Kafka 发送消息 Idempotent -- Spring 整合

热门文章

  1. OpenCV 3.4.0安装教程
  2. hadoop集群之hdfs文件系统常见操作命令
  3. 面试之响应式布局(转载)
  4. iOS开发之第三方登录QQ -- 史上最全最新第三方登录QQ方式实现
  5. RockwellTrusted TMRT8480C T8480 T8111C冗余系统三重卡件
  6. 牛客编程巅峰赛S1第6场 - 黄金钻石王者(总结)
  7. Java方法实现数组的遍历、获取数组的最大值和最小值
  8. Jimmy's Mini Dict 英语字典 | C# WPF ICIBA
  9. 计算机毕设选题推荐之智慧考试系统 在线批卷阅卷系统 随机组卷系统 考试题库系统 springboot考试系统 作业管理系统 在线作业批改系统(源代码+文档+调试+讲解)
  10. 人人API 分享到人人功能 修改版