[Python]通过调用百度翻译API实现的翻译小程序
来源:互联网 发布:linux mount 远程挂载 编辑:程序博客网 时间:2024/05/21 17:03
初学Python,想尝试写几个小程序。无意中发现百度翻译开放平台提供了API,可以为我们提供高质量的翻译服务。这个是我用Python写的第一个小程序,本文也是我的第一篇博客,想想也是好激动。现在介绍一下通过调用百度翻译API编写在线翻译程序的方法。
现在百度翻译开放平台每月提供200万字符的免费翻译服务,只要拥有百度账号并申请成为开发者就可以获得所需要的账号和密码。下面是开发者申请链接:
http://api.fanyi.baidu.com/api/trans/product/index
为方便使用,百度翻译开放平台提供了详细的接入文档,链接如下:
http://api.fanyi.baidu.com/api/trans/product/apidoc
程序演示:
在翻译文档中列出了详细的使用方法,以下是接入文档原文:
例:将apple从英文翻译成中文:
q=apple
from=en
to=zh
appid=2015063000000001
salt=1435660288
平台分配的密钥: 12345678
生成sign:
>拼接字符串1
拼接appid=2015063000000001+q=apple+salt=1435660288+密钥=12345678
得到字符串1 =2015063000000001apple143566028812345678
>计算签名sign(对字符串1做md5加密,注意计算md5之前,串1必须为UTF-8编码)
sign=md5(2015063000000001apple143566028812345678)
sign=f89f9594663708c1605f3d736d01d2d4
完整请求为:
http://api.fanyi.baidu.com/api/trans/vip/translate?q=apple&from=en&to=zh&appid=2015063000000001&salt=1435660288&sign=f89f9594663708c1605f3d736d01d2d4
签名sign的生成
通过Python提供的hashlib模块中的hashlib.md5()可以实现签名计算
以接入文档中的字符串为例:
import hashlibm = '2015063000000001apple143566028812345678'm_MD5 = hashlib.md5(m)sign = m_MD5.hexdigest()print 'm = ',mprint 'sign = ',sign
得到签名之后,按照接入文档中要求,生成URL请求,提交后可返回翻译结果。以下是接入文档提供的字段以及对应描述的截图:
解析返回结果
提交URL后的返回值为json格式,使用json模块可以对结果进行解析:
{"from":"en","to":"zh","trans_result":[{"src":"apple","dst":"\u82f9\u679c"}]}
import jsonresult = '{"from":"en","to":"zh","trans_result":[{"src":"apple","dst":"\u82f9\u679c"}]}'data = json.loads(result)print data['trans_result'][0]['dst']
至此,我们完成了有关API调用的所有关键步骤。
以下为全部代码:
# -*- coding: utf-8 -*-import urllib2import hashlibimport jsonimport randomclass Baidu_Translation: def __init__(self): self._q = '' self._from = '' self._to = '' self._appid = 0 self._key = '' self._salt = 0 self._sign = '' self._dst = '' self._enable = True def GetResult(self): self._q.encode('utf8') m = str(Trans._appid)+Trans._q+str(Trans._salt)+Trans._key m_MD5 = hashlib.md5(m) Trans._sign = m_MD5.hexdigest() Url_1 = 'http://api.fanyi.baidu.com/api/trans/vip/translate?' Url_2 = 'q='+self._q+'&from='+self._from+'&to='+self._to+'&appid='+str(Trans._appid)+'&salt='+str(Trans._salt)+'&sign='+self._sign Url = Url_1+Url_2 PostUrl = Url.decode() TransRequest = urllib2.Request(PostUrl) TransResponse = urllib2.urlopen(TransRequest) TransResult = TransResponse.read() data = json.loads(TransResult) if 'error_code' in data: print 'Crash' print 'error:',data['error_code'] return data['error_msg'] else: self._dst = data['trans_result'][0]['dst'] return self._dst def ShowResult(self,result): print result def Welcome(self): self._q = 'Welcome to use icedaisy online translation tool' self._from = 'auto' self._to = 'zh' self._appid = 201609240000***** self._key = '******' self._salt = random.randint(10001,99999) welcome = self.GetResult() self.ShowResult(welcome) def StartTrans(self): while self._enable: self._q = raw_input() if cmp(self._q, '!quit') == 0: self._enable = False print 'Thanks for using!' break _q_len = len(self._q) if _q_len < 4096: result = self.GetResult() self.ShowResult(result) else: print 'Exceeds the maximum limit of 4096 characters'#----------- 程序的入口 -----------print u""" --------------------------------------- 程序:icedaisy的在线翻译工具 版本:0.2 作者:icedaisy 日期:2016-09-25 语言:Python 2.7 功能:输入原文后得到翻译结果 原理:调用百度翻译API 退出:输入!quit--------------------------------------- """Trans = Baidu_Translation()Trans.Welcome()Trans.StartTrans()
- [Python]通过调用百度翻译API实现的翻译小程序
- 百度翻译API的调用
- 实践项目五:python调用百度API实现自动检测翻译
- 调用百度翻译API
- C#调用百度翻译接口小程序
- 【Python】Python的urllib、urllib2模块调用“百度翻译”API进行批量自动翻译
- Python 调用 百度翻译
- python调用百度翻译
- 翻译软件(用百度的API实现)Python
- 百度翻译API的简单调用
- C#调用百度翻译API实现自己的简单翻译工具
- WINFORM调用百度翻译API
- 利用百度翻译API实现多语言的翻译
- python3百度翻译API实现批量翻译
- python调用百度翻译接口
- 百度翻译API - PHP实现
- python调用百度翻译api(自己写的非官方demo)
- [Python]Google翻译小程序
- 网络请求(HttpUrlConnection/HttpClient)
- leetcode 33. Search in Rotated Sorted Array(二分查找)
- RecyclerView子View宽度不充满父容器
- 20160925python
- 基于竞争的MAC协议
- [Python]通过调用百度翻译API实现的翻译小程序
- python爬虫入门简单爬虫
- javascript学习(二) 时间效果实现
- tar相关命令
- 微信小程序
- 学习路线
- 使用CStatic显示图片(bmp、ico、png)
- 论如何实现财务独立
- 算法学习(二)—— 十种排序算法的总结和分析