python实现谷歌翻译pyperclip,request,google translate)

背景

博主在读研究生,需要看大量英文文献, 无奈英语太渣,硬着头皮看容易走神,使用翻译软件或者谷歌翻译还会遇到一个严重的问题:
那就是在很多论文上复制内容,其中每一行都会带一个回车符,翻译时还得一个一个删,还得频繁地 Ctrl-C->鼠标->Ctrl->V 操作(可想而知我有多懒).
突然间想到大学毕业论文降重时写过一个出口转内销的Python脚本(中文->外文->中文),稍加改变即可实现所需功能(太特么聪明了)

使用姿势如下图:
这是一张图

右边复制,左边即可显示结果

代码

全部代码如下

# coding=utf-8
import requests
import pyperclip
import time
import sys
import os
url = "https://translate.googleapis.com/translate_a/single?client=gtx&sl={}&tl={}&dt=t&q={}&ie=UTF-8&oe=UTF-8"
try:
    la = sys.argv[1]
except:
    print("*******************************************")
    print("剪切板翻译小程序")
    print("Author: ColdCurlyFu")
    print("Blog: https://blog.csdn.net/weixin_43480922/article/details/101625868")
    print("*******************************************\n\n")
    print("英语:en")
    print("中文(繁体):zh-TW")
    print("法语:fr")
    print("俄语:ru")
    print("日语:ja")
    print("越南语:vi")
    print("波兰语:pl")
    print("德语:de")
    print("韩语:ko")
    print("其他自己查:http://board.locoy.com/?post=94")
    print("*******************************************")
    la = input("输入需要转换的语言(例如:en):")
    print("*******************************************")


f_name = ''
try:
    f_name = sys.argv[2]
    with open(f_name+'.txt', 'a+', encoding='utf-8')as f:
        pass
except:
    if input("是否写进文档?")==('y'or'yes'or'Y'or'YES'or''):
        f_name = input("输入文件名(默认后加.txt):")
        with open(f_name+'.txt', 'a+', encoding='utf-8')as f:
            pass

path_dirs = os.listdir()
if 'vBook.md' not in path_dirs:
    with open('vBook.md', 'a+',encoding='utf-8') as f:
        f.write(' Vacb | 释义 |Time\n')
        f.write(' :-:|:-:||:-:\n')
if 'history.md' not in path_dirs:
    with open('history.md', 'a+',encoding='utf-8') as f:
        pass

old_text = ""
text = ""
translation = ""
while True:
    text = pyperclip.paste()
    if old_text != text and translation != text:
        # print(list(text))
        iput = ''
        iput = text.replace('\r\n', ' ')
        im = ''
        im = iput.replace('\n',' ')
        old_text = text
        full_url = url.format( la, "zh-CN", im)
        try:
            r = requests.get(full_url)
			
        except:
            print("一定是你错了!")
        translation = ""
        if r.json()[0] != None:
            for item in r.json()[0]:
                if item[0] != None:
                    try:
                        translation+=item[0].replace('\r', '')
                    except:
                        pass
        if len(translation) >= 2:
            if len(im) <= 20:
                with open('vBook.md', 'a+',encoding='utf-8') as f:
                    #<font Size=5 face="Arial Rounded MT" color=green>section</font>|<font Size=5 face="华文行楷" color=black>不分</font>|<font Size=4 face="Arial Rounded MT" color=gray>2019/11/10</font> 
                    f.write('<font Size=5 face="Arial Rounded MT" color=green>' + im.lower()+'</font>|<font Size=5 face="华文行楷" color=black>' + translation + '</font>|<font Size=4 face="Arial Rounded MT" color=gray>' + time.strftime('%Y/%m/%d') + '</font>\n')                  
                with open('vBook.txt', 'a+',) as f:
                    f.write(  '['+time.strftime('%Y-%m-%d') + ']    '+ im.lower()+ ':   ' + translation  + '\n')			
            with open('history.md', 'a+',encoding='utf-8') as f:
                f.write('<div style="text-align:justify;word-break:break-all;"><font face="华文隶书" Size=5 color=green>&ensp;&ensp;&ensp;&ensp;' + im+'</font></div>\n\n')
                f.write('<div style="text-align:justify;word-break:break-all;"><font Size=5 face="华文行楷" color=black>&ensp;&ensp;&ensp;&ensp;' + translation + '</font></div>\n\n')
                f.write('<div align=right><font Size=4 face="Arial Rounded MT" color=gray>' + time.strftime('%Y/%m/%d %H:%M') + '</font></div>\n\n')
        print(translation)
        pyperclip.copy(translation)
        if f_name:
            with open(f_name+'.txt', 'a+', encoding='utf-8')as f:
                f.write(translation + '\n')
        print("*******************************************")
        print("已复制到剪切板,直接粘贴即可(当前语言:"+la+")")
        print("*******************************************")

    time.sleep(0.3)


ps: 代码会删除复制文本中所有的’\r’和’\n’,请按句子或者按段落翻译,不要整篇翻译

10.12修改:

增加单词本功能,把复制的长度小于20写到文件中,输出文件为Markdown格式

预览如下:

这又是一张图

ps:这是在vscode上的预览
插件名:Markdown Preview Enhanced

10.24修改:

增加写入文件功能,增加了输入与上次翻译结果的判断,翻译结果可以直接写入剪切板,复制完直接粘贴即可,不用看命令行。

执行

python ./gtl.py [语言(例如en)] [文件名(后面自动加.txt)] 

例如:

python ./gtl.py en mytxt

然后就可以不用管它了^_^

10.24修改2:

由于我翻译的过于频繁,返回429了。。。。。
这次更改了异常处理(就是出错了瞎打印)

在这里插入图片描述
一个小时后能用了
所以…
不要太快。。。。。。
emmmmmmmmmm。。。。。。。

12.2修改:

功能增加,输出到history.md中,有英汉对照,还有时间戳,字体可自行调整和安装

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值