我在python中编写了一个小脚本,用于将单词从英语翻译成俄语。它使用Microsoft-Translator-Python-API连接到Microsoft Translator API。但是,存在延迟问题 - 调用API并获得翻译需要三秒钟。 如果有可能,有人知道让它更快地工作的方法吗? 我会把我的代码放在一边,只是为了表明我在这里做了什么:
translator = Translator('My-User-Id',
'My-Client-Secret')
current_word = subprocess.check_output(["xsel", "-o"])
translation = translator.translate(current_word, "ru")
答案 0 :(得分:6)
有趣的是,你实际上可以做到这一点:
import json
import requests
import urllib
args = {
'client_id': '',#your client id here
'client_secret': '',#your azure secret here
'scope': 'http://api.microsofttranslator.com',
'grant_type': 'client_credentials'
}
oauth_url = 'https://datamarket.accesscontrol.windows.net/v2/OAuth2-13'
oauth_junk = json.loads(requests.post(oauth_url,data=urllib.urlencode(args)).content)
translation_args = {
'text': "hello",
'to': 'ru',
'from': 'en'
}
headers={'Authorization': 'Bearer '+oauth_junk['access_token']}
translation_url = 'http://api.microsofttranslator.com/V2/Ajax.svc/Translate?'
translation_result = requests.get(translation_url+urllib.urlencode(translation_args),headers=headers)
print translation_result.content
并且在它减速之前得到一堆立即反应(在减速之前立即响应6-7次)。我没有那么多使用Azure,所以我不确定他们的速率限制是如何工作的,但我相信你可以支付这个速度。
(注意:我从那个微软库中抓取了上面代码的一部分。只是想看看逻辑本身的行为)
答案 1 :(得分:2)
无耻的插头。
我创建了一个python模块(它的啤酒器:)),使这个过程更加简单。
使用它就像:
import azure_translate_api
client = azure_translate_api.MicrosoftTranslatorClient('client_id', 'client_secret')
print client.TranslateText('Hello World!', 'en', 'fr')
要详细了解从何处下载此模块以及如何使用该模块,请访问my github repo。