• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Python 制作自动化翻译工具

    妈妈再也不用担心我的英语了。

    一个可能你似曾相识的场景

    阅读内容包含大量英文的 PPT、Word、Excel 或者记事本时,由于英语不熟悉,为了流利地阅读,需要打开浏览器进入谷歌翻译的主界面,然后把英文复制到谷歌翻译的输入框中,最后又把翻译结果复制回 PPT、Word 和 Excel。

    要是一个两个单词还好,要是发现有 100 个单词不认识,就必须复制粘贴 200 次,如此机械性重复性的工作,应该交给程序来做,这就是我设计下面这个自动化翻译工具的初衷。

    提升办公效率的法宝

    如上图,运行程序并保持后台运行,在电脑上的任何一个软件中选择一段文本,并 Ctrl + C 复制到系统剪贴板中,程序就会自动帮助我们完成翻译,并将翻译结果自动复制到系统剪贴版中,只需 Ctrl + V,就完成了翻译结果对原文的替换。

    编码实现

    程序主要分为两部分,第一部分为谷歌翻译爬虫,第二部分就是实现这个将翻译结果自动替换的业务逻辑。

    谷歌翻译爬虫

    通过浏览器 F12 开发者工具,很容易定位到翻译请求的 URL: http://translate.google.cn/translate_a/single?client=tsl=entl=zh-CNhl=zh-CNdt=atdt=bddt=exdt=lddt=mddt=qcadt=rwdt=rmdt=ss dt=tie=UTF-8oe=UTF-8clearbtn=1otf=1pc=1srcrom=0ssel=0tsel=0kc=2

    这个请求接受两个参数,一个就是我们要翻译的字符串 q,另一个是用于用户认证的 tk(token),其中 q 很容易构造,tk 的构造就需要花费一番心力了,需要我们调试 js 代码,这里参考 Github 上大神的轮子: https://github.com/cocoa520/Google_TK

    谷歌翻译爬虫的主要代码如下:

    def translate(tk, content):
        if len(content) > 4891:
            print("翻译的长度超过限制!!!")
            return
    
        param = {'tk': tk, 'q': content}
    
        result = requests.get("""http://translate.google.cn/translate_a/single?client=tsl=en
            tl=zh-CNhl=zh-CNdt=atdt=bddt=exdt=lddt=mddt=qcadt=rwdt=rmdt=ss
            dt=tie=UTF-8oe=UTF-8clearbtn=1otf=1pc=1srcrom=0ssel=0tsel=0kc=2""", params=param)
    
        data = result.json()
        print(data[0][0][0])

    返回结果是 json 形式的,翻译结果保存在结果的第一个元组中。

    Python 操作系统剪贴板

    将读取剪贴板的内容的代码封装成函数如下:

    def getText():#读取剪切板
        # 打开剪贴板
        w.OpenClipboard()
        # 读取剪贴板的内容
        d = w.GetClipboardData(win32con.CF_TEXT)
        # 关闭剪贴板
        w.CloseClipboard()
        try:
            return d.decode('utf-8')
        except:
            return d.decode('gbk')

    返回值 d 是字节类型的,需要解码,中文按 gbk 格式解码,英文按 utf-8 解码。

    类似地,写入剪贴板的代码如下:

    def setText(aString):#写入剪切板
        # 打开剪贴板
        w.OpenClipboard()
        # 清空剪贴板
        w.EmptyClipboard()
        # 写入剪贴板
        w.SetClipboardText(aString)
        # 关闭剪贴板
        w.CloseClipboard()

    实现将翻译结果自动替换原文的逻辑的代码如下:

    while(True):
            # 如果剪贴板正在被占用
            try:
                cs = getText()
            except:
                time.sleep(1)
                cs = getText()
            print('cs',cs)
            if cs and cs != ls:
                print('准备翻译')
                content = getText()
                tk = js.getTk(content)
                res = translate(tk, content)
                setText(res)
                time.sleep(1)
                ls = res

    值得注意的是,系统剪贴板对象是单例模式的,在操作系统范围内只有一个,而且读写剪贴板都是互斥的,在读(写)剪贴板的同时不允许任何对剪贴板的写(读)操作。试想这样一种情景,我们在其他软件中 Ctrl + C 写入剪贴板,而此时我们的程序代码正好执行到读剪贴板那一行,毫无疑问会报错,我的解决办法是使用 try…except 语句延时 1 s再读取,这样可以大大降低读写碰撞的概率,但无疑消耗了程序性能。最好的办法是判断剪贴板对象句柄是否被占用,其实我一直在寻找是否存在判断剪贴板对象句柄是否被占用的 API,但是一直没有找到

    项目地址

    https://github.com/Python3Spiders/GoogleAutoTranslationTool

    以上就是Python 实现自动化翻译和替换的脚本的详细内容,更多关于python 自动化翻译的资料请关注脚本之家其它相关文章!

    您可能感兴趣的文章:
    • python 利用PyAutoGUI快速构建自动化操作脚本
    • python 办公自动化——基于pyqt5和openpyxl统计符合要求的名单
    • python办公自动化之excel的操作
    • 教你利用Selenium+python自动化来解决pip使用异常
    • 十个Python自动化常用操作,即拿即用
    • 如何用 Python 子进程关闭 Excel 自动化中的弹窗
    • python自动化之如何利用allure生成测试报告
    • 教你怎么用Python处理excel实现自动化办公
    • python实现百度文库自动化爬取
    • Python自动化之批量处理工作簿和工作表
    上一篇:教你用Python写一个植物大战僵尸小游戏
    下一篇:python Task在协程调用实例讲解
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Python 制作自动化翻译工具 Python,制作,自动化,翻译,