寫一個bash腳本調用百度翻譯API進行中文到英文的翻譯,首先需要進行相關的申請。看百度給出的文檔鏈接: 百度翻譯API文檔
需要先注冊一個百度賬號,然后申請APPID。腳本中會用到appid和key這兩個值。按照文檔給出的提示可以獲得。如下是腳本:
#! /bin/bashfunction printRedMessage {if [ $# -eq 0 ]; thenreturnfiecho -e "\e[31m$1\e[0m"
}function printGreenMessage {if [ $# -eq 0 ]; thenreturnfiecho -e "\e[32m$1\e[0m"
}if [ $# -eq 0 ]; thenprintRedMessage "請輸入需要翻譯的中文內容."exit 1
elif [ $# -gt 1 ]; thenprintRedMessage "參數太多, 只支持一個參數."exit 2
fistr="$1"rand_val=$RANDOM
app_id="XXXXXXXXXX"
key="XXXXXXXXXXXX"
fanyi_url="https://fanyi-api.baidu.com/api/trans/vip/translate"
sign=$(echo -ne "$app_id$str$rand_val$key" | md5sum | grep -oP "^\w+")result=$(curl --silent --insecure --request POST "$fanyi_url" \--form "q=$str" \--form "from=auto" \--form "to=en" \--form "appid=$app_id" \--form "salt=$rand_val" \--form "sign=$sign")# 格式化輸出結果
echo "$result" | jq
需要把腳本中對應的appid和key這兩個變量替換成自己申請的appid和key值。
以本人的ubuntu環境為例,因為腳本中使用了curl和jq這兩個命令,系統中可能沒有安裝,
使用 sudo apt install curl jq 安裝一下,下面是測試腳本的運行效果:
輸出結果是一個json字符串,其中的"dst"字段就是百度翻譯給出的結果。
下面是返回的json:
{"from": "zh","to": "en","trans_result": [{"src": "腳本調用百度翻譯API,測試翻譯效果如何","dst": "Script calls Baidu Translate API to test the translation effect"}]
}
再測試一個翻譯:
下面是返回的json:
{"from": "zh","to": "en","trans_result": [{"src": "是騾子是馬拉出來遛遛, 看看百度翻譯API的能力到底如何","dst": "Is it a mule or a horse pulled out for a walk? Let's see how good Baidu Translate API is"}]
}