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 details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

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

Uploaded Python 3

File details

Details for the file baidu-translate-api-1.0.0.tar.gz.

File metadata

  • Download URL: baidu-translate-api-1.0.0.tar.gz
  • Upload date:
  • Size: 15.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.1

File hashes

Hashes for baidu-translate-api-1.0.0.tar.gz
Algorithm Hash digest
SHA256 8d861ba6e670bcb5bdb67be2aefac96e795def4d3cea91a209f72614a0be112e
MD5 fce3a6123c33f858dd3746861a8ea022
BLAKE2b-256 37a205da4e47b6712a493d83955762a21fd452218c4db5586d45e1231bdb2a0a

See more details on using hashes here.

File details

Details for the file baidu_translate_api-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for baidu_translate_api-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 40c5039adabba7b5112abcb0549baf29636a1ef071503089cdb3022b784984f1
MD5 8eb943086bff3ccdbd5b0b00565e776d
BLAKE2b-256 3b6d887b1999fef0c7817f7bcab37e8e41b02a15664dfe586b7b4d549dbae3fb

See more details on using hashes here.

Supported by

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