12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- package com.twm.tools.local
- import com.google.gson.Gson
- import okhttp3.FormBody
- import okhttp3.OkHttpClient
- import okhttp3.Request
- import java.math.BigInteger
- import java.security.MessageDigest
- object BaiduTranslateService: TranslateApi {
- private const val TRANSLATE_URL = "https://fanyi-api.baidu.com/api/trans/vip/translate"
- private const val BAIDU_APPID = "20230809001774667"
- private const val BAIDU_SECRET = ""
- private val client = OkHttpClient.Builder().build()
- override fun translate(source: String, lang: String): String? {
- val salt = System.nanoTime().toString()
- val sign = (BAIDU_APPID + source + salt + BAIDU_SECRET).getMd5()
- val body = FormBody.Builder()
- .add("q", source)
- .add("from", "auto")
- .add("to", lang)
- .add("appid", BAIDU_APPID)
- .add("salt", salt)
- .add("sign", sign)
- .build()
- val request = Request.Builder()
- .post(body)
- .url(TRANSLATE_URL)
- .header("Content-Type", "application/x-www-form-urlencoded")
- .build()
- val response = runCatching {
- client.newCall(request).execute()
- }
- if (response.isFailure) {
- return null
- }
- val result = response.getOrThrow().body?.string() ?: return null
- val translate = Gson().fromJson(
- result, BaiduTranslateResponse::class.java
- )
- return translate.trans_result?.firstOrNull()?.dst
- }
- private fun String.getMd5(): String {
- val md = MessageDigest.getInstance("MD5")
- return BigInteger(1, md.digest(this.toByteArray())).toString(16).padStart(32, '0')
- }
- }
|