def get_translate(self, text): text = text.strip() if not text: return data = { "keyfrom" : "deskdict.linux", "q" : text.encode("utf-8"), "doctype" : "xml", "xmlVersion" : 8.2, "client" : "deskdict", "id" : "cee84504d9984f1b2", "vendor": "deskdict.linux", "in" : "YoudaoDict", "appVer" : "5.4.46.5554", "appZengqiang" : 0, "le" : "eng", "LTH" : 40} self.clear_translate() try: ret = requests.get("http://dict.youdao.com/search", params=data).text ret = ret.encode('utf-8') pq = PyQuery(ret, parser="xml") test_data = {"q": text, "type": 1, "pos": -1} test_ret = json.loads(requests.get("http://dict.youdao.com/jsonresult", params=test_data).text) self.translate_info.text = text self.translate_info.trans = '\n'.join([PyQuery(l)("i").text() for l in pq('trs l')]) self.translate_info.phonetic = test_ret.get("ussm", "") self.translate_info.webtrans = self.wrap_web_trans(pq) self.translate_info.lang = test_ret.get("lang", "") except: with open_offline_dict() as obj: ret = obj.query(text) if ret: self.translate_info.text = text self.translate_info.trans = ret[1].replace("\\n", "\n") self.translate_info.phonetic = ret[0][1:-1] self.translate_info.webtrans = "抱歉,从网络获取结果失败,请检测网络重试" self.translate_info.lang = "eng" self.translate_info.voices = get_voice_simple(text) self.translateFinished.emit()
def get_main_query(text): text = text.strip() with open_offline_dict() as obj: ret = obj.query(text) if ret: trans = ret[1].split("\\n") phonetic = ret[0][1:-1] dict_type = ret[2] return {"text": text, "trans": trans, "sm": phonetic, "dict_type": dict_type} else: return None
def get_main_query(text): text = text.strip() with open_offline_dict() as obj: ret = obj.query(text) if ret: trans = ret[1].split("\\n") phonetic = ret[0][1:-1] dict_type = ret[2] return { "text": text, "trans": trans, "sm": phonetic, "dict_type": dict_type } else: return None
def get_suggest(text, num=10): text = text.strip() data = { "type": "DESKDICT", "num": num, "ver": 2.0, "le": "eng", "q": text, "client": const.client } results = [] try: ret = requests.get("http://dict.youdao.com/suggest", params=data).text doc = xml_parse(ret) _data = doc.get('suggest') if _data: data = _data['items']['item'] else: data = [] if isinstance(data, dict): title = data.get("title") explain = data.get("explain") if title != None and explain != None: results.append({"title": title, "explain": explain}) elif isinstance(data, list): for item in data: title = item.get("title") explain = item.get("explain") if title != None and explain != None: results.append({"title": title, "explain": explain}) else: print("Unknown data type, debug here:", type(data)) except Exception as e: print("[Error] get suggest from network:", e) traceback.print_exc(file=sys.stdout) if not results: with open_offline_dict() as obj: words = obj.suggest(text) for word in words: ret = obj.query(word) if ret: explain = ret[1].replace("\\n", " ") results.append({"title": word, "explain": explain}) if len(results) > num: results = results[:num] return results
def get_suggest(text, num=10): text = text.strip() data = { "type" : "DESKDICT", "num" : num, "ver" : 2.0, "le": "eng", "q" : text } results = [] try: ret = requests.get("http://dict.youdao.com/suggest", params=data).text doc = xml_parse(ret) _data = doc.get('suggest') if _data: data = _data['items']['item'] else: data = [] if isinstance(data, dict): title = data.get("title") explain = data.get("explain") if title != None and explain != None: results.append({"title": title, "explain": explain}) elif isinstance(data, list): for item in data: title = item.get("title") explain = item.get("explain") if title != None and explain != None: results.append({"title": title, "explain": explain}) else: print("Unknown data type, debug here:", type(data)) except Exception as e: print("[Error] get suggest from network:", e) traceback.print_exc(file=sys.stdout) if not results: with open_offline_dict() as obj: words = obj.suggest(text) for word in words: ret = obj.query(word) if ret: explain = ret[1].replace("\\n", " ") results.append({"title": word, "explain": explain}) if len(results) > num: results = results[:num] return results
def get_translate(self, text): # with open('/home/ubuntu/Desktop/translate.txt', 'a') as f: # f.write('\ntext :'+ text + '\n' + 'translate: ' + self.translate_info.webtrans) # f.close() # text = text.strip() # if not text: # return # data = { "keyfrom": "deskdict.linux", "q": text.encode("utf-8"), "doctype": "xml", "xmlVersion": 8.2, "client": const.client, "id": "cee84504d9984f1b2", "vendor": "deskdict.linux", "in": "YoudaoDict", "appVer": "5.4.46.5554", "appZengqiang": 0, "le": "eng", "LTH": 40 } self.clear_translate() try: ret = requests.get("http://dict.youdao.com/search", params=data).text ret = ret.encode('utf-8') pq = PyQuery(ret, parser="xml") test_data = { "q": text, "type": 1, "pos": -1, "client": const.client } test_ret = json.loads( requests.get("http://dict.youdao.com/jsonresult", params=test_data).text) self.translate_info.text = text text = str(text).replace('\n', ' ') from dae.utils import get_conf conf = get_conf() self.translate_info.webtrans = "谷歌翻译: \n" if (str(conf['useTranslateModule']).upper() == 'TRUE'): self.translate_info.webtrans = self.translate_info.webtrans + useTranslateComponent( text) + "\n" # if self.translate_info.webtrans: self.translate_info.webtrans = self.translate_info.webtrans + "有道:\n" self.translate_info.trans = '\n'.join( [PyQuery(l)("i").text() for l in pq('trs l')]) self.translate_info.phonetic = test_ret.get("ussm", "") self.translate_info.webtrans = self.translate_info.webtrans + self.wrap_web_trans( pq) except: with open_offline_dict() as obj: ret = obj.query(text) if ret: self.translate_info.text = text self.translate_info.trans = ret[1].replace("\\n", "\n") self.translate_info.phonetic = ret[0][1:-1] self.translate_info.webtrans = "抱歉,从网络获取结果失败,请检测网络重试" self.translate_info.lang = "eng" self.translate_info.voices = get_voice_simple(text) if not self.translate_info.webtrans: self.translate_info.webtrans = "查询失败" # time.sleep(1) if self.translate_info.webtrans: self.translateFinished.emit()