anki-word-query/src/fastwq/service/youdaofr.py

80 lines
2.6 KiB
Python
Raw Normal View History

2018-07-01 10:55:30 +08:00
#-*- coding:utf-8 -*-
import re
import urllib2
import xml.etree.ElementTree
from aqt.utils import showInfo
from .base import WebService, export, register, with_styles
2018-07-09 19:01:37 +08:00
@register([u'有道词典-法语', u'Youdao-French'])
2018-07-01 10:55:30 +08:00
class Youdaofr(WebService):
def __init__(self):
super(Youdaofr, self).__init__()
def _get_from_api(self, lang='fr'):
2018-07-09 19:01:37 +08:00
url = (u'http://dict.youdao.com/fsearch?client=deskdict'
'&keyfrom=chrome.extension&pos=-1'
'&doctype=xml&xmlVersion=3.2'
'&dogVersion=1.0&vendor=unknown'
'&appVer=3.1.17.4208'
'&le={0}&q={1}').format(lang, self.word)
result ={
'phonetic': '',
'explains':'',
}
2018-07-01 10:55:30 +08:00
try:
2018-07-09 19:01:37 +08:00
html = self.get_response(url, timeout=5)
2018-07-01 10:55:30 +08:00
# showInfo(str(result))
2018-07-09 19:01:37 +08:00
doc = xml.etree.ElementTree.fromstring(html)
2018-07-01 10:55:30 +08:00
# fetch explanations
explains = '<br>'.join([node.text for node in doc.findall(
".//custom-translation/translation/content")])
2018-07-09 19:01:37 +08:00
result.update({'explains': explains})
2018-07-01 10:55:30 +08:00
except:
2018-07-09 19:01:37 +08:00
pass
return self.cache_this(result)
2018-07-01 10:55:30 +08:00
2018-07-13 22:08:35 +08:00
@export(u'基本释义')
2018-07-01 10:55:30 +08:00
def fld_explains(self):
return self.cache_result('explains') if self.cached('explains') else \
self._get_from_api().get('explains', '')
@with_styles(cssfile='_youdao.css', need_wrap_css=True, wrap_class='youdao')
def _get_singledict(self, single_dict, lang='fr'):
2018-07-09 19:01:37 +08:00
url = u"http://m.youdao.com/singledict?q={0}&dict={1}&le={2}&more=false".format(
self.word, single_dict, lang
)
2018-07-01 10:55:30 +08:00
try:
2018-07-09 19:01:37 +08:00
html = urllib2.urlopen(url, timeout=5).read()
return (u'<div id="{0}_contentWrp" class="content-wrp dict-container">'
'<div id="{1}" class="trans-container {2} ">{3}</div>'
'</div>'
'<div id="outer">'
'<audio id="dictVoice" style="display: none"></audio>'
'</div>').format(
single_dict,
single_dict,
single_dict,
html
)
2018-07-01 10:55:30 +08:00
except:
return ''
2018-07-13 22:08:35 +08:00
@export(u'网络释义')
2018-07-01 10:55:30 +08:00
def fld_web_trans(self):
return self._get_singledict('web_trans')
2018-07-13 22:08:35 +08:00
@export(u'双语例句')
2018-07-01 10:55:30 +08:00
def fld_blng_sents_part(self):
return self._get_singledict('blng_sents_part')
2018-07-13 22:08:35 +08:00
@export(u'百科')
2018-07-01 10:55:30 +08:00
def fld_baike(self):
return self._get_singledict('baike')
2018-07-13 22:08:35 +08:00
@export(u'汉语词典(中)')
2018-07-01 10:55:30 +08:00
def fld_hh(self):
return self._get_singledict('hh')