Python:谷歌翻譯20次的程序如何實(shí)現(xiàn)?

Python:谷歌翻譯20次的程序如何實(shí)現(xiàn)?
作者:橙汁

【梗的解釋】
“?谷歌翻譯20次?”就是多次利用谷歌翻譯(Google Translate)將原本正常的名場面對話翻譯成語言邏輯紊亂、特別搞笑的對話。
比如:這個視頻,利用谷歌翻譯將賽爾號“魔靈王之墓”的劇情制作成非常搞笑的對話。

【翻譯實(shí)現(xiàn)】
除了使用人工手動往復(fù)翻譯的方法,還可以使用編程語言進(jìn)行翻譯。比如,本文將展示如何使用Python實(shí)現(xiàn)這一過程。
① 下載并安裝對應(yīng)系統(tǒng)的Python3環(huán)境。
Python官網(wǎng): https://www.python.org
② 安裝googletrans模塊
googletrans是調(diào)用谷歌翻譯功能的Python模塊。
打開控制臺(Windows系統(tǒng)下按Win+R,輸入“cmd”即可打開“命令提示符”),輸入“?pip install googletrans?”并按下回車鍵,等待模塊安裝完成。
③ 書寫代碼,進(jìn)行編程。
下面的代碼,我只涉及到了“中文”和“英語”兩種語言的循環(huán)翻譯,沒有涉及到其他的語言。如果你有其他方面的需求,可以在函數(shù)main()中修改參數(shù)txt、times和language,或者根據(jù)代碼注釋直接修改函數(shù)本身。
【程序代碼】
# 導(dǎo)入模塊函數(shù)庫
from googletrans import Translator
import time
import random
# 初始化函數(shù)
def init():
? ??# 需要翻譯的原文
? ? global txt
? ? # 需要翻譯的次數(shù)
? ? global times
? ? # 需要翻譯的語言
? ? global language
? ??# 加載翻譯引擎
? ? global?translator
? ? translator = Translator(service_urls = ['translate.google.cn'])
# 往返翻譯一次的函數(shù)
def OneRound(s, src, dest):
? ??# 原語種翻譯為外語種
? ? s = translator.translate(s, src = src, dest = dest).text
? ??# 設(shè)置延時,以免頻率過高遭到服務(wù)器拒絕
? ? time.sleep(random.randint(50,?300) /?100)
? ??# 外語種翻譯為原語種
? ? s = translator.translate(s, src = dest, dest = src).text
? ? return s
# 多次翻譯的函數(shù)
def OverRound(s, times, src, dest):
? ? ss = []
? ? for i in range(times):
? ? ? ? # 進(jìn)行一次翻譯
? ? ? ? s = OneRound(s, src, dest)
? ? ? ??# 設(shè)置延時,以免頻率過高遭到服務(wù)器拒絕
? ? ? ? time.sleep(random.randint(100,?500) / 100)
? ? ? ??# 儲存中間翻譯結(jié)果
? ? ? ? ss.append(s)
? ? ? ??#?輸出中間翻譯結(jié)果
? ? ? ? print('第' + str(i + 1) + '次:' + s)
? ? ? ??#?判斷文本是否收斂,如果收斂則提前結(jié)束
? ? ? ? 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
# 程序主體函數(shù)
def main():
? ? init()
? ? for i in range(len(txt)):
? ? ? ? print('')
? ? ? ? #?輸出原文
? ? ? ? print('原 文:' + txt[i])
? ? ? ??#?輸出最終翻譯結(jié)果
? ? ? ? print('【最終結(jié)果】\n' + OverRound(txt[i], times, language[0], language[1]))
? ? ? ? print('')
? ? ? ??# 設(shè)置延時,以免頻率過高遭到服務(wù)器拒絕
? ? ? ? time.sleep(random.randint(5,?12))
#程序運(yùn)行處
if __name__ == '__main__':
? ? txt = ['在混沌教派與大暗黑天將克里奧星域攪得天翻地覆的同時,讓我們來看看遙遠(yuǎn)的泰坦星域中所發(fā)生的事…',
? ? '可惡的創(chuàng)世圣魂,居然給我耍這種小把戲!',?
? ? '但這絕對不可能一直困住我!',?
? ? '盡管已經(jīng)損耗了大半的力量,但這個封印也即將沖破…',?
? ? '是你…來得正好,我忠實(shí)的仆從...',?
? ? '看來你也在外面幫我一同破除這該死的封印,現(xiàn)在快來幫我!',?
? ? '…我這就來幫你…',?
? ? '?。。∪R茵哈特!你居然! !',?
? ? '哼哼哼哼哼!哈哈哈哈哈!',?
? ? '為了破除這封印你已虛弱至此,真是天助我也!',?
? ? '你不是已經(jīng)被逝者巨樽的力量所控制…',?
? ? '逝者巨樽?哦,你是說那個裝亡者之力的小杯子啊…',?
? ? '說到這個我還要感謝你,讓我感受并達(dá)到了一個全新的境界,但是…',?
? ? '但是什么?',?
? ? '但是現(xiàn)在…我覺得我還可以向著更高的次元突破,而契機(jī)就是…你的死!',?
? ? '你!??! ?。∥业牧α浚。?!快住手?。?!',?
? ? '你費(fèi)盡千辛萬苦找來的這幾樣?xùn)|西,對我來說還有用…',?
? ? '?!',?
? ? '你休想!他們是我的!是我的!',?
? ? '看來,要直接將這些神器剝離出來,還是要花費(fèi)我一番功夫…',?
? ? '那就只好,委屈你暫時忍耐一下了,哈哈哈哈哈哈…。',?
? ? '不??!~~~~',?
? ? '逝者巨樽…亡者之力…',?
? ? '好東西…這簡直讓我欲罷不能啊…',?
? ? '哈哈哈哈,再來!',?
? ? '創(chuàng)世之鐘…創(chuàng)世神力…',?
? ? '這股至高的光明之力…',?
? ? '若我可以將其與我的混沌所融合,那將是種怎樣的境界…',?
? ? '我要迫不及待了!',?
? ? '不!!你不能這樣!!',?
? ? '就是這樣,讓我再聽聽你的悲鳴?哈哈哈哈哈!',?
? ? '永恒之樹的精華么…',?
? ? '哼,這玩意兒,暫時還用不到,但棄之也可惜,先留著吧!',?
? ? '求你快住手!我的身體,我的力量?。。。?#39;,?
? ? '這就不行了?我們還要繼續(xù)呢…哈哈哈哈!',?
? ? '泰坦的生命之力…',?
? ? '這和冥域的亡者之力倒也如陰陽兩極一樣,看來會用得著。',?
? ? '那是我的!是我的!你還給我!',?
? ? '你的?少讓我發(fā)笑了!',?
? ? '這些不也是你從那些“無辜”的家伙那奪來的嗎?我只不過是對你做了同樣的事情,哈哈哈哈哈!',?
? ? '嚯…這就是你們暗夜一族的至高秘寶,靈核魔杖?',?
? ? '求求你..求求你..只有這個,你不能拿走,不然我會魂飛魄散的!',?
? ? '就是這個魔杖,幫助你統(tǒng)御了那些截然不同的能量嗎? ',?
? ? '那我可更不能放過了,拿來吧!喝~~',?
? ? '啊?。?! !',?
? ? '呵呵,一代霸主,臨死前居然凄慘至斯,簡直不堪入目…',?
? ? '好了,東西都到手了,我該找個地方需要好好參詳一下,想一想該如何利用它們…',?
? ? '等我再次歸來之時…我要讓整個宇宙,陷入無盡的恐怖,哈哈哈哈哈哈哈!']
? ? times = 20
? ??# 具體語言標(biāo)識請自行搜索“語言簡寫代碼表”,如下是“中文(簡體)”與“英語”。
? ? language = ['zh-CN', 'en']
? ? main()