(PDF翻译助手)Python通过访问剪切板的方式使用谷歌翻译(pyperclip,requests)

文章目录

    • 背景
    • 代码
    • 10.12修改:
      • 预览如下:
    • 10.24修改:
      • 执行
    • 10.24修改2:

背景

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

使用姿势如下图:
(PDF翻译助手)Python通过访问剪切板的方式使用谷歌翻译(pyperclip,requests)_第1张图片

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

代码

全部代码如下

# 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"
url_2 = 'https://translate.google.cn/#view=home&op=translate&sl={}&tl={}&text={}&ie=UTF-8&oe=UTF-8'
url_3 = 'https://translate.google.cn/translate_a/single?client=webapp&sl={}&tl={}&hl=zh-CN&dt=at&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss&dt=t&otf=2&ssel=0&tsel=0&kc=1&tk=948402.577838&q={}'
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')

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)
            # print(r.json())
            # print(r.text)
            
            print('状态码:'+str(r.status_code))
            if r.status_code == 429:
                print('你太快了')
            else:
                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(im) <= 20 and len(translation) >= 2:
                    with open('vBook.md', 'a+',encoding='utf-8') as f:
                        f.write('$\color{green}{' + im.lower()+'}$|' + translation + '|' + time.ctime() + '\n')                  
                    with open('vBook.txt', 'a+',) as f:
                        f.write(  '['+time.ctime() + ']    '+ im.lower()+ ':   ' + translation  + '\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("*******************************************")

        except:
            print("一定是你错了!")
        translation = ""
        
    time.sleep(0.5)


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

10.12修改:

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

预览如下:

(PDF翻译助手)Python通过访问剪切板的方式使用谷歌翻译(pyperclip,requests)_第2张图片

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

10.24修改:

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

执行

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

例如:

python ./gtl.py en mytxt

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

10.24修改2:

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

(PDF翻译助手)Python通过访问剪切板的方式使用谷歌翻译(pyperclip,requests)_第3张图片

emmmmmmmmmm。。。。。。。

你可能感兴趣的:(Python,Python小程序,pyperclip,requests,谷歌翻译)