-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathtranslate.js
67 lines (65 loc) · 2.09 KB
/
translate.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#! /usr/bin/env node
// ==========================================================
require("colors");
const say = require("say");
const qs = require("querystringify");
const argv = require("yargs").argv;
// ==========================================================
let queryStr = encodeURI(argv._.join(" "));
// 无参数,或帮助
if (!queryStr || argv.help == true || argv.H == true || argv.h == true) {
console.log("-------------------------------");
console.log("查单词: ".bold.blue);
console.log("ding [单词] 或者 [短句]", "\n");
console.log("汉译英: ".bold.red);
console.log("ding [文本]", "\n");
console.log("单词/短句发音: ".bold.yellow);
console.log("ding [单词] [短句] --say");
console.log("ding [单词] [短句] -S");
console.log("-------------------------------");
console.log("请在'ding'命令后输入单词或断句!");
console.log("word or sentence required...");
} else {
//播放
if (argv.say == true || argv.S == true) {
console.log("播放中...".rainbow);
say.speak(qs.unescape(queryStr));
}
//查词
translation(queryStr);
}
// 请求翻译
function translation(text) {
// // 对驼峰的连续单词进行分割后转义
// queryStr = encodeURI(
// queryStr
// .replace(/([A-Z])/g, " $1")
// .replace(/-/g, " ")
// .toLowerCase()
// );
let query = qs.escape(
text
.replace(/([A-Z])/g, " $1")
.replace(/-/g, " ")
.toLowerCase()
);
let options = `http://aidemo.youdao.com/trans?q=${query}&&from=Auto&&to=Auto`;
return new Promise((resolve, reject) => {
// 处理响应的回调函数
function callback(response) {
response.setEncoding("utf-8");
// 不断更新数据
response.on("data", function (data) {
let result = JSON.parse(data);
// console.log("🚀🚀🚀 / result", result);
resolve(result);
});
response.on("end", function () {
console.log("---------------- by 前端超人 ----------------");
});
}
// 向服务端发送请求
let req = http.request(options, callback);
req.end();
});
}