
增强API安全性:降低访问控制失效的风险
工作中用到翻译软件是再正常不过的事情了,一般浏览外文网站翻译直接用谷歌插件还好解决。如果有一个Excel文件,里面有上万条需要翻译的内容,不能使用百度或Google免费的文档功能,需要怎么解决呢?总不能手动一个个的翻译然后粘贴吧,费时间不说质量也不一定高,于是想到用Python调用免费翻译API来完成这个任务。
能够将源语言文本快速、准确地转换成目标语言文本。通过该服务,用户可以根据不同的语言参数实现多种国际语言之间的互译,满足用户在跨语言交流、学习和工作中的翻译需求。幂简API平台提供了多种维度发现API的功能,下图提供的是所有提供文本翻译的服务商。用户可以根据自己的需求选择适合自己的服务商。
跨国企业的客服系统集成翻译API,客服代表能够实时翻译客户的询问,提供母语服务,提升客户满意度和问题解决效率。
幂简集成是国内领先的API集成管理平台,专注于为开发者提供全面、高效、易用的API集成解决方案。幂简API平台提供了多种维度发现API的功能:通过关键词搜索免费翻译API、从 API Hub 分类浏览API、从 开放平台 分类浏览企业间接寻找API等。
openpyxl
:用于处理 Excel 文件。urllib.parse
:用于 URL 编码。requests
:用于发送 HTTP 请求。json
:用于处理 JSON 数据。concurrent.futures
:用于实现多线程。BATCH_SIZE = 100
:指定每次处理的批量大小为 100 条数据。THREAD_COUNT = 10
:指定线程池中的线程数量为 10 个。translate_text
函数:None
。process_batch
函数:sheet
以及批处理的起始行 start
和结束行 end
。translate_text
函数进行翻译。main
函数:openpyxl
加载工作簿并获取活动工作表。futures
列表。futures
列表中。if __name__ == "__main__"
条件下执行 main
函数,启动整个程序的运行。import openpyxl
import urllib.parse
import requests
import json
import concurrent.futures
BATCH_SIZE = 100 # 每次处理的批量大小
THREAD_COUNT = 10 # 线程池中的线程数量
def translate_text(text):
encoded_text = urllib.parse.quote(text.replace(" ", " ").strip())
api_url = f"https://api.pearktrue.cn/api/translate/?text={encoded_text}&type=AUTO"
response = requests.get(api_url)
if response.status_code == 200:
root_node = json.loads(response.text)
return root_node['data']['translate']
else:
return None
def process_batch(sheet, start, end):
for row_index in range(start, end):
row = sheet[row_index]
desc_cell = row[0]
if desc_cell.value:
translated_text = translate_text(desc_cell.value)
if translated_text:
sheet.cell(row=row_index, column=2, value=translated_text)
print(f"读取到第 {row_index} 条记录")
print(f"写入到第 {row_index} 条记录")
def main():
excel_file_path = "/Users/larryzheng/Desktop/blog.xlsx"
workbook = openpyxl.load_workbook(excel_file_path)
sheet = workbook.active
row_count = sheet.max_row
batch_count = (row_count + BATCH_SIZE - 1) // BATCH_SIZE
with concurrent.futures.ThreadPoolExecutor(max_workers=THREAD_COUNT) as executor:
futures = []
for batch in range(batch_count):
start = batch * BATCH_SIZE
end = min(start + BATCH_SIZE, row_count)
futures.append(executor.submit(process_batch, sheet, start, end))
# 等待所有任务完成
for future in concurrent.futures.as_completed(futures):
try:
future.result()
except Exception as e:
print(e)
workbook.save(excel_file_path)
workbook.close()
if __name__ == "__main__":
main()