コード例 #1
0
    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()
コード例 #2
0
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
コード例 #3
0
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
コード例 #4
0
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
コード例 #5
0
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
コード例 #6
0
    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()