feat: add baidu suggest

This commit is contained in:
Gabe Yuan
2024-03-19 11:48:30 +08:00
parent bc4b4a2171
commit fbc70e43e3
4 changed files with 54 additions and 1 deletions

View File

@@ -15,6 +15,7 @@ import {
URL_CACHE_TRAN, URL_CACHE_TRAN,
KV_SALT_SYNC, KV_SALT_SYNC,
URL_BAIDU_LANGDETECT, URL_BAIDU_LANGDETECT,
URL_BAIDU_SUGGEST,
OPT_LANGS_BAIDU, OPT_LANGS_BAIDU,
URL_TENCENT_TRANSMART, URL_TENCENT_TRANSMART,
OPT_LANGS_TENCENT, OPT_LANGS_TENCENT,
@@ -70,6 +71,30 @@ export const apiBaiduLangdetect = async (text) => {
return ""; return "";
}; };
/**
* 百度翻译建议
* @param {*} text
* @returns
*/
export const apiBaiduSuggest = async (text) => {
const res = await fetchPolyfill(URL_BAIDU_SUGGEST, {
headers: {
"Content-type": "application/json",
},
method: "POST",
body: JSON.stringify({
kw: text,
}),
useCache: true,
});
if (res.errno === 0) {
return res.data;
}
return [];
};
/** /**
* 腾讯语言识别 * 腾讯语言识别
* @param {*} text * @param {*} text

View File

@@ -82,6 +82,7 @@ export const URL_MICROSOFT_TRAN =
"https://api-edge.cognitive.microsofttranslator.com/translate"; "https://api-edge.cognitive.microsofttranslator.com/translate";
export const URL_MICROSOFT_AUTH = "https://edge.microsoft.com/translate/auth"; export const URL_MICROSOFT_AUTH = "https://edge.microsoft.com/translate/auth";
export const URL_BAIDU_LANGDETECT = "https://fanyi.baidu.com/langdetect"; export const URL_BAIDU_LANGDETECT = "https://fanyi.baidu.com/langdetect";
export const URL_BAIDU_SUGGEST = "https://fanyi.baidu.com/sug";
export const URL_BAIDU_WEB = "https://fanyi.baidu.com/"; export const URL_BAIDU_WEB = "https://fanyi.baidu.com/";
export const URL_BAIDU_TRANSAPI = "https://fanyi.baidu.com/transapi"; export const URL_BAIDU_TRANSAPI = "https://fanyi.baidu.com/transapi";
export const URL_BAIDU_TRANSAPI_V2 = "https://fanyi.baidu.com/v2transapi"; export const URL_BAIDU_TRANSAPI_V2 = "https://fanyi.baidu.com/v2transapi";

View File

@@ -0,0 +1,17 @@
import Box from "@mui/material/Box";
import Typography from "@mui/material/Typography";
export default function SugCont({ sugs }) {
return (
<Box>
{sugs.map(({ k, v }) => (
<Typography component="div" key={k}>
<Typography>{k}</Typography>
<ul style={{ margin: "0" }}>
<li>{v}</li>
</ul>
</Typography>
))}
</Box>
);
}

View File

@@ -6,10 +6,11 @@ import Stack from "@mui/material/Stack";
import { useI18n } from "../../hooks/I18n"; import { useI18n } from "../../hooks/I18n";
import { DEFAULT_TRANS_APIS, OPT_TRANS_BAIDU } from "../../config"; import { DEFAULT_TRANS_APIS, OPT_TRANS_BAIDU } from "../../config";
import { useEffect, useState } from "react"; import { useEffect, useState } from "react";
import { apiTranslate, apiBaiduLangdetect } from "../../apis"; import { apiTranslate, apiBaiduLangdetect, apiBaiduSuggest } from "../../apis";
import { isValidWord } from "../../libs/utils"; import { isValidWord } from "../../libs/utils";
import CopyBtn from "./CopyBtn"; import CopyBtn from "./CopyBtn";
import DictCont from "./DictCont"; import DictCont from "./DictCont";
import SugCont from "./SugCont";
export default function TranCont({ export default function TranCont({
text, text,
@@ -26,6 +27,7 @@ export default function TranCont({
const [loading, setLoading] = useState(false); const [loading, setLoading] = useState(false);
const [error, setError] = useState(""); const [error, setError] = useState("");
const [dictResult, setDictResult] = useState(null); const [dictResult, setDictResult] = useState(null);
const [sugs, setSugs] = useState([]);
useEffect(() => { useEffect(() => {
(async () => { (async () => {
@@ -34,6 +36,7 @@ export default function TranCont({
setTrText(""); setTrText("");
setError(""); setError("");
setDictResult(null); setDictResult(null);
setSugs([]);
// 互译 // 互译
if (toLang !== toLang2 && toLang2 !== "none") { if (toLang !== toLang2 && toLang2 !== "none") {
@@ -45,6 +48,7 @@ export default function TranCont({
} }
} }
// 翻译
const apiSetting = const apiSetting =
transApis[translator] || DEFAULT_TRANS_APIS[translator]; transApis[translator] || DEFAULT_TRANS_APIS[translator];
const tranRes = await apiTranslate({ const tranRes = await apiTranslate({
@@ -72,6 +76,11 @@ export default function TranCont({
setDictResult(JSON.parse(dictRes[2].result)); setDictResult(JSON.parse(dictRes[2].result));
} }
} }
// 建议
if (text.length < 20) {
setSugs(await apiBaiduSuggest(text));
}
} catch (err) { } catch (err) {
setError(err.message); setError(err.message);
} finally { } finally {
@@ -119,6 +128,7 @@ export default function TranCont({
{loading && <CircularProgress size={24} />} {loading && <CircularProgress size={24} />}
{error && <Alert severity="error">{error}</Alert>} {error && <Alert severity="error">{error}</Alert>}
{dictResult && <DictCont dictResult={dictResult} />} {dictResult && <DictCont dictResult={dictResult} />}
{sugs.length > 0 && <SugCont sugs={sugs} />}
</> </>
); );
} }