fanyi-yi
Version:
这是一个基于Node.js和TypeScript的英汉互译命令行小工具
78 lines (77 loc) • 2.52 kB
JavaScript
;
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
result["default"] = mod;
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
var https = __importStar(require("https"));
var querystring = __importStar(require("querystring"));
var private_1 = require("./private");
var md5 = require("md5");
exports.translate = function (wold) {
var salt = Math.random();
var sign = md5(private_1.appid + wold + salt + private_1.secret);
var to, from;
if (/[a-zA-Z]/.test(wold[0])) {
to = 'zh';
from = 'en';
}
else {
to = 'en';
from = 'zh';
}
var query = querystring.stringify({
q: wold,
from: from,
to: to,
salt: salt,
appid: private_1.appid,
sign: sign
});
var options = {
hostname: 'api.fanyi.baidu.com',
port: 443,
path: '/api/trans/vip/translate?' + query,
method: 'GET'
};
var req = https.request(options, function (res) {
var chunks = [];
res.on('data', function (chunk) {
// console.log(chunk.constructor); //Buffer
chunks.push(chunk);
});
res.on('end', function () {
var string = Buffer.concat(chunks).toString();
var object = JSON.parse(string);
if (object.error_code) {
var table = {
52001: '请求超时',
52002: '系统错误',
52003: '未授权用户',
54000: '必填参数为空',
54001: '签名错误',
54003: '访问频率受限',
54004: '账户余额不足',
54005: '长query请求频繁',
58000: '客户端IP非法',
58001: '译文语言方向不支持',
58002: '服务当前已关闭',
90107: '认证未通过或未生效',
};
console.log(table[object.error_code]);
process.exit(1);
}
else {
console.log(object.trans_result[0].dst);
process.exit(0);
}
});
});
req.on('error', function (e) {
console.error(e);
});
req.end();
};