python 调用翻译接口
最近在读 gartner 的一些文档,然后,,,全英文 😵然后看的我头昏脑涨。。。。重点是效率低下。。。那我就想打开了我的有道,准备看到不认得的就鼠标悬浮一会,然后等反馈。。
可是,,这也太难了吧。。。能不能再偷点懒啊 😟,然后我就想着能不能调翻译接口直接帮我整篇翻译完好了,理论上这是完全可以做到的哦 😎说干就干,辛苦一小会能节省一大把时间 ~
思路理理 ~
首先:把我需要看的文档内容都读取出来,好吧我的文档是 pdf 类型,那就对应的挑选PyPDF2
之类的库来读取就好了
其次:把我读取出来的数据该整理整理,然后连好接口获取反馈,那翻译的接口我就用的有道了
最后:为了方便,把我得到的反馈直接都写进 txt 文本里,就好啦
结果如下:
代码附上:
from PyPDF2.pdf import PdfFileReader
import urllib.request
import urllib.parse
import json
def youdao_translate(content):
'''有道翻译'''
youdao_url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
data = {}
# 调接口时所需参数,看自己情况修改,不改也可调用
data['i'] = content
data['from'] = 'AUTO'
data['to'] = 'AUTO'
data['smartresult'] = 'dict'
data['client'] = 'fanyideskweb'
data['salt'] = ''
data['sign'] = ''
data['doctype'] = 'json'
data['version'] = '2.1'
data['keyfrom'] = 'fanyi.web'
data['action'] = 'FY_BY_CLICKBUTTION'
data['typoResult'] = 'false'
data = urllib.parse.urlencode(data).encode('utf-8')
# 发送翻译请求
youdao_response = urllib.request.urlopen(youdao_url, data)
# 获得响应
youdao_html = youdao_response.read().decode('utf-8')
target = json.loads(youdao_html)
# 取出需要的数据
trans = target['translateResult']
ret = ''
for i in range(len(trans)):
line = ''
for j in range(len(trans[i])):
line = trans[i][j]['tgt']
ret += line + '\n'
return ret
def translate(path, new_path):
'''读取pdf内容,并翻译,写入txt文件'''
f = open(path, 'rb') # 打开需要读取的pdf
pdf = PdfFileReader(f) # 创建实例
# 读取每一页pdf并翻译写入txt
for i in range(0, pdf.getNumPages()):
# 获取pdf文本内容
extractedText = pdf.getPage(i).extractText()
# 经测试发现最后一行换行符需丢弃,可采取不同方式,此处仅作参考
content = extractedText.split('\n')[:-1]
content=('\n').join(content)
# 创建并打开txt文件
with open(new_path, 'a+') as f1:
# 有道翻译内容
trans = youdao_translate(content)
# 写入内容及翻译结果,就直接在txt里可以一段原文一段翻译后的对比着看,编码测试时遇到过错误,建议不要改动代码
f1.write(content.encode('gbk','ignore').decode('gbk','ignore') + '\n')
f1.write(trans.encode('gbk','ignore').decode('gbk','ignore'))
f.close()
translate('C:\\Users\\XXXX.pdf', 'C:\\Users\\XXXXXX.txt') # 根据自己实际pdf文档路径,及想要生成翻译文档路径对应修改参数即可
这个懒还是没有白偷啦 ~ 😊
这个必须点赞👍