feat: add new google translate api (issue: 225, by: Bush2021)

This commit is contained in:
Gabe
2025-06-27 19:29:00 +08:00
parent d22e3838c4
commit 51f58d095a
4 changed files with 35 additions and 2 deletions

View File

@@ -92,6 +92,7 @@ const userscriptWebpack = (config, env) => {
// @grant GM.info // @grant GM.info
// @grant unsafeWindow // @grant unsafeWindow
// @connect translate.googleapis.com // @connect translate.googleapis.com
// @connect translate-pa.googleapis.com
// @connect api-edge.cognitive.microsofttranslator.com // @connect api-edge.cognitive.microsofttranslator.com
// @connect edge.microsoft.com // @connect edge.microsoft.com
// @connect api-free.deepl.com // @connect api-free.deepl.com
@@ -108,6 +109,7 @@ const userscriptWebpack = (config, env) => {
// @connect dav.jianguoyun.com // @connect dav.jianguoyun.com
// @connect fanyi.baidu.com // @connect fanyi.baidu.com
// @connect transmart.qq.com // @connect transmart.qq.com
// @connect niutrans.com
// @connect localhost:3000 // @connect localhost:3000
// @connect 127.0.0.1:3000 // @connect 127.0.0.1:3000
// @connect localhost:1188 // @connect localhost:1188

View File

@@ -2,6 +2,7 @@ import queryString from "query-string";
import { fetchData } from "../libs/fetch"; import { fetchData } from "../libs/fetch";
import { import {
OPT_TRANS_GOOGLE, OPT_TRANS_GOOGLE,
OPT_TRANS_GOOGLE2,
OPT_TRANS_MICROSOFT, OPT_TRANS_MICROSOFT,
OPT_TRANS_DEEPL, OPT_TRANS_DEEPL,
OPT_TRANS_DEEPLFREE, OPT_TRANS_DEEPLFREE,
@@ -259,6 +260,10 @@ export const apiTranslate = async ({
trText = res.sentences.map((item) => item.trans).join(" "); trText = res.sentences.map((item) => item.trans).join(" ");
isSame = to === res.src; isSame = to === res.src;
break; break;
case OPT_TRANS_GOOGLE2:
trText = res?.[0]?.[0]||"";
isSame = to === res.src;
break;
case OPT_TRANS_MICROSOFT: case OPT_TRANS_MICROSOFT:
trText = res trText = res
.map((item) => item.translations.map((item) => item.text).join(" ")) .map((item) => item.translations.map((item) => item.text).join(" "))

View File

@@ -1,6 +1,7 @@
import queryString from "query-string"; import queryString from "query-string";
import { import {
OPT_TRANS_GOOGLE, OPT_TRANS_GOOGLE,
OPT_TRANS_GOOGLE2,
OPT_TRANS_MICROSOFT, OPT_TRANS_MICROSOFT,
OPT_TRANS_DEEPL, OPT_TRANS_DEEPL,
OPT_TRANS_DEEPLFREE, OPT_TRANS_DEEPLFREE,
@@ -80,6 +81,20 @@ const genGoogle = ({ text, from, to, url, key }) => {
return [input, init]; return [input, init];
}; };
const genGoogle2 = ({ text, from, to, url, key }) => {
const body = JSON.stringify([[ [text], from, to ], "wt_lib"]);
const init = {
method: "POST",
headers: {
"Content-Type": "application/json+protobuf",
"X-Goog-API-Key": key,
},
body,
};
return [url, init];
};
const genMicrosoft = async ({ text, from, to }) => { const genMicrosoft = async ({ text, from, to }) => {
const [token] = await msAuth(); const [token] = await msAuth();
const params = { const params = {
@@ -440,6 +455,8 @@ export const genTransReq = ({ translator, text, from, to }, apiSetting) => {
switch (translator) { switch (translator) {
case OPT_TRANS_GOOGLE: case OPT_TRANS_GOOGLE:
return genGoogle(args); return genGoogle(args);
case OPT_TRANS_GOOGLE2:
return genGoogle2(args);
case OPT_TRANS_MICROSOFT: case OPT_TRANS_MICROSOFT:
return genMicrosoft(args); return genMicrosoft(args);
case OPT_TRANS_DEEPL: case OPT_TRANS_DEEPL:

View File

@@ -89,7 +89,8 @@ export const URL_MICROSOFT_LANGDETECT =
export const URL_GOOGLE_TRAN = export const URL_GOOGLE_TRAN =
"https://translate.googleapis.com/translate_a/single"; "https://translate.googleapis.com/translate_a/single";
export const URL_GOOGLE_TRAN2 =
"https://translate-pa.googleapis.com/v1/translateHtml";
export const DEFAULT_GOOGLE_API_KEY = "AIzaSyATBXajvzQLTDHEQbcpq0Ihe0vWDHmO520"; export const DEFAULT_GOOGLE_API_KEY = "AIzaSyATBXajvzQLTDHEQbcpq0Ihe0vWDHmO520";
export const URL_BAIDU_LANGDETECT = "https://fanyi.baidu.com/langdetect"; export const URL_BAIDU_LANGDETECT = "https://fanyi.baidu.com/langdetect";
@@ -109,6 +110,7 @@ export const DEFAULT_USER_AGENT =
export const OPT_DICT_BAIDU = "Baidu"; export const OPT_DICT_BAIDU = "Baidu";
export const OPT_TRANS_GOOGLE = "Google"; export const OPT_TRANS_GOOGLE = "Google";
export const OPT_TRANS_GOOGLE2 = "Google2";
export const OPT_TRANS_MICROSOFT = "Microsoft"; export const OPT_TRANS_MICROSOFT = "Microsoft";
export const OPT_TRANS_DEEPL = "DeepL"; export const OPT_TRANS_DEEPL = "DeepL";
export const OPT_TRANS_DEEPLX = "DeepLX"; export const OPT_TRANS_DEEPLX = "DeepLX";
@@ -132,6 +134,7 @@ export const OPT_TRANS_CUSTOMIZE_4 = "Custom4";
export const OPT_TRANS_CUSTOMIZE_5 = "Custom5"; export const OPT_TRANS_CUSTOMIZE_5 = "Custom5";
export const OPT_TRANS_ALL = [ export const OPT_TRANS_ALL = [
OPT_TRANS_GOOGLE, OPT_TRANS_GOOGLE,
OPT_TRANS_GOOGLE2,
OPT_TRANS_MICROSOFT, OPT_TRANS_MICROSOFT,
OPT_TRANS_BAIDU, OPT_TRANS_BAIDU,
OPT_TRANS_TENCENT, OPT_TRANS_TENCENT,
@@ -204,6 +207,7 @@ export const OPT_LANGS_TO = [
export const OPT_LANGS_FROM = [["auto", "Auto-detect"], ...OPT_LANGS_TO]; export const OPT_LANGS_FROM = [["auto", "Auto-detect"], ...OPT_LANGS_TO];
export const OPT_LANGS_SPECIAL = { export const OPT_LANGS_SPECIAL = {
[OPT_TRANS_GOOGLE]: new Map(OPT_LANGS_FROM.map(([key]) => [key, key])), [OPT_TRANS_GOOGLE]: new Map(OPT_LANGS_FROM.map(([key]) => [key, key])),
[OPT_TRANS_GOOGLE2]: new Map(OPT_LANGS_FROM.map(([key]) => [key, key])),
[OPT_TRANS_MICROSOFT]: new Map([ [OPT_TRANS_MICROSOFT]: new Map([
...OPT_LANGS_FROM.map(([key]) => [key, key]), ...OPT_LANGS_FROM.map(([key]) => [key, key]),
["auto", ""], ["auto", ""],
@@ -553,10 +557,15 @@ export const DEFAULT_TRANS_APIS = {
[OPT_TRANS_GOOGLE]: { [OPT_TRANS_GOOGLE]: {
url: URL_GOOGLE_TRAN, url: URL_GOOGLE_TRAN,
key: "", key: "",
// key: DEFAULT_GOOGLE_API_KEY,
fetchLimit: DEFAULT_FETCH_LIMIT, // 最大任务数量 fetchLimit: DEFAULT_FETCH_LIMIT, // 最大任务数量
fetchInterval: DEFAULT_FETCH_INTERVAL, // 任务间隔时间 fetchInterval: DEFAULT_FETCH_INTERVAL, // 任务间隔时间
}, },
[OPT_TRANS_GOOGLE2]: {
url: URL_GOOGLE_TRAN2,
key: DEFAULT_GOOGLE_API_KEY,
fetchLimit: DEFAULT_FETCH_LIMIT,
fetchInterval: DEFAULT_FETCH_INTERVAL,
},
[OPT_TRANS_MICROSOFT]: { [OPT_TRANS_MICROSOFT]: {
fetchLimit: DEFAULT_FETCH_LIMIT, fetchLimit: DEFAULT_FETCH_LIMIT,
fetchInterval: DEFAULT_FETCH_INTERVAL, fetchInterval: DEFAULT_FETCH_INTERVAL,