Python E化-自制有道英文翻译器

Python E化-自制有道英文翻译器

import requests
import json
from tkinter import Tk,Button,Entry,Label,Text,END

class YouDaoFanyi(object):
    def __init__(self):
        pass
    def crawl(self,word):
        url='http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
        #使用post需要一个链接
        data={
    
    'i': word,
              'from': 'AUTO',
              'to': 'AUTO',
              'smartresult': 'dict',
              'client': 'fanyideskweb',
              'doctype': 'json',
              'version': '2.1',
              'keyfrom': 'fanyi.web',
              'action': 'FY_BY_REALTIME',
              'typoResult': 'false'}
        #将需要post的内容,以字典的形式记录在data内。
        r = requests.post(url, data)
        #post需要输入两个参数,一个是刚才的链接,一个是data,返回的是一个Response对象
        answer=json.loads(r.text)
        #print(r.text)
        #你可以自己尝试print一下r.text的内容,然后再阅读下面的代码。
        #result = answer['translateResult'][0][0]['tgt']
        result_list=[]
        for i in range(len(answer['translateResult'][0])):
            result_sub = answer['translateResult'][0][i]['tgt']
            result_list.append(result_sub)
        #print(result_list)
        result=''.join(result_list)
        return result

class JinshanFanyi(object):
    def __init__(self):
        pass
    def translate_iciba(self,myword):
    ##### 金山翻译 #####
        #把请求登录的网址赋值给url。
        url = 'http://fy.iciba.com/ajax.php?a=fy'
        #加请求头,前面有说过加请求头是为了模拟浏览器正常的访问,避免被反爬虫。
        headers = {
    
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36'}
        #把有关登录的参数封装成字典,赋值给data。
        data = {
    
    
        'f': 'auto',
        't': 'auto',
        'w': myword,}
        #用requests.post发起请求,放入参数:请求登录的网址、请求头和登录参数,然后赋值给login_in。
        translate_request = requests.post(url,headers=headers,data=data)
        js_translate=translate_request.json()
        mytranslator_iciba=js_translate['content']['out']
        print('金山翻译:'+mytranslator_iciba)
        return mytranslator_iciba


class Application(object):
    def __init__(self):
        self.window = Tk()
        self.fanyi = YouDaoFanyi()
        self.fanyi_jinshan=JinshanFanyi()

        self.window.title(u'Season翻译器')
        #设置窗口大小和位置
        self.window.geometry('620x580+500+10')
        self.window.minsize(620,580)
        self.window.maxsize(620,580)
        #标题-原文
        self.title_label = Label(self.window,text=u'翻译原文:')
        self.title_label.place(x=10,y=10)
        #创建一个文本框
        self.result_text1 = Text(self.window,background = 'azure')
        # 喜欢什么背景色就在这里面找哦,但是有色差,得多试试:http://www.science.smith.edu/dftwiki/index.php/Color_Charts_for_TKinter
        self.result_text1.place(x = 10,y = 30,width = 580,height = 150)

        #创建一个按钮
        #为按钮添加事件
        self.submit_btn = Button(self.window,text=u'翻译',command=self.submit)
        self.submit_btn.place(x=505,y=185,width=35,height=25)
        self.submit_btn2 = Button(self.window,text=u'清空',command = self.clean)
        self.submit_btn2.place(x=550,y=185,width=35,height=25)
        #翻译结果标题-有道
        self.title_label = Label(self.window,text=u'有道翻译结果:')
        self.title_label.place(x=10,y=200)
        #翻译结果标题-金山
        self.title_label_jinshan = Label(self.window,text=u'金山翻译结果:')
        self.title_label_jinshan.place(x=10,y=380)
        #翻译结果-有道
        self.result_text = Text(self.window,background = 'light cyan',font=('Arial',11))
        self.result_text.place(x = 10,y = 220,width = 580,height = 150)
        #翻译结果-金山
        self.result_text_jinshan = Text(self.window,background = 'light cyan',font=('Arial',11))
        self.result_text_jinshan.place(x = 10,y = 400,width = 580,height =150)
   

    def submit(self):
        #从输入框获取用户输入的值
        content = self.result_text1.get(0.0,END).strip().replace("\n"," ")
        #把这个值传送给服务器进行翻译
        result = self.fanyi.crawl(content).strip()
        #将结果显示在窗口中的文本框中
        self.result_text.delete(0.0,END)
        self.result_text.insert(END,result)

        #把这个值传送给服务器进行翻译
        result_jinshan = self.fanyi_jinshan.translate_iciba(content)
        #将结果显示在窗口中的文本框中
        self.result_text_jinshan.delete(0.0,END)
        self.result_text_jinshan.insert(END,result_jinshan)

    #清空文本域中的内容
    def clean(self):
        self.result_text1.delete(0.0,END)
        self.result_text.delete(0.0,END)
        self.result_text_jinshan.delete(0.0,END)

    def run(self):
        self.window.mainloop()


if __name__=="__main__":
    app = Application()
    app.run()

猜你喜欢

转载自blog.csdn.net/m0_46629123/article/details/109105800