python有道,腾讯,谷歌,百度四大翻译api聚合接口[蟒实现](代码片段)

author author     2022-12-26     475

关键词:

import time
import hashlib
import requests
import json
from googletrans import Translator
import urllib
import hmac
import base64
from urllib.parse import quote
import time
import random

class UnitedTranslator(object):
    
    def __init__(self, dest):
        """初始化数据
        
        Args:
            dest: 目标翻译语言
        """
        self.lang_from = 'auto'
        self.lang_to = dest
        self.headers = 
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'
        
        
    def baidu_get_url_encoded_params(self, query_text):
        """按api调用要求拼接url
        
        Args:
            query_text: 待翻译的文本
            
        Returns:
            符合调用接口要求的参数dict
        """
        app_id = '你的app_id'
        app_secret = '你的app_secret'
        salt = str(round(time.time() * 1000))
        sign_raw = app_id + query_text + salt + app_secret
        sign = hashlib.md5(sign_raw.encode('utf8')).hexdigest()
        params = 
            'q': query_text,
            'from': self.lang_from,
            'to': self.lang_to,
            'appid': app_id,
            'salt': salt,
            'sign': sign
        
        return params
    
    def baidu_parse(self, query_text):
        """解析有道api返回的 json 数据
        
        Args:
            query_text: 待翻译的字符串文本
            
        Returns:
            翻译好的文本
        """
        base_url = 'https://fanyi-api.baidu.com/api/trans/vip/translate'
        params = self.baidu_get_url_encoded_params(query_text)
        response = requests.get(base_url, headers=self.headers, params=params).text
        json_data = json.loads(response)
        res = [i['dst'] for i in json_data['trans_result']]
        trans_text = '\n\n'.join(res)
        # print('---baidu---')
        # print(trans_text)
        return trans_text
    
    def youdao_get_url_encoded_params(self, query_text):
        """按api调用要求拼接url
        
        Args:
            query_text: 待翻译的文本
            
        Returns:
            符合调用接口要求的参数dict
        """
        app_key = '你的app_key'
        app_secret = '你的app_secret'
        salt = str(round(time.time() * 1000))
        sign_raw = app_key + query_text + salt + app_secret
        sign = hashlib.md5(sign_raw.encode('utf8')).hexdigest()
        params = 
            'q': query_text,
            'from': self.lang_from,
            'to': self.lang_to,
            'appKey': app_key,
            'salt': salt,
            'sign': sign
        
        return params
    
    def youdao_parse(self, query_text):
        """解析有道api返回的 json 数据
        
        Args:
            query_text: 待翻译的字符串文本
            
        Returns:
            翻译好的文本
        """
        base_url = 'https://openapi.youdao.com/api'
        params = self.youdao_get_url_encoded_params(query_text)
        response = requests.get(base_url, headers=self.headers, params=params).text
        json_data = json.loads(response)
        trans_text = json_data['translation'][0]
        # print('---youdao---')
        # print(trans_text)
        return trans_text
    
    def google_trans(self, query_text):
        lang_to = 'zh-CN' if self.lang_to == 'zh' else self.lang_to
        google_trans = Translator()
        result = google_trans.translate(query_text, dest=lang_to).text
        # print('---google---')
        # print(result)
        return result

    def tencent_get_url_encoded_params(self, query_text):
        action = 'TextTranslate'
        region = 'ap-guangzhou'
        timestamp = int(time.time())
        nonce = random.randint(1, 1e6)
        secret_id = '你的secret_id'
        secret_key = '你的secret_key'  # my secret_key
        version = '2018-03-21'
        lang_from = self.lang_from
        lang_to = self.lang_to

        params_dict = 
            # 公共参数
            'Action': action,
            'Region': region,
            'Timestamp': timestamp,
            'Nonce': nonce,
            'SecretId': secret_id,
            'Version': version,
            # 接口参数
            'ProjectId': 0,
            'Source': lang_from,
            'Target': lang_to,
            'SourceText': query_text
        
        # 对参数排序,并拼接请求字符串
        params_str = ''
        for key in sorted(params_dict.keys()):
            pair = '='.join([key, str(params_dict[key])])
            params_str += pair + '&'
        params_str = params_str[:-1]
        # 拼接签名原文字符串
        signature_raw = 'GETtmt.tencentcloudapi.com/?' + params_str
        # 生成签名串,并进行url编码
        hmac_code = hmac.new(bytes(secret_key, 'utf8'), signature_raw.encode('utf8'), hashlib.sha1).digest()
        sign = quote(base64.b64encode(hmac_code))
        # 添加签名请求参数
        params_dict['Signature'] = sign
        # 将 dict 转换为 list 并拼接为字符串
        temp_list = []
        for k, v in params_dict.items():
            temp_list.append(str(k) + '=' + str(v))
        params_data = '&'.join(temp_list)
        return params_data

    def tencent_parse(self, query_text):
        url_with_args = 'https://tmt.tencentcloudapi.com/?' + self.tencent_get_url_encoded_params(query_text)
        res = requests.get(url_with_args, headers=self.headers)
        json_res = json.loads(res.text)
        trans_text = json_res['Response']['TargetText']
        return trans_text

    def translate(self, query_text):
        youdao_res = self.youdao_parse(query_text)
        google_res = self.google_trans(query_text)
        baidu_res = self.baidu_parse(query_text)
        result = 
            'youdao': youdao_res,
            'google': google_res,
            'baidu': baidu_res
        
        return result


# 接口调用示例

# 中译英
t1 = UnitedTranslator('en')
zh_text = '''
自从2008年以来,Python3横空出世并慢慢进化。Python3的流行一直被认为需要很长一段时间。 事实上,到我写这本书的2013年,绝大部分的Python程序员仍然在生产环境中使用的是版本2系列, 最主要是因为Python3不向后兼容。毫无疑问,对于工作在遗留代码上的每个程序员来讲,向后兼容是不得不考虑的问题。 但是放眼未来,你就会发现Python3给你带来不一样的惊喜。

正如Python3代表未来一样,新的《Python Cookbook》版本相比较之前的版本有了一个全新的改变。 最重要的是,这个意味着本书是一本非常前沿的参考书。书中所有代码都是在Python3.3版本下面编写和测试的, 并没有考虑之前老版本的兼容性,也没有标注旧版本下的解决方案。这样子可能会有争议, 但是我们最终的目的是写一本完全基于最新最先进工具和语言的书籍。 希望这本书能成为在Python3下编码和想升级之前遗留代码的程序员的优秀教程。
'''
print(zh_text)
print("---youdao---")
print(t1.youdao_parse(zh_text))
print("---baidu---")
print(t1.baidu_parse(zh_text))
print("---google---")
print(t1.google_trans(zh_text))
print("---tencent---")
print(t1.tencent_parse(zh_text))
print('\n')
# 英译中
t2 = UnitedTranslator('zh')
en_text = 'How are you doing lately?'
print(en_text)
print("---youdao---")
print(t2.youdao_parse(en_text))
print("---baidu---")
print(t2.baidu_parse(en_text))
print("---google---")
print(t2.google_trans(en_text))
print("---tencent---")
print(t2.tencent_parse(en_text))


android应用记录一:有道翻译api调用

...。首先我需要调用一个翻译API,中文翻译比较好用的API有有道翻译API,百度翻译API等,因为先期用过百度地图API,觉得很好用,所以我先查阅了百度翻译API觉得还不错,因为我写的APP是给自己用的,所以这肯定够用,然后我就申... 查看详情

idea插件-translation

...翻译网址:? 谷歌翻译;? 我的插件版本为2.9支持谷歌、有道、百度三种,有道和百度两种需要填写应用应用ID和应用密钥才能用,这个需要到有道智云(百度的没有试过)申请。快捷键:? Ctrl+Q:选中方法,显示该方法的注释... 查看详情

python打造基于有道翻译的命令行翻译工具(命令行爱好者必备)(代码片段)

Python打造基于有道翻译的命令行翻译工具(命令行爱好者必备)之前基于百度写了一篇博文Python打造基于百度翻译的命令行翻译工具,本来这工具用得挺好的。但是没想到,近期处于不知道啥原因,不能用了... 查看详情

如何调用有道翻译api进行汉译英

使用的是有道提供的http://fanyi.youdao.com/openapi.do?keyfrom=<keyfrom>&key=<key>&type=data&doctype=json&version=1.1&q=$valuejson数据格式,但是在BAE里对链接进行抓取的时候无法得到正确结果。$content=$fetch->get($qurl);$qurl就是上面的地址,但... 查看详情

怎么在百度浏览器上用有道自动翻译?

百度浏览器好像自动屏蔽了有道的自动翻译,在ie浏览器上就可以鼠标一指就出来翻译了,请问在哪里改这个设置,解除屏蔽?你可以在百度浏览器应用中心安装插件“有道划词翻译”安装完成以后,就可以点击使用啦!参考技... 查看详情

生物信息学常用软件

Python类 Rodeo绘图  Markdownpad2 openliveWriter 有道翻译/金山翻译/欧路翻译 有道云笔记 TIM uTorrent 腾讯微云 鲁大师/360驱动大师 iSurrround Firefox/谷歌浏览器/360极速浏览器 六快拨/马 查看详情

如何通过谷歌翻译api在python中使用api键

】如何通过谷歌翻译api在python中使用api键【英文标题】:Howtouseanapikeyinpythonwithgoogletranslationapi【发布时间】:2017-11-0619:52:51【问题描述】:我在谷歌文档中阅读了几个小时,但我仍然不知道我在做什么。我基本上只是想使用谷歌... 查看详情

c#有道api翻译(代码片段)

原文:C#有道API翻译查询单词详细信息有道云官方文档有道云翻译API简介:http://ai.youdao.com/docs/doc-trans-api.s#p01有道云C#Demo: http://ai.youdao.com/docs/doc-trans-api.s#p08查询单词信息在有道云的Demo中,已经很完整的给出了相应的代码~但是... 查看详情

android使用有道翻译api实如今线翻译功能

在Android应用中,加入在线翻译的功能,这里调用的是有道翻译的API。使用有道翻译API。首先要申请一个key,申请地址为:有道翻译API申请地址。申请之后就会得到一个keyfrom和一个key。获取翻译结果的数据接口为:http://fanyi.youdao... 查看详情

selenium之百度搜索+有道翻译的简单testcase执行-----用例报告(htmltestrunner)(代码片段)

...着视频学习的时候,练习的第一个HTMLTestRunner脚本,基于python3的脚本。test_baidu,py#coding=utf-8importunittestimportHTMLTestRunnerimporttime#定义测试文件查找的目录 查看详情

python百度翻译api的示例代码(代码片段)

查看详情

java接口测试之使用有道翻译api

   写接口测试框架,找了有道翻译API来当测试数据packagecom.httpGetTest;importjava.beans.Encoder;importjava.net.URLEncoder;importjava.security.MessageDigest;importjava.util.HashMap;importjava.util.Map;publicc 查看详情

python反编译调用有道翻译(附完整代码)

...咸鱼) 的发展,今天就来给大家介绍一下如何用 Python超简 查看详情

百度翻译api

1#/usr/bin/envpython32#coding=utf834"""百度翻译api功能实现函数,本模块基于Python3.x实现,getTransResult(q)中参数q是需被翻译的内容,目前该函数的源语言默认英文,目标语言默认简体中文"""567importhttp.client8importhashlib9importurllib10importrandom11... 查看详情

python爬有道翻译(代码片段)

 在有道翻译页面中打开开发者工具,在Headers板块找到RequestURL以及相应的data。 importurllib.requestimporturllib.parseimportjsoncontent=input(‘请输入需要翻译的内容:‘)#_o要去掉,否则会出先error_code:50的报错url=‘http://fanyi.youdao.com/tra... 查看详情

python3爬虫有道翻译

准备:Python3.5+Chrome+Pycharm步骤:(1)打开有道翻译的网页,然后鼠标右键检查(或者按F12),再输入一个单词(例如book),在XHR选项中可以看到这条信息,也就是说我们要利用post把要翻译的内容发送出去,然后再获取返回的信... 查看详情

python爬取有道翻译(代码片段)

#translatewordsthroughyoudao.com//discriptionaboutthecode#theproblemistheformdataofyoudaowebpagehasbeencoded#importnecessarypackageimporturllib.requestimporturllib.parseimportjsondeftranslate(translat 查看详情

python爬取有道翻译

1.准备工作先来到有道在线翻译的界面http://fanyi.youdao.com/F12审查元素->选Network一栏,然后F5刷新(如果看不到Method一栏,右键Name栏,选中Method)输入文字自动翻译后发现Method一栏有GET还有POST;GET是指从服务器请求和获得数据,... 查看详情