UNPKG

fanyi-n

Version:

A translate tool in your command line

48 lines (40 loc) 1.26 kB
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}`)); };