Merge pull request #143 from Jzdoxc/master

添加句子翻译和句子发音
This commit is contained in:
sthoo 2019-05-06 14:53:49 +08:00 committed by GitHub
commit e263e794e0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -0,0 +1,65 @@
# -*- coding:utf-8 -*-
import xml.etree.ElementTree
from ..base import WebService, export, register, with_styles
import requests
import hashlib
import random
import json
@register([u'百度翻译', u'Baidu-Translate'])
class BaiduFy(WebService):
def __init__(self):
super(BaiduFy, self).__init__()
def _get_from_api(self, lang='fr'):
url = u'http://api.fanyi.baidu.com/api/trans/vip/translate'
result = {
'explains': '',
}
data = {
'q': '',
'from': 'en',
'to': 'zh',
'appid': '20190502000293467',
'salt': '',
'sign': '',
}
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36 Edge/15.15063',
}
miyao = 'QEl8tPQXtgn35Dzxubk6'
try:
data['q'] = self.word
data['salt'] = str(random.randint(0, 100))
strs = data['appid'] + data['q'] + data['salt'] + miyao
data['sign'] = hashlib.md5(strs.encode('utf-8')).hexdigest()
html = requests.post(url, data=data, headers=headers)
explains = json.loads(html.content)['trans_result'][0]['dst']
result.update({'explains': explains})
except:
pass
return self.cache_this(result)
@export([u'翻译结果', 'translation'])
def fld_explains(self):
return self.cache_result('explains') if self.cached('explains') else \
self._get_from_api().get('explains', '')
@export([u'英式发音', 'uk'])
def fld_uk_audio(self):
audiourl = 'http://tts.baidu.com/text2audio?lan=uk&pid=101&ie=UTF-8&text={0}&spd=4'.format(self.quote_word)
audio = requests.get(audiourl)
name = 'bdfy_uk'+hashlib.md5(audiourl.encode('utf-8')).hexdigest()+'.mp3'
with open(name,'wb') as f:
f.write(audio.content)
return self.get_anki_label(name, 'audio')
@export([u'美式发音', 'en'])
def fld_en_audio(self):
audiourl = 'http://tts.baidu.com/text2audio?lan=en&pid=101&ie=UTF-8&text={0}&spd=4'.format(self.quote_word)
audio = requests.get(audiourl)
name = 'bdfy_en'+hashlib.md5(audiourl.encode('utf-8')).hexdigest()+'.mp3'
with open(name,'wb') as f:
f.write(audio.content)
return self.get_anki_label(name, 'audio')