diff --git a/src/fastwq/service/youdao.py b/src/fastwq/service/youdao.py
index fcf5923..b1cd0a9 100644
--- a/src/fastwq/service/youdao.py
+++ b/src/fastwq/service/youdao.py
@@ -26,20 +26,26 @@ initVoice();
youdao_download_mp3 = True
-@register(u'有道词典')
+@register([u'有道词典-英汉', u'Youdao'])
class Youdao(WebService):
def __init__(self):
super(Youdao, self).__init__()
def _get_from_api(self, lang='eng'):
- url = "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=%s&q=%s" % (
- lang, self.word)
- phonetics, explains = '', ''
+ 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':'',
+ }
try:
- result = urllib2.urlopen(url, timeout=5).read()
- # showInfo(str(result))
- doc = xml.etree.ElementTree.fromstring(result)
+ html = self.get_response(url, timeout=5)
+ doc = xml.etree.ElementTree.fromstring(html)
# fetch symbols
symbol, uk_symbol, us_symbol = doc.findtext(".//phonetic-symbol"), doc.findtext(
".//uk-phonetic-symbol"), doc.findtext(".//us-phonetic-symbol")
@@ -51,34 +57,50 @@ class Youdao(WebService):
else:
phonetics = ''
# fetch explanations
- explains = '
'.join([node.text for node in doc.findall(
- ".//custom-translation/translation/content")])
- return self.cache_this({'phonetic': phonetics, 'explains': explains})
+ explains = '
'.join([node.text
+ for node in doc.findall(
+ ".//custom-translation/translation/content"
+ )])
+ result.update({'phonetic': phonetics, 'explains': explains})
except:
- return {'phonetic': phonetics, 'explains': explains}
+ pass
+ return self.cache_this(result)
+
+ def _get_field(self, key, default=u''):
+ return self.cache_result(key) if self.cached(key) else self._get_from_api().get(key, default)
@export(u'音标', 0)
def fld_phonetic(self):
- return self.cache_result('phonetic') if self.cached('phonetic') else self._get_from_api()['phonetic']
+ return self._get_field('phonetic')
@export(u'基本释义', 1)
def fld_explains(self):
- return self.cache_result('explains') if self.cached('explains') else self._get_from_api()['explains']
+ return self._get_field('explains')
@with_styles(cssfile='_youdao.css', js=js, need_wrap_css=True, wrap_class='youdao')
def _get_singledict(self, single_dict, lang='eng'):
url = u"http://m.youdao.com/singledict?q={0}&dict={1}&le={2}&more=false".format(
- self.word, single_dict, lang)
+ self.word,
+ single_dict,
+ lang
+ )
try:
result = urllib2.urlopen(url, timeout=5).read()
- return u'