From 63be2a8d84505483b2e2543edf9a7fbed46872e7 Mon Sep 17 00:00:00 2001 From: Javan Zhu Date: Sat, 6 Apr 2019 10:57:40 +0800 Subject: [PATCH 1/3] Fix fail to download audio file when tha query word like 'Spotify'(First character is capital) from longman. --- addons21/fastwq/service/dict/longman.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/addons21/fastwq/service/dict/longman.py b/addons21/fastwq/service/dict/longman.py index 511b737..ef0a7b0 100644 --- a/addons21/fastwq/service/dict/longman.py +++ b/addons21/fastwq/service/dict/longman.py @@ -1,4 +1,4 @@ -#-*- coding:utf-8 -*- +# -*- coding:utf-8 -*- import os import re @@ -6,7 +6,6 @@ from bs4 import Tag from ..base import * from ...utils.misc import format_multi_query_word - longman_download_mp3 = True longman_download_img = True @@ -30,8 +29,8 @@ class Longman(WebService): assert isinstance(dic_link, Tag) # remove sound tag - am_s_tag = dic_link.find('span', title='Play American pronunciation of {}'.format(self.word)) - br_s_tag = dic_link.find('span', title='Play British pronunciation of {}'.format(self.word)) + am_s_tag = dic_link.find('span', {'class': 'speaker amefile fa fa-volume-up hideOnAmp'}) + br_s_tag = dic_link.find('span', {'class': 'speaker brefile fa fa-volume-up hideOnAmp'}) if am_s_tag: word_info['am_mp3'] = am_s_tag.get('data-src-mp3', u'') am_s_tag.decompose() @@ -91,7 +90,7 @@ class Longman(WebService): word_info['pos'] = POS word_info['inflections'] = Inflections head_finded = True - #self.cache_this(word_info) + # self.cache_this(word_info) if head_tag: head_tag.decompose() @@ -118,7 +117,7 @@ class Longman(WebService): @export('PHON') def fld_phonetic(self): return self._get_field('phonetic') - + def _fld_mp3(self, fld): audio_url = self._get_field(fld) if longman_download_mp3 and audio_url: From b7610192a9ed225f20f3a114f7b569abb2427e8a Mon Sep 17 00:00:00 2001 From: Javan Zhu Date: Sat, 6 Apr 2019 11:04:58 +0800 Subject: [PATCH 2/3] Add no prefix ame phonetic and no prefix bre phonetic fields to oxford_learning dictionary. --- addons21/fastwq/lang.py | 2 + .../fastwq/service/dict/oxford_learning.py | 66 ++++++++++++++----- 2 files changed, 51 insertions(+), 17 deletions(-) diff --git a/addons21/fastwq/lang.py b/addons21/fastwq/lang.py index f8e2df5..8a878d9 100644 --- a/addons21/fastwq/lang.py +++ b/addons21/fastwq/lang.py @@ -100,7 +100,9 @@ _arr = [ ['DEF', u'释义', u'Definition'], ['PHON', u'音标', u'Phonetic Symbols'], ['BRE_PHON', u'英式音标', u'Phonetic Symbols (UK)'], + ['BRE_PHON_NO_PREFIX', u'英式音标无前缀', u'Phonetic Symbols (UK) no prefix'], ['AME_PHON', u'美式音标', u'Phonetic Symbols (US)'], + ['AME_PHON_NO_PREFIX', u'美式音标无前缀', u'Phonetic Symbols (US) no prefix'], ['IMAGE', u'图片', u'Images'], ] diff --git a/addons21/fastwq/service/dict/oxford_learning.py b/addons21/fastwq/service/dict/oxford_learning.py index 321105b..8c2a444 100644 --- a/addons21/fastwq/service/dict/oxford_learning.py +++ b/addons21/fastwq/service/dict/oxford_learning.py @@ -1,5 +1,5 @@ # coding=utf-8 -#from warnings import filterwarnings +# from warnings import filterwarnings from bs4 import Tag from ..base import * @@ -14,7 +14,7 @@ import sys @register([u'牛津学习词典', u'Oxford Learner']) class OxfordLearning(WebService): - + def __init__(self): super(OxfordLearning, self).__init__() @@ -42,9 +42,11 @@ class OxfordLearning(WebService): if web_word: self.cache_this( { - 'phonetic': '{} {}'.format(web_word.wd_phon_bre, web_word.wd_phon_nam), + 'phonetic': '{} {}'.format(web_word.wd_phon_bre, web_word.wd_phon_ame), 'phon_bre': '{}'.format(web_word.wd_phon_bre), - 'phon_ame': '{}'.format(web_word.wd_phon_nam), + 'phon_ame': '{}'.format(web_word.wd_phon_ame), + 'phon_bre_no_prefix': '{}'.format(web_word.wd_phon_bre_no_prefix), + 'phon_ame_no_prefix': '{}'.format(web_word.wd_phon_ame_no_prefix), 'pos': web_word.wd_pos, 'img_full': web_word.wd_image_full_url, 'img_thumb': web_word.wd_image_thumb_url, @@ -81,6 +83,14 @@ class OxfordLearning(WebService): def fld_phonetic_uk(self): return self._get_single_dict('phon_bre') + @export('BRE_PHON_NO_PREFIX') + def fld_phonetic_us_no_prefix(self): + return self._get_single_dict('phon_bre_no_prefix') + + @export('AME_PHON_NO_PREFIX') + def fld_phonetic_uk_no_prefix(self): + return self._get_single_dict('phon_ame_no_prefix') + @export([u'词性', u'POS']) def fld_pos(self): return self._get_single_dict('pos') @@ -211,24 +221,35 @@ class OxfordLearningDictWord: # endregion + def _pull_bre_phon(self): + try: + _tag_phn = self.tag_phon_bre.find('span', self._cls_dic('phon')).get_text().replace('/', '').replace('BrE', '') + phon = '/{}/'.format(_tag_phn.text if isinstance(_tag_phn, Tag) else _tag_phn) + except: + phon = '' + return phon + + @property + def wd_phon_bre_no_prefix(self): + """ + + :return: phon + """ + return self._pull_bre_phon() + @property def wd_phon_bre(self): """ :return: pre_fix, phon """ - try: - _tag_phn = self.tag_phon_bre.find('span', self._cls_dic('phon')).contents[3] - phon = '/{}/'.format(_tag_phn.text if isinstance(_tag_phn, Tag) else _tag_phn) - except: - phon = '' try: prefix = self.tag_phon_bre.find('span', self._cls_dic('prefix')).string except: prefix = '' return "{} {}".format( prefix, - phon + self._pull_bre_phon() ) @property @@ -238,24 +259,35 @@ class OxfordLearningDictWord: except: return '' + def _pull_ame_phon(self): + try: + _tag_phn = self.tag_phon_nam.find('span', self._cls_dic('phon')).get_text().replace('/', '').replace('NAmE', '') + phon = '/{}/'.format(_tag_phn.text if isinstance(_tag_phn, Tag) else _tag_phn) + except: + phon = '' + return phon + @property - def wd_phon_nam(self): + def wd_phon_ame_no_prefix(self): + """ + + :return: phon + """ + return self._pull_ame_phon() + + @property + def wd_phon_ame(self): """ :return: pre_fix, phon """ - try: - _tag_phn = self.tag_phon_nam.find('span', self._cls_dic('phon')).contents[3] - phon = '/{}/'.format(_tag_phn.text if isinstance(_tag_phn, Tag) else _tag_phn) - except: - phon = '' try: prefix = self.tag_phon_nam.find('span', self._cls_dic('prefix')).string except: prefix = '' return "{} {}".format( prefix, - phon + self._pull_ame_phon() ) @property From 954811f549f1f7c582b8a18ff625bbb9bbe6ac82 Mon Sep 17 00:00:00 2001 From: Javan Zhu Date: Sat, 6 Apr 2019 11:07:17 +0800 Subject: [PATCH 3/3] ignore .idea directory. --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index 664a1a7..5980bd2 100644 --- a/.gitignore +++ b/.gitignore @@ -116,3 +116,6 @@ User*/ release*.zip README.txt .fastwq_*_ankihub.json + +# idea ide +/.idea