Python:谷歌翻译20次的程序如何实现?

Python:谷歌翻译20次的程序如何实现?
作者:橙汁

【梗的解释】
“ 谷歌翻译20次 ”就是多次利用谷歌翻译(Google Translate)将原本正常的名场面对话翻译成语言逻辑紊乱、特别搞笑的对话。
比如:这个视频,利用谷歌翻译将赛尔号“魔灵王之墓”的剧情制作成非常搞笑的对话。

【翻译实现】
除了使用人工手动往复翻译的方法,还可以使用编程语言进行翻译。比如,本文将展示如何使用Python实现这一过程。
① 下载并安装对应系统的Python3环境。
Python官网: https://www.python.org
② 安装googletrans模块
googletrans是调用谷歌翻译功能的Python模块。
打开控制台(Windows系统下按Win+R,输入“cmd”即可打开“命令提示符”),输入“ pip install googletrans ”并按下回车键,等待模块安装完成。
③ 书写代码,进行编程。
下面的代码,我只涉及到了“中文”和“英语”两种语言的循环翻译,没有涉及到其他的语言。如果你有其他方面的需求,可以在函数main()中修改参数txt、times和language,或者根据代码注释直接修改函数本身。
【程序代码】
# 导入模块函数库
from googletrans import Translator
import time
import random
# 初始化函数
def init():
# 需要翻译的原文
global txt
# 需要翻译的次数
global times
# 需要翻译的语言
global language
# 加载翻译引擎
global translator
translator = Translator(service_urls = ['translate.google.cn'])
# 往返翻译一次的函数
def OneRound(s, src, dest):
# 原语种翻译为外语种
s = translator.translate(s, src = src, dest = dest).text
# 设置延时,以免频率过高遭到服务器拒绝
time.sleep(random.randint(50, 300) / 100)
# 外语种翻译为原语种
s = translator.translate(s, src = dest, dest = src).text
return s
# 多次翻译的函数
def OverRound(s, times, src, dest):
ss = []
for i in range(times):
# 进行一次翻译
s = OneRound(s, src, dest)
# 设置延时,以免频率过高遭到服务器拒绝
time.sleep(random.randint(100, 500) / 100)
# 储存中间翻译结果
ss.append(s)
# 输出中间翻译结果
print('第' + str(i + 1) + '次:' + s)
# 判断文本是否收敛,如果收敛则提前结束
if i > 0 and ss[i - 1] == ss[i]:
return s
if i > 2 and ss[i - 2] == ss[i] and ss[i - 1] == ss[i - 3]:
return s
return s
# 程序主体函数
def main():
init()
for i in range(len(txt)):
print('')
# 输出原文
print('原 文:' + txt[i])
# 输出最终翻译结果
print('【最终结果】\n' + OverRound(txt[i], times, language[0], language[1]))
print('')
# 设置延时,以免频率过高遭到服务器拒绝
time.sleep(random.randint(5, 12))
#程序运行处
if __name__ == '__main__':
txt = ['在混沌教派与大暗黑天将克里奥星域搅得天翻地覆的同时,让我们来看看遥远的泰坦星域中所发生的事…',
'可恶的创世圣魂,居然给我耍这种小把戏!',
'但这绝对不可能一直困住我!',
'尽管已经损耗了大半的力量,但这个封印也即将冲破…',
'是你…来得正好,我忠实的仆从...',
'看来你也在外面帮我一同破除这该死的封印,现在快来帮我!',
'…我这就来帮你…',
'啊!!莱茵哈特!你居然! !',
'哼哼哼哼哼!哈哈哈哈哈!',
'为了破除这封印你已虚弱至此,真是天助我也!',
'你不是已经被逝者巨樽的力量所控制…',
'逝者巨樽?哦,你是说那个装亡者之力的小杯子啊…',
'说到这个我还要感谢你,让我感受并达到了一个全新的境界,但是…',
'但是什么?',
'但是现在…我觉得我还可以向着更高的次元突破,而契机就是…你的死!',
'你!啊! !!我的力量!!!快住手!!!',
'你费尽千辛万苦找来的这几样东西,对我来说还有用…',
'?!',
'你休想!他们是我的!是我的!',
'看来,要直接将这些神器剥离出来,还是要花费我一番功夫…',
'那就只好,委屈你暂时忍耐一下了,哈哈哈哈哈哈…。',
'不!!~~~~',
'逝者巨樽…亡者之力…',
'好东西…这简直让我欲罢不能啊…',
'哈哈哈哈,再来!',
'创世之钟…创世神力…',
'这股至高的光明之力…',
'若我可以将其与我的混沌所融合,那将是种怎样的境界…',
'我要迫不及待了!',
'不!!你不能这样!!',
'就是这样,让我再听听你的悲鸣?哈哈哈哈哈!',
'永恒之树的精华么…',
'哼,这玩意儿,暂时还用不到,但弃之也可惜,先留着吧!',
'求你快住手!我的身体,我的力量啊!!!',
'这就不行了?我们还要继续呢…哈哈哈哈!',
'泰坦的生命之力…',
'这和冥域的亡者之力倒也如阴阳两极一样,看来会用得着。',
'那是我的!是我的!你还给我!',
'你的?少让我发笑了!',
'这些不也是你从那些“无辜”的家伙那夺来的吗?我只不过是对你做了同样的事情,哈哈哈哈哈!',
'嚯…这就是你们暗夜一族的至高秘宝,灵核魔杖?',
'求求你..求求你..只有这个,你不能拿走,不然我会魂飞魄散的!',
'就是这个魔杖,帮助你统御了那些截然不同的能量吗? ',
'那我可更不能放过了,拿来吧!喝~~',
'啊!!! !',
'呵呵,一代霸主,临死前居然凄惨至斯,简直不堪入目…',
'好了,东西都到手了,我该找个地方需要好好参详一下,想一想该如何利用它们…',
'等我再次归来之时…我要让整个宇宙,陷入无尽的恐怖,哈哈哈哈哈哈哈!']
times = 20
# 具体语言标识请自行搜索“语言简写代码表”,如下是“中文(简体)”与“英语”。
language = ['zh-CN', 'en']
main()