python制作一个小型翻译软件

tech2023-06-24  119

from urllib import parse,request import requests,re,execjs,json,time #英语查词翻译 class Tencent(): def __init__(self): self.api_url = 'https://fanyi.qq.com/api/translate' self.headers = { 'Cookie': 'fy_guid=605ead81-f210-47eb-bd80-ac6ae5e7a2d8; ' 'qtv=ed286a053ae88763; ' 'qtk=wfMmjh3k/7Sr2xVNg/LtITgPRlnvGWBzP9a4FN0dn9PE7L5jDYiYJnW03MJLRUGHEFNCRhTfrp/V+wUj0dun1KkKNUUmS86A/wGVf6ydzhwboelTOs0hfHuF0ndtSoX+N3486tUMlm62VU4i856mqw==; ', 'Host': 'fanyi.qq.com', 'Origin': 'https://fanyi.qq.com', 'Referer': 'https://fanyi.qq.com/', 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, ' 'like Gecko) Chrome/73.0.3683.86 Safari/537.36', } self.fromlang = 'auto' self.text='' self.tolang = 'en' # 设置默认为英语 self.sessionUuid = str(int(time.time() * 1000)) self.fy_guid, self.qtv, self.qtk = self.get_qtv_qtk() self.headers['Cookie'] = self.headers['Cookie'].replace( '605ead81-f210-47eb-bd80-ac6ae5e7a2d8', self.fy_guid) self.headers['Cookie'] = self.headers['Cookie'].replace( 'ed286a053ae88763', self.qtv) self.headers['Cookie'] = self.headers['Cookie'].replace( 'wfMmjh3k/7Sr2xVNg/LtITgPRlnvGWBzP9a4FN0dn9PE7L5jDYiYJnW03MJLRUGHEFNCRhTfrp/V+wUj0dun1KkKNUUmS86A/wGVf6ydzhwboelTOs0hfHuF0ndtSoX+N3486tUMlm62VU4i856mqw==', self.qtk) def get_filter(self,text): if isinstance(text, list): text = ''.join(text) text = str(text) text = text.strip() filter_list = [ '\r', '\n', '', '\u3000', '\xa0', '\u2002', '<br>', '<br/>', ' ', ' ', '&nbsp;', '>>', '&quot;', '展开全部', ' ' ] for fl in filter_list: text = text.replace(fl, '') return text def get_qtv_qtk(self): api_url = 'https://fanyi.qq.com/' headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, ' 'like Gecko) Chrome/73.0.3683.86 Safari/537.36', } res = requests.get(api_url, headers=headers) data = res.text fy_guid = res.cookies.get('fy_guid') reg = re.compile(r'var qtv = "(.*?)"') qtv = reg.search(data).group(1) reg = re.compile(r'var qtk = "(.*?)"') qtk = reg.search(data).group(1) return fy_guid, qtv, qtk def getHtml(self,url,headers,data): try: html= requests.post(url=url,data= data,headers=headers) #print(html.text) datas = html.json()['translate']['records'] if html!=None and datas != None : # 以文本的形式打印结果 trans_result = ''.join([data['targetText'] for data in datas]) return trans_result except Exception: return None def translate(self,text): data = { 'source': self.fromlang, 'target': self.tolang, 'sourceText': text, 'qtv': self.qtv, 'qtk': self.qtk, 'sessionUuid': self.sessionUuid, } try: result = self.getHtml(self.api_url,self.headers,data) return result except: return '程序出现了一点小问题,无法翻译' class English(): def __init__(self): self.search() #查询单词 def search(self): baseurl = "https://fanyi.baidu.com/sug" while True: flag = 0 print("请输入:") content = input() if content == '': break for char in content: if(re.search(r"\W",char)): result = Tencent().translate(content) flag = 1 break elif(len(content)>3): result = Tencent().translate(content) flag = 1 break if(flag==0): # 我们需要传送过去的数据 datas = { 'kw': content } # 对数据进行编码 data = parse.urlencode(datas).encode() # 写http头部,至少需要Content-Length headers = { # 此处为编码后的长度 'Content-Length': len(data), } # 将数据传送 req = request.Request(url=baseurl, data=data, headers=headers) res = request.urlopen(req) json_data = res.read() json_data = json_data.decode() json_data = json.loads(json_data) # data里面是一个list data_list = json_data.get('data') if(data_list): item = data_list[0] result = item['k']+' --- '+item['v'] else: result = Tencent().translate(content) print('查询结果:') print(result) output = '' for char in result: if(u'\u4e00' <= char and char <= u'\u9fff'): output = output + '**' else: output = output + '*' print(output) if __name__ == '__main__': English()
最新回复(0)