commit
e263e794e0
65
addons21/fastwq/service/dict/baidufy.py
Normal file
65
addons21/fastwq/service/dict/baidufy.py
Normal 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')
|
||||
Loading…
Reference in New Issue
Block a user