Skip to main content

一个免费, 高效, 简洁百度翻译接口

Project description

baidu-translate

一个免费, 高效, 简洁 百度翻译 接口

特点:

  • 采用百度翻译公共接口, 无鉴权, 完全免费。
  • 支持垂直翻译, 可提高翻译准确度。
  • 代码内部自动获取 Token 和 GTK, 无需使用者手动获取。
  • 接口简洁, 没有复杂的前置调用。
  • 相对于同类开源项目而言, sign 算法采用 Python 重新编写, 无需额外的依赖和调用开销。
  • 得益于缓存机制,首次调用可能稍慢,但后续调用相当之快。

安装

本项目已发布到 PYPI,你可以通过以下方法来安装。

$ pip install baidu-translate-api

注意安装包名为 baidu-translate-api,调用包名为 baidu_translate

也可以用以下方式安装最新版:

$ pip install git+https://github.com/17097239132/baidu-translate.git

例子

import baidu_translate as fanyi

result = fanyi.translate_text('Hello, World!')
result_ru = fanyi.translate_text('Hello, World!', to=fanyi.Lang.RU)
print(result, result_ru)
# 你好,世界! Здравствуйте, Мир!

lang = fanyi.detect_language('Vue rapide')
print(lang == fanyi.Lang.FRA)
# True

result = fanyi.translate_text('我们是中国人,我们爱自己的祖国!')
print(result)
# We are Chinese, we love our motherland!

result_common = fanyi.translate_text('年化收益率')
result_domain = fanyi.translate_text('年化收益率', domain=fanyi.Domain.FINANCE) # 金融
print(result_common, '&', result_domain)
# Annualized rate of return & Annualized yield

你也可以使用异步和多线程:

import baidu_translate as fanyi
import asyncio, time
from concurrent.futures import ThreadPoolExecutor

# Make cache
fanyi.translate_text('Hi!')

langs = ['zh', 'en', 'fra', 'ru', 'ara', 'spa']


def test_sync(text):
    texts = []
    for lang in langs:
        texts.append(fanyi.translate_text(text, to=lang))

    return ' '.join(texts)


async def test_async(text):
    tasks = []
    for lang in langs:
        tasks.append(fanyi.translate_text_async(text, to=lang))
    texts = await asyncio.gather(*tasks)

    return ' '.join(texts)


def test_thread(text):
    with ThreadPoolExecutor() as pool:
        texts = pool.map(
            lambda lang: fanyi.translate_text(text, to=lang), langs
        )

    return ' '.join(texts)


start = time.time()
result_sync = test_sync('Good morning!')
print('Sync Time:', time.time() - start) # 4.8s~

start = time.time()
result_async = asyncio.run(test_async('Good morning!'))
print('Async Time:', time.time() - start) # 2.3s~

start = time.time()
result_thread = test_thread('Good morning!')
print('Thread Time:', time.time() - start) # 0.8s~

print(result_sync == result_async == result_thread)
# True

由于 httpx 请求库的缘故, 多线程模式的速度被显著提升, 而异步模式的效率并不突出。

API

baidu_translate.translate_text(content, /, from_=Lang.AUTO, to=Lang.AUTO, domain=Domain.COMMON)

翻译 content 中的内容, 并返回一个字符串。

from_to 分别是翻译的源语言和目标语言。接受一个 Lang 对象, 也可传入一个字符串, 将自动转化为 Lang 对象。如果未指定或为 Lang.AUTO, 将自动检测源语言或目标语言。

domain 是垂直翻译领域,请传入一个 Domain 对象。

如果 content 为空或源语言与目标语言相同将不做更改。

baidu_translate.detect_language(content)

检测 content 的语种。返回一个 Lang 对象。如果检测不出来将返回 None

baidu_translate.Lang

枚举对象, 包含百度支持的所有语种的 ID, 请注意是全部大写。

建议结合 IDE 自动补全使用。

class Lang(enum.Enum):
    # will be replace with real language
    AUTO = 'auto'  # 自动检测

    # Common Languages
    ZH = 'zh'    # 中文(简体)
    EN = 'en'    # 英语
    SPA = 'spa'  # 西班牙语
    ARA = 'ara'  # 阿拉伯语
    FRA = 'fra'  # 法语
    RU = 'ru'    # 俄语

    # More Languages
    ...

baidu_translate.Domain

枚举对象, 百度的垂直翻译领域, 请注意是全部大写。

建议结合 IDE 自动补全使用。

class Domain(enum.Enum):
    COMMON = 'common'      # 通用领域
    BM = 'medicine'        # 生物医药
    ET = 'electronics'     # 电子科技
    WCM = 'mechanics'      # 水利机械
    NOVEL = 'novel'        # 网络文学
    FINANCE = 'finance'    # 金融
    MILITARY = 'military'  # 军事

参考文献

  1. hujingshuang 的百度翻译 API (百度翻译接口 破解)
  2. 百度指数 Cipher-Text、百度翻译 Acs-Token 逆向分析
  3. js逆向-最新版百度翻译参数解密
  4. python的AES-CBC加密

版权 & 免责声明

本项目已被放入公有领域,作者放弃所有权利。任何人都可以自由地使用本项目,而无需注明作者。

但值得注意的是,本项目违反了百度翻译(PC 版)用户使用协议的第三十一条第一款。百度公司随时可以联系本人删除项目,但由此衍生出的任何法律问题本人概不负责(包括但不限于用户使用不当而对百度公司服务器造成的损失)。

特别提醒:本项目仅供学习讨论。建议不要在商业项目中使用,以规避法律风险。

且用且珍惜!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

baidu-translate-api-1.0.0.tar.gz (15.8 kB view hashes)

Uploaded Source

Built Distribution

baidu_translate_api-1.0.0-py3-none-any.whl (14.8 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page