Python3.X 调用百度翻译API和有道翻译API

最近在阅读外文文献时由于自己英文水平不够,看起来很吃力。但是PDF格式的文献复制出来会有很多莫名其妙的换行,所以想自己写一个翻译软件去掉多余的换行并且进行翻译。

首先,我的想法是使用谷歌翻译,但是无奈谷歌翻译不再免费只能退而求其次,使用百度翻译和有道翻译(据说有道翻译也不错)。先上个图,使用界面的图:

下面仔细介绍如何使用API,以百度翻译为例:

1、首先登录http://api.fanyi.baidu.com/api/trans/product/index,申请百度翻译API权限,这时候会生成APPID和密钥。

2、在翻译开放平台上,我们找到接入文档,会看到各语言demo,其中有PHP,JS,Python和Java等,根据需要下载即可。

3、下载Python的demo,但是官网的demo是Python2写的,里面有一些代码需要更改,具体如下:

所以具体代码如下:

def baidu_translation(content):
    appid = 'XXXXXXX' #你的appid
    secretKey = 'XXXXXXXX' #你的密钥
    httpClient = None
    myurl = '/api/trans/vip/translate'
    q = content
    fromLang = 'en'
    toLang = 'zh'
    salt = random.randint(32768, 65536)
    sign = appid+q+str(salt)+secretKey
    sign = hashlib.md5(sign.encode()).hexdigest()
    myurl = myurl+'?appid='+appid+'&q='+urllib.parse.quote(q)+'&from='+fromLang+'&to='+toLang+'&salt='+str(salt)+'&sign='+sign
 
    try:
        httpClient = http.client.HTTPConnection('api.fanyi.baidu.com')
        httpClient.request('GET', myurl)
 
        #response是HTTPResponse对象
        response = httpClient.getresponse()
        jsonResponse = response.read().decode("utf-8")  # 获得返回的结果,结果为json格式
        js = json.loads(jsonResponse)  # 将json格式的结果转换字典结构
        dst = str(js["trans_result"][0]["dst"])  # 取得翻译后的文本结果
        return(dst)  # 打印结果
    except Exception as e:
        print(e)
    finally:
        if httpClient:
            httpClient.close()

对于我们从服务器获得的数据,我们需要先了解数据接口,就像有道翻译里给出的:

我们通过各个字段就可以获得不同的数据信息。

4、经过测试,我们可以得出翻译结果。这时候我们就需要一个GUI界面。Python中的GUI自带的是tkinter,我使用两个text控件和一个button控件,分别用来显示原语言,翻译结果,还有开始翻译的功能。我使用的是Place方法布局,place使用的是绝对坐标,是以像素为单位的。例:

这样我们就写完了整个界面,接下来需要实现消除换行的功能。

5、消除换行:从读入的数据中找到所有的回车,替换为空格。代码很简单,

user = user.replace('\n', ' ')

这句话就可以实现换行。但是这样不能区分是真的段末回车还是PDF中复制出来的不必要的回车,所以我们可以进行一个判断,判断回车符之前是不是句号,如果是句号就不需要进行替换。(一般情况下是这样的吧。。。)

这样的话,我们的整个消除换行翻译软件差不多就完成了,有道翻译也是类似的,有道翻译api的代码大家可以参考一下:

def youdao_translation(content):
    appKey = 'XXXXXXXXXX' #你的appid
    secretKey = 'XXXXXXXXXXXXXXXXXX' #你的密钥
    httpClient = None
    myurl = 'http://openapi.youdao.com/api'
    q = content
    fromLang = 'EN'
    toLang = 'zh-CHS'
    salt = random.randint(1, 65536)
    sign = appKey + q + str(salt) + secretKey
    m1 = hashlib.md5()
    m1.update(sign.encode('utf-8'))
    sign = m1.hexdigest()
    myurl = myurl + '?appKey=' + appKey + '&q=' + urllib.parse.quote(q) + '&from=' + fromLang + '&to=' + toLang + '&salt=' + str(salt) + '&sign=' + sign
    try:
        httpClient = urlopen(myurl)
        response = eval(httpClient.read().decode())
        #l1 = len(response["translation"])
        #l2 = len(response["basic"]["explains"])
        #if response["translation"] and l1 > l2:
        return(response["translation"])
        #else:
        #print(response["basic"]["explains"])

    except Exception as e:
        print(e)
    finally:
        if httpClient:
            httpClient.close()

6、翻译功能到这里就写完了,但是我们现在还是在Python中完成的运行,我们可以将py脚本导出为EXE,具体办法大家可以自行百度,有很多类似的文章。软件到这里就完成了!

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值