diff --git a/addons21/fastwq/service/dict/oalecd9_mdx.py b/addons21/fastwq/service/dict/oalecd9_mdx.py
index 2287fea..b8b534a 100644
--- a/addons21/fastwq/service/dict/oalecd9_mdx.py
+++ b/addons21/fastwq/service/dict/oalecd9_mdx.py
@@ -29,7 +29,7 @@ class oalecd9_mdx(MdxService):
service = service_pool.get(clazz.__unique__)
title = service.builder._title if service and service.support else u''
service_pool.put(service)
- if title.startswith(u'牛津高阶'):
+ if title.startswith(u'牛津高阶英汉双解词典'):
dict_path = service.dict_path
break
super(oalecd9_mdx, self).__init__(dict_path)
@@ -41,9 +41,19 @@ class oalecd9_mdx(MdxService):
def _fld_voice(self, html, voice):
"""获取发音字段"""
for regexp in LANG_TO_REGEXPS[voice]:
- match = regexp.search(html)
+ original_word = self.word
+ if html.startswith('@@@LINK='):
+ self.word = html[8:]
+ html = self.get_html()
+ match = regexp.findall(html)
if match:
- val = '/' + match.group(1)
+ selected_voice = match[0]
+ for voice in match:
+ if original_word in voice:
+ selected_voice = voice
+ break
+ self.word = original_word
+ val = '/' + selected_voice
name = get_hex_name('mdx-'+self.unique.lower(), val, 'mp3')
name = self.save_file(val, name)
if name:
@@ -95,28 +105,35 @@ class oalecd9_mdx(MdxService):
us_sound = None
en_text = cn_text = ''
for sound in sounds:
- if sound.find('audio-gbs-liju'):
+ if sound.find(['audio-gbs-liju','audio-brs-liju']):
br_sound = sound['href'][7:]
- elif sound.find('audio-uss-liju'):
+ elif sound.find(['audio-uss-liju','audio-ams-liju']):
us_sound = sound['href'][7:]
- en_text = element.x['wd']
- cn_text = element.chn.contents[1]
+ try:
+ en_text = element.x['wd']
+ cn_text = element.x.chn.contents[1]
+ except:
+ continue
if us_sound: # I mainly use us_sound
maps.append([br_sound, us_sound,en_text,cn_text])
my_str = ''
range_arr = range_arr if range_arr else [random.randrange(0, len(maps) - 1, 1)]
- for i, e in enumerate(maps):
- if i in range_arr:
- br_sound = e[0]
- us_sound = e[1]
- en_text = e[2]
- cn_text = e[3]
- us_mp3 = self._fld_audio(us_sound)
- # if br_sound != 'None':
- # br_mp3 = self._fld_audio(br_sound)
- # please modify the code here to get br_mp3
- # my_str = my_str + br_mp3 + ' ' + en_text + cn_text + '
'
- my_str = my_str + us_mp3 + ' ' + en_text + cn_text + '
'
+ if maps:
+ for i, e in enumerate(maps):
+ if i in range_arr:
+ br_sound = e[0]
+ us_sound = e[1]
+ en_text = e[2]
+ cn_text = e[3]
+ us_mp3 = self._fld_audio(us_sound)
+ if br_sound != 'None':
+ br_mp3 = self._fld_audio(br_sound)
+ else:
+ br_mp3 = ''
+ # please modify the code here to get br_mp3
+ # my_str = my_str + br_mp3 + ' ' + en_text + cn_text + '
'
+ # my_str = my_str + us_mp3 + en_text + cn_text + '
'
+ my_str = my_str + br_mp3 + us_mp3 + en_text + cn_text + '
'
return my_str
return ''