diff --git a/src/apis/baidu.js b/src/apis/baidu.js
index 6d09322..6da8713 100644
--- a/src/apis/baidu.js
+++ b/src/apis/baidu.js
@@ -1,6 +1,10 @@
import queryString from "query-string";
import { getBdauth, setBdauth } from "../libs/storage";
-import { URL_BAIDU_WEB, URL_BAIDU_TRAN } from "../config";
+import {
+ URL_BAIDU_WEB,
+ URL_BAIDU_TRANSAPI_V2,
+ URL_BAIDU_TRANSAPI,
+} from "../config";
import { fetchApi } from "../libs/fetch";
/* eslint-disable */
@@ -203,7 +207,12 @@ const _bdAuth = () => {
const bdAuth = _bdAuth();
-export const genBaidu = async ({ text, from, to }) => {
+/**
+ * 失效作废
+ * @param {*} param0
+ * @returns
+ */
+export const genBaiduV2 = async ({ text, from, to }) => {
const { token, gtk } = await bdAuth();
const sign = getSign(text, gtk);
const data = {
@@ -217,7 +226,7 @@ export const genBaidu = async ({ text, from, to }) => {
ts: Date.now(),
};
- const input = `${URL_BAIDU_TRAN}?from=${from}&to=${to}`;
+ const input = `${URL_BAIDU_TRANSAPI_V2}?from=${from}&to=${to}`;
const init = {
headers: {
"content-type": "application/x-www-form-urlencoded; charset=UTF-8",
@@ -228,3 +237,22 @@ export const genBaidu = async ({ text, from, to }) => {
return [input, init];
};
+
+export const genBaidu = async ({ text, from, to }) => {
+ const data = {
+ from,
+ to,
+ query: text,
+ source: "txt",
+ };
+
+ const init = {
+ headers: {
+ "content-type": "application/x-www-form-urlencoded; charset=UTF-8",
+ },
+ method: "POST",
+ body: queryString.stringify(data),
+ };
+
+ return [URL_BAIDU_TRANSAPI, init];
+};
diff --git a/src/apis/index.js b/src/apis/index.js
index 8ccb9ad..2e18c74 100644
--- a/src/apis/index.js
+++ b/src/apis/index.js
@@ -125,11 +125,14 @@ export const apiTranslate = async ({
return [trText, isSame];
}
+ // 版本号一/二位升级,旧缓存失效
+ const [v1, v2] = process.env.REACT_APP_VERSION.split(".");
const cacheOpts = {
translator,
text,
fromLang,
toLang,
+ version: [v1, v2].join("."),
};
const transOpts = {
@@ -171,8 +174,15 @@ export const apiTranslate = async ({
isSame = to === res.source_lang;
break;
case OPT_TRANS_BAIDU:
- trText = res.trans_result?.data.map((item) => item.dst).join(" ");
- isSame = res.trans_result?.to === res.trans_result?.from;
+ // trText = res.trans_result?.data.map((item) => item.dst).join(" ");
+ // isSame = res.trans_result?.to === res.trans_result?.from;
+ if (res.type === 1) {
+ trText = Object.keys(JSON.parse(res.result).content[0].mean[0].cont)[0];
+ isSame = to === res.from;
+ } else if (res.type === 2) {
+ trText = res.data[0].dst;
+ isSame = to === res.from;
+ }
break;
case OPT_TRANS_TENCENT:
trText = res.auto_translation;
diff --git a/src/config/index.js b/src/config/index.js
index 303bada..96564be 100644
--- a/src/config/index.js
+++ b/src/config/index.js
@@ -83,7 +83,8 @@ export const URL_MICROSOFT_TRAN =
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_WEB = "https://fanyi.baidu.com/";
-export const URL_BAIDU_TRAN = "https://fanyi.baidu.com/v2transapi";
+export const URL_BAIDU_TRANSAPI = "https://fanyi.baidu.com/transapi";
+export const URL_BAIDU_TRANSAPI_V2 = "https://fanyi.baidu.com/v2transapi";
export const URL_DEEPLFREE_TRAN = "https://www2.deepl.com/jsonrpc";
export const URL_TENCENT_TRANSMART = "https://transmart.qq.com/api/imt";
@@ -101,11 +102,11 @@ export const OPT_TRANS_CUSTOMIZE = "Custom";
export const OPT_TRANS_ALL = [
OPT_TRANS_GOOGLE,
OPT_TRANS_MICROSOFT,
+ OPT_TRANS_BAIDU,
+ OPT_TRANS_TENCENT,
OPT_TRANS_DEEPL,
OPT_TRANS_DEEPLFREE,
OPT_TRANS_DEEPLX,
- OPT_TRANS_BAIDU,
- OPT_TRANS_TENCENT,
OPT_TRANS_OPENAI,
OPT_TRANS_GEMINI,
OPT_TRANS_CLOUDFLAREAI,
diff --git a/src/views/Options/FavWords.js b/src/views/Options/FavWords.js
index 3d1ff6d..5e45415 100644
--- a/src/views/Options/FavWords.js
+++ b/src/views/Options/FavWords.js
@@ -35,7 +35,7 @@ function DictField({ word }) {
fromLang: "en",
toLang: "zh-CN",
});
- setDictResult(dictRes[2].dict_result);
+ dictRes[2].type === 1 && setDictResult(JSON.parse(dictRes[2].result));
} catch (err) {
setError(err.message);
} finally {
diff --git a/src/views/Selection/DictCont.js b/src/views/Selection/DictCont.js
index 67ff005..638f43d 100644
--- a/src/views/Selection/DictCont.js
+++ b/src/views/Selection/DictCont.js
@@ -1,16 +1,11 @@
import Box from "@mui/material/Box";
-import Chip from "@mui/material/Chip";
import Stack from "@mui/material/Stack";
import FavBtn from "./FavBtn";
import Typography from "@mui/material/Typography";
-const exchangeMap = {
- word_third: "第三人称单数",
- word_ing: "现在分词",
- word_done: "过去式",
- word_past: "过去分词",
- word_pl: "复数",
- word_proto: "词源",
+const phonicMap = {
+ en_phonic: "英",
+ us_phonic: "美",
};
export default function DictCont({ dictResult }) {
@@ -26,40 +21,28 @@ export default function DictCont({ dictResult }) {
alignItems="flex-start"
>
- {dictResult.simple_means?.word_name}
+ {dictResult.src}
-
+
- {dictResult.simple_means?.symbols?.map(({ ph_en, ph_am, parts }, idx) => (
-
- {(ph_en || ph_am) && (
- {`英 /${ph_en || ""}/ 美 /${ph_am || ""}/`}
- )}
-
- {parts.map(({ part, means }, idx) => (
- -
- {part ? `[${part}] ${means.join("; ")}` : means.join("; ")}
-
- ))}
-
+
+
+ {dictResult.voice
+ .map(Object.entries)
+ .map((item) => item[0])
+ .map(([key, val]) => `${phonicMap[key] || key} ${val}`)
+ .join(" ")}
- ))}
-
-
- {Object.entries(dictResult.simple_means?.exchange || {})
- .map(([key, val]) => `${exchangeMap[key] || key}: ${val.join(", ")}`)
- .join("; ")}
-
-
-
- {Object.values(dictResult.simple_means?.tags || {})
- .flat()
- .filter((item) => item)
- .map((item) => (
-
+
+ {dictResult.content[0].mean.map(({ pre, cont }, idx) => (
+ -
+ {pre && `[${pre}] `}
+ {Object.keys(cont).join("; ")}
+
))}
-
+
+
);
}
diff --git a/src/views/Selection/DictContV2.js b/src/views/Selection/DictContV2.js
new file mode 100644
index 0000000..67ff005
--- /dev/null
+++ b/src/views/Selection/DictContV2.js
@@ -0,0 +1,65 @@
+import Box from "@mui/material/Box";
+import Chip from "@mui/material/Chip";
+import Stack from "@mui/material/Stack";
+import FavBtn from "./FavBtn";
+import Typography from "@mui/material/Typography";
+
+const exchangeMap = {
+ word_third: "第三人称单数",
+ word_ing: "现在分词",
+ word_done: "过去式",
+ word_past: "过去分词",
+ word_pl: "复数",
+ word_proto: "词源",
+};
+
+export default function DictCont({ dictResult }) {
+ if (!dictResult) {
+ return;
+ }
+
+ return (
+
+
+
+ {dictResult.simple_means?.word_name}
+
+
+
+
+ {dictResult.simple_means?.symbols?.map(({ ph_en, ph_am, parts }, idx) => (
+
+ {(ph_en || ph_am) && (
+ {`英 /${ph_en || ""}/ 美 /${ph_am || ""}/`}
+ )}
+
+ {parts.map(({ part, means }, idx) => (
+ -
+ {part ? `[${part}] ${means.join("; ")}` : means.join("; ")}
+
+ ))}
+
+
+ ))}
+
+
+ {Object.entries(dictResult.simple_means?.exchange || {})
+ .map(([key, val]) => `${exchangeMap[key] || key}: ${val.join(", ")}`)
+ .join("; ")}
+
+
+
+ {Object.values(dictResult.simple_means?.tags || {})
+ .flat()
+ .filter((item) => item)
+ .map((item) => (
+
+ ))}
+
+
+ );
+}
diff --git a/src/views/Selection/TranCont.js b/src/views/Selection/TranCont.js
index af7c597..dddd365 100644
--- a/src/views/Selection/TranCont.js
+++ b/src/views/Selection/TranCont.js
@@ -59,7 +59,8 @@ export default function TranCont({
// 词典
if (isValidWord(text) && toLang.startsWith("zh")) {
if (fromLang === "en" && translator === OPT_TRANS_BAIDU) {
- setDictResult(tranRes[2].dict_result);
+ tranRes[2].type === 1 &&
+ setDictResult(JSON.parse(tranRes[2].result));
} else {
const dictRes = await apiTranslate({
text,
@@ -67,7 +68,8 @@ export default function TranCont({
fromLang: "en",
toLang: "zh-CN",
});
- setDictResult(dictRes[2].dict_result);
+ dictRes[2].type === 1 &&
+ setDictResult(JSON.parse(dictRes[2].result));
}
}
} catch (err) {