1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 手把手教你用Python调用彩云机器翻译API

手把手教你用Python调用彩云机器翻译API

时间:2019-02-08 08:11:29

相关推荐

手把手教你用Python调用彩云机器翻译API

一、引言

彩云这个小而美的机器翻译一直很低调,它让人眼前一亮的是之前我们分享的网页翻译插件,可以把外文网站翻译成英中对照的样式,便于我们学习。之前我们也写过文章介绍过:

PythonFan:如何用Google翻译英文网页成双语对照样式6 赞同 · 5 评论文章正在上传…重新上传取消

有时我们要它翻译内容较多的文件,可以通过Python来调用它的机器翻译API,突破网页版5000字符的限制。 下面我们来介绍一下如何调用其API。

二、实现过程

第一步,我们要进入到彩云科技的主页,如果是第一次登录,就要先注册这个网站,然后再点击顶部的【在线翻译】。

在线翻译

第二步,再点击页面顶部的【翻译API】。

第三点,点击右侧的【Python调用】栏目。

Python调用

第四步,点击代码框右上解的复制按钮,复制Python的demo代码至thonny或者PyCharm等其它IDLE工具中备用。

样例代码

第五步,点击右侧【申请访问令牌】,点击【彩云科技开放平台】进入到开放平台,进行账号申请,同时可以申请彩云小译的API令牌。

第六步,进入到彩云科技开放平台,点击注册,注册账号。

注册小牛科技开放平台

第七步,点击【创建令牌】,填写应用的名称,创建令牌。

第八步,点击【令牌】下面一串字母形成的超级链接,进入到令牌令牌页面,然后可以复制令牌(就是那一串数字和字母组成的字符串),放到Python代码中的token变量的右边。

第九步,我们加入token,把整个代码放到IDLE中,或者thonny中进行调试代码。官方的代码如下:

官方代码

为了让代码可以翻译字符串,我们把原代码进行了修改。"Source"那里改为字符串, 'content-type'那里json改为txt,最后把译文直接打印出来。

import requestsimport jsonurl = "http://api./v1/translator"token = "你的令牌" #这里填写你自己的令牌payload = {#"source" : ["Where there is a will, there is a way.", #"ColorfulClouds Weather is the best weather service."],"source" : "Where there is a will, there is a way.","trans_type" : "en2zh","request_id" : "demo",}headers = {'content-type': "application/txt",'x-authorization': "token " + token,}response = requests.request("POST", url, data=json.dumps(payload), headers=headers)#print(response.text)resp = json.loads(response.text)['target']print(resp)

三、代码优化

为了更好地调用这个代码,我进一步把以上代码中的翻译功能整合成为一个函数,这样嵌入到其它的程序中会更方便,也比较符合Python程序类的写法。

以下是我把彩云小译的Python代码移植到TransExcel中,可以批量把Excel文件中的A列翻译成B列,并保存。

注意当前目录下我们需要建一个config.txt里面写上【zh|en】或者【en|zh】这是为了便于控制语言翻译的方向。

import openpyxlimport os,jsonurl = "http://api./v1/translator"token = "ayvp8cntxz5e88encfi5"workbooks=[wb for wb in os.listdir(os.getcwd()) if wb.endswith('.xlsx')]def lang():with open("config.txt","r",encoding="utf-8") as f:line=f.readlines()from_lang,to_lang=line[0].strip().split("|")return from_lang,to_langdef caiyun_api(content,from_lang,to_lang):payload = {"source" : content,"trans_type" : from_lang+str(2)+to_lang,"request_id" : "demo",}headers = {'content-type': "application/txt",'x-authorization': "token " + token,}response = requests.request("POST", url, data=json.dumps(payload), headers=headers)resp = json.loads(response.text)['target']return respdef get_lst():from_lang,to_lang=lang()for workbook in workbooks:wb=openpyxl.load_workbook(workbook)ws=wb.activefor cell0,cell1 in zip(ws['A'],ws['B']):if cell0.value!="":try:cell1.value=caiyun_api(cell0.value,from_lang,to_lang)except Exception as exc:print(exc)wb.save(workbook)get_lst()

四、学后反思

彩云翻译还是比较良心,每个月送100万的免费翻译字符,而且翻译速度和翻译质量都还不错。用Python调用API可以把Python的优势与API的功能相结合,实现多类型文件翻译和批量翻译,在不要求文本格式的情况,优化我们的翻译流程。彩云小译免费额度用完后,额外购买是20元/100万字符,价格上还算优惠,也是比较良心。只是目前来看,采云小译的推广力度不够,很多人还不知道这款好用的翻译引擎。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。