如何使用 Python 调用 Google 翻译无限制免费 API 接口 ?

如何使用 Python 调用 Google 翻译无限制免费 API 接口 ? - 第1张

# 前言

在我构建新版本的网站后端的时候,我一开始使用的是 Google 翻译付费API,但我翻译了一部分我的文章后,Google 跟我说要找我收费 200 多刀。我就立马更换了隔壁家 Microsoft Azure 的翻译服务,他们家可以每月可以免费使用 200 万字符,对于我的用量来说,完全用不完。然而好景不长,今天收到邮件:

我们检测到可疑活动或违反使用条款的行为,因此禁用了订阅以保护付款方式的所有者和 Microsoft。 如果你认为这是一个错误,请继续向安全团队提交支持票证以查看决定。

后来我看应该是我切换账号的时候,误操作导致微软判定我薅羊毛,所以把我 Ban 了。在经过一小段时间的搜索后,我发现 GitHub 上有一个现成的轮子可以直接使用。

GitHub : BaseMax/UnlimitedAutoTranslate

它可以调用 Google 的免费 API,并且自动截断大于 4500 字符的部分,然后将其分段翻译,就绕开了免费版API 单次只允许翻译 4500 字符的限制。本文以下部分是如何使用这个轮子,以及将其优化与应用。

# 安装

请根据你的python版本使用对应的 pip 安装:

pip install googletrans# ORpip3 install googletrans

# 使用

因为我是要将其集成在我的网站翻译模块内的,所以我对其进行了删改,简化后的代码如下:

import reimport sysfrom deep_translator import GoogleTranslatordef split_text(text, max_len=4500): lines = text.split("\n") chunks = [] chunk = "" for line in lines: if len(chunk + line) > max_len: chunks.append(chunk) chunk = "" chunk += line + "\n" if chunk: chunks.append(chunk) return chunksdef translate(text, target): chunks = split_text(text) translated_text = '' for chunk in chunks: translated = GoogleTranslator(source='auto', target=target).translate(text=chunk) translated_text += translated + "\n" translated_text = re.sub(r'[\n]{3,}', '\n\n', translated_text.strip()) translated_text = translated_text.strip() return translated_text translated = translate('你好,我是阿帕胡,为爱发电。','en') print(translated)

直接将上述代码粘贴到服务器上,运行后即可得到返回:

Hello, I'm saltyleo, from China.

至此,你就已经得到了一个可以无限量翻译文本的python脚本了,如果你需要翻译整个文件,请移步原作者的github,原始代码是根据文件翻译的。

如果你不知道你想要翻译到的语言缩写是什么,可以在这个链接内查找你想要翻译到的语言名称对应的缩写:googletrans.LANGUAGES

这个链接这个库的文档:Googletrans: Free and Unlimited Google translate API for Python

# 后记

看到 Google 账单的那一刻,我才知道:免费的才是最贵的,Google的计费规则太过于复杂,还是直接薅它免费 API 的羊毛算了。

THE END