fanyi-n
Version:
A translate tool in your command line
48 lines (40 loc) • 1.26 kB
JavaScript
var request = require('request');
var SOURCE = require('./lib/source');
var print = require('./lib/print');
var spawn = require('child_process').spawn;
var Entities = require('html-entities').AllHtmlEntities;
entities = new Entities();
var parseString = require('xml2js').parseString;
var which = require('shelljs').which;
var say = require('say');
var isChinese = require('is-chinese');
module.exports = function (word) {
// say it
say.speak(word, isChinese(word) ? 'Ting-Ting' : null);
word = encodeURIComponent(word);
let url = SOURCE.iciba.replace('${word}', word);
function fetch(url) {
return new Promise((resolve, reject) => {
request.get(url, function (error, response, body) {
if (!error && response.statusCode == 200) {
parseString(body, function (err, result) {
resolve(result.dict);
});
} else {
reject(Error('Network or API server error'));
}
});
});
}
let ps = [];
const nThreads = 4;
// lower the latency time of getting the result
for (let i = 0; i < nThreads; i++)
ps.push(fetch(url));
Promise.race(ps)
.then(dict => {
print.iciba(dict);
process.exit(0);
})
.catch(e => console.error(`Error: ${e.message}`));
};