手把手教你用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 requests
import json
 
url = "http://api.interpreter.caiyunai.com/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 openpyxl
import os,json

url = "http://api.interpreter.caiyunai.com/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_lang

def 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 resp

def get_lst():
    from_lang,to_lang=lang()
    for workbook in workbooks:
        wb=openpyxl.load_workbook(workbook)
        ws=wb.active
        for 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()

四、学后反思

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

猜你喜欢

转载自blog.csdn.net/henanlion/article/details/130859150