文章目录
- 背景
- 代码
- 10.12修改:
- 预览如下:
- 10.24修改:
- 执行
- 10.24修改2:
背景
博主在读研究生,需要看大量英文文献, 无奈英语太渣,硬着头皮看容易走神,使用翻译软件或者谷歌翻译还会遇到一个严重的问题:
那就是在很多论文上复制内容,其中每一行都会带一个回车符,翻译时还得一个一个删,还得频繁地 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"
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: ")
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格式
预览如下:
ps:这是在vscode上的预览
插件名:Markdown Preview Enhanced
10.24修改:
增加写入文件功能,增加了输入与上次翻译结果的判断,翻译结果可以直接写入剪切板,复制完直接粘贴即可,不用看命令行。
执行
python ./gtl.py [语言(例如en)] [文件名(后面自动加.txt)]
例如:
python ./gtl.py en mytxt
然后就可以不用管它了^_^
10.24修改2:
由于我翻译的过于频繁,返回429了。。。。。
这次更改了异常处理(就是出错了瞎打印)
emmmmmmmmmm。。。。。。。