一. 问题:
在写调用谷歌翻译接口的脚本时,老是报错,我使用的的是googletrans这个模块中Translator的translate方法,程序运行以后会报访问超时错误:
Traceback (most recent call last): File "E:/PycharmProjects/MyProject/Translate/translate_test.py", line 3, in <module> result=translator.translate('"D:\python3\lib\site-packages\googletrans\client.py", line 182, in translate data = self._translate(text, dest, src, kwargs) File "D:\python3\lib\site-packages\googletrans\client.py", line 78, in _translate token = self.token_acquirer.do(text) File "D:\python3\lib\site-packages\googletrans\gtoken.py", line 194, in do self._update() File "D:\python3\lib\site-packages\googletrans\gtoken.py", line 54, in _update r = self.client.get(self.host) File "D:\python3\lib\site-packages\httpx\_client.py", line 763, in get timeout=timeout, File "D:\python3\lib\site-packages\httpx\_client.py", line 601, in request request, auth=auth, allow_redirects=allow_redirects, timeout=timeout, File "D:\python3\lib\site-packages\httpx\_client.py", line 621, in send request, auth=auth, timeout=timeout, allow_redirects=allow_redirects, File "D:\python3\lib\site-packages\httpx\_client.py", line 648, in send_handling_redirects request, auth=auth, timeout=timeout, history=history File "D:\python3\lib\site-packages\httpx\_client.py", line 684, in send_handling_auth response = self.send_single_request(request, timeout) File "D:\python3\lib\site-packages\httpx\_client.py", line 719, in send_single_request timeout=timeout.as_dict(), File "D:\python3\lib\site-packages\httpcore\_sync\connection_pool.py", line 153, in request method, url, headers=headers, stream=stream, timeout=timeout File "D:\python3\lib\site-packages\httpcore\_sync\connection.py", line 65, in request self.socket = self._open_socket(timeout) File "D:\python3\lib\site-packages\httpcore\_sync\connection.py", line 86, in _open_socket hostname, port, ssl_context, timeout File "D:\python3\lib\site-packages\httpcore\_backends\sync.py", line 139, in open_tcp_stream return SyncSocketStream(sock=sock) File "D:\python3\lib\contextlib.py", line 130, in __exit__ self.gen.throw(type, value, traceback) File "D:\python3\lib\site-packages\httpcore\_exceptions.py", line 12, in map_exceptions raise to_exc(exc) from None httpcore._exceptions.ConnectTimeout: timed out
二. 解决方法:
1.寻找解决方法
经过多方资料查找,最后才知道google翻译对接口进行了更新,之前用的googletrans已经不能用了。但是网上大神已经开发出了新的方法
https://github.com/lushan88a/google_trans_new
在此道一声感谢!
2.使用解决方法
在cmd中输入以下指令即可。
pip install google_trans_new
三. 代码(优化)
from google_trans_new import google_translator from multiprocessing.dummy import Pool as ThreadPool import time import re """ 此版本调用最新版google_trans_new 使用多线程访问谷歌翻译接口 能够翻译len(text)>5000的文本 """ class Translate(object): def __init__(self): #初始化翻译文本路径以及翻译目标语言 self.txt_file='./test.txt' self.aim_language='zh-CN' #读入要翻译的文本文件 def read_txt(self): with open(self.txt_file, 'r',encoding='utf-8')as f: txt = f.readlines() return txt #进行文本处理,此为优化 def cut_text(self,text): #如果只是一行,就切割成5000字一次来翻译 if len(text)==1: str_text = ''.join(text).strip() #筛选是一行但是文本长度大于5000 if len(str_text)>5000: #使用正则表达式切割超长文本为5000一段的短文本 result = re.findall('.{5000}', str_text) return result else: #如果文本为一行但是这一行文本长度小于5000,则直接返回text return text """ 如果不止一行,加以判断 (1)每行字符数都小于5000 (2)有的行字符数小于5000,有的行字符数大于5000 """ else: result = [] for line in text: #第(1)种情况 if len(line)<5000: result.append(line) else: # 第(2)种情况,切割以后,追加到列表中 cut_str=re.findall('.{5000}', line) result.extend(cut_str) return result def translate(self,text): if text: aim_lang = self.aim_language try: t = google_translator(timeout=10) translate_text = t.translate(text, aim_lang) print(translate_text) return translate_text except Exception as e: print(e) def main(): time1=time.time() #开启八条线程 pool = ThreadPool(8) trans = Translate() txt = trans.read_txt() texts = trans.cut_text(txt) try: pool.map(trans.translate, texts) except Exception as e: raise e pool.close() pool.join() time2 = time.time() print("一共翻译了 {} 个句子,消耗了 {:.2f} s".format(len(texts),time2 - time1)) if __name__ == "__main__" : main()
测试文本我放在了:http://xiazai.jb51.net/202012/yuanma/test.rar
可自行下载。
四. 运行结果
五. 总结
本篇首先解决了调用googletrans模块的报错问题,然后使用新的google翻译模块编写了代码,并且解决了我这篇文章中翻译文本长度不能大于5000的问题。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
- 第五街的士高《印度激情版》3CD [WAV+CUE][2.4G]
- 三国志8重制版哪个武将智力高 三国志8重制版智力武将排行一览
- 三国志8重制版哪个武将好 三国志8重制版武将排行一览
- 三国志8重制版武将图像怎么保存 三国志8重制版武将图像设置方法
- 何方.1990-我不是那种人【林杰唱片】【WAV+CUE】
- 张惠妹.1999-妹力新世纪2CD【丰华】【WAV+CUE】
- 邓丽欣.2006-FANTASY【金牌大风】【WAV+CUE】
- 饭制《黑神话》蜘蛛四妹手办
- 《燕云十六声》回应跑路:年内公测版本完成95%
- 网友发现国内版《双城之战》第二季有删减:亲亲环节没了!
- 邓丽君2024-《漫步人生路》头版限量编号MQA-UHQCD[WAV+CUE]
- SergeProkofievplaysProkofiev[Dutton][FLAC+CUE]
- 永恒英文金曲精选4《TheBestOfEverlastingFavouritesVol.4》[WAV+CUE]
- 群星《国风超有戏 第9期》[320K/MP3][13.63MB]
- 群星《国风超有戏 第9期》[FLAC/分轨][72.56MB]