google-translate-api
Advanced tools
Comparing version 0.1.1 to 1.0.0
94
index.js
@@ -5,16 +5,14 @@ /** | ||
var request = require("request"), | ||
querystring = require("querystring"), | ||
tk = require('./tk'); | ||
var querystring = require('querystring'); | ||
var got = require('got'); | ||
var tk = require('./tk'); | ||
module.exports = function translate(from, to, text, cb) { | ||
tk(text, function (err, tk) { | ||
if (err) return cb(err); | ||
function translate(text, opts) { | ||
return tk(text).then(function (tk) { | ||
var url = 'https://translate.google.com/translate_a/single'; | ||
var data = { | ||
client: 't', | ||
sl: from, | ||
tl: to, | ||
hl: from, | ||
sl: opts.from || 'auto', | ||
tl: opts.to, | ||
hl: opts.from || 'en', | ||
dt: ['at', 'bd', 'ex', 'ld', 'md', 'qca', 'rw', 'rm', 'ss', 't'], | ||
@@ -27,33 +25,69 @@ ie: 'UTF-8', | ||
kc: 7, | ||
tk: tk, | ||
tk: opts.tk || tk, | ||
q: text | ||
}; | ||
url += '?' + querystring.stringify(data); | ||
request.get({ | ||
url: url | ||
}, function (err, res, body) { | ||
if (err) { | ||
var e = new Error(); | ||
e.code = 'BAD_NETWORK'; | ||
return cb(e); | ||
return url + '?' + querystring.stringify(data); | ||
}).then(function (url) { | ||
return got(url).then(function (res) { | ||
if (opts.raw) { | ||
return res.body; | ||
} | ||
if (res.statusCode != 200) { | ||
var e = new Error(); | ||
e.code = 'BAD_REQUEST'; | ||
return cb(e); | ||
var result = { | ||
text: { | ||
corrected: false, | ||
correction: '', | ||
value: '' | ||
}, | ||
from: { | ||
corrected: false, | ||
iso: '' | ||
} | ||
}; | ||
if (opts.includeRaw) { | ||
result.raw = res.body; | ||
} | ||
var result = ''; | ||
eval(body)[0].forEach(function (obj) { | ||
if (obj[0] != undefined) { | ||
result += obj[0]; | ||
var body = eval(res.body); | ||
body[0].forEach(function (obj) { | ||
if (obj[0] !== undefined) { | ||
result.text.value += obj[0]; | ||
} | ||
}); | ||
cb(null, result); | ||
if (body[2] === body[8][0][0]) { | ||
result.from.iso = body[2]; | ||
} else { | ||
result.from.corrected = true; | ||
result.from.iso = body[8][0][0]; | ||
} | ||
if (body[7] !== undefined) { | ||
var str = body[7][0]; | ||
str = str.replace(/<b><i>/g, '['); | ||
str = str.replace(/<\/i><\/b>/g, ']'); | ||
result.text.corrected = true; | ||
result.text.correction = str; | ||
} | ||
return result; | ||
}).catch(function (err) { | ||
var e; | ||
if (err.statusCode !== undefined && err.statusCode !== 200) { | ||
e = new Error(); | ||
e.code = 'BAD_REQUEST'; | ||
throw e; | ||
} else { | ||
e = new Error(); | ||
e.code = 'BAD_NETWORK'; | ||
throw e; | ||
} | ||
}); | ||
}); | ||
}; | ||
} | ||
module.exports = translate; |
{ | ||
"name": "google-translate-api", | ||
"version": "0.1.1", | ||
"version": "1.0.0", | ||
"description": "A free and unlimited API for Google Translate", | ||
"main": "index.js", | ||
"scripts": { | ||
"test": "echo \"Error: no test specified\" && exit 1" | ||
"test": "xo && ava" | ||
}, | ||
@@ -34,4 +34,17 @@ "repository": { | ||
"configstore": "^2.0.0", | ||
"request": "^2.72.0" | ||
"got": "^6.3.0" | ||
}, | ||
"devDependencies": { | ||
"ava": "^0.14.0", | ||
"xo": "^0.15.1" | ||
}, | ||
"xo": { | ||
"space": 4, | ||
"rules": { | ||
"no-eval": 1 | ||
}, | ||
"ignores": [ | ||
"tk.js" | ||
] | ||
} | ||
} |
@@ -1,2 +0,2 @@ | ||
# google-translate-api | ||
# google-translate-api [![Build Status](https://travis-ci.org/matheuss/vertaler.svg?branch=master)](https://travis-ci.org/matheuss/google-translate-api) [![XO code style](https://img.shields.io/badge/code_style-XO-5ed9c7.svg)](https://github.com/sindresorhus/xo) | ||
A free and unlimited API for Google Translate :dollar::no_entry_sign: |
46
tk.js
@@ -13,3 +13,3 @@ /** | ||
*/ | ||
var request = require('request'), | ||
var got = require('got'), | ||
Configstore = require('configstore'); | ||
@@ -90,15 +90,11 @@ | ||
function updateTKK(cb) { | ||
var now = Math.floor(Date.now() / 3600000); | ||
function updateTKK() { | ||
return new Promise(function (resolve, reject) { | ||
var now = Math.floor(Date.now() / 3600000); | ||
if (Number(window.TKK.split('.')[0]) == now) { | ||
cb(null); | ||
} else { | ||
request.get('https://translate.google.com', function (err, res, body) { | ||
if (err) { | ||
var e = new Error(); | ||
e.code = 'BAD_NETWORK'; | ||
return cb(e); | ||
} else { | ||
var code = body.match(/TKK=(.*?)\(\)\)'\);/g); | ||
if (Number(window.TKK.split('.')[0]) == now) { | ||
resolve(); | ||
} else { | ||
got('https://translate.google.com').then(function (res) { | ||
var code = res.body.match(/TKK=(.*?)\(\)\)'\);/g); | ||
@@ -118,16 +114,20 @@ if (code) { | ||
cb(null); | ||
} | ||
}); | ||
} | ||
resolve(); | ||
}).catch(function (ignored) { | ||
var e = new Error(); | ||
e.code = 'BAD_NETWORK'; | ||
reject(e); | ||
}); | ||
} | ||
}); | ||
} | ||
module.exports = function get(text, cb) { | ||
updateTKK(function (err) { | ||
if (err) return cb(err); | ||
module.exports = function get(text) { | ||
return updateTKK().then(function () { | ||
var tk = sM(text); | ||
tk = tk.replace('&tk=', ''); | ||
cb(null, tk); | ||
return tk; | ||
}).catch(function (err) { | ||
throw err; | ||
}); | ||
}; | ||
}; |
AI detected security risk
Supply chain riskAI has determined that this package may contain potential security issues or vulnerabilities.
Found 1 instance in 1 package
No tests
QualityPackage does not have any tests. This is a strong signal of a poorly maintained or low quality package.
Found 1 instance in 1 package
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
9902
8
217
0
2
2
+ Addedgot@^6.3.0
+ Addedcapture-stack-trace@1.0.2(transitive)
+ Addedcreate-error-class@3.0.2(transitive)
+ Addedduplexer3@0.1.5(transitive)
+ Addedget-stream@3.0.0(transitive)
+ Addedgot@6.7.1(transitive)
+ Addedis-redirect@1.0.0(transitive)
+ Addedis-retry-allowed@1.2.0(transitive)
+ Addedis-stream@1.1.0(transitive)
+ Addedlowercase-keys@1.0.1(transitive)
+ Addedprepend-http@1.0.4(transitive)
+ Addedtimed-out@4.0.1(transitive)
+ Addedunzip-response@2.0.1(transitive)
+ Addedurl-parse-lax@1.0.0(transitive)
- Removedrequest@^2.72.0
- Removedajv@6.12.6(transitive)
- Removedasn1@0.2.6(transitive)
- Removedassert-plus@1.0.0(transitive)
- Removedasynckit@0.4.0(transitive)
- Removedaws-sign2@0.7.0(transitive)
- Removedaws4@1.13.0(transitive)
- Removedbcrypt-pbkdf@1.0.2(transitive)
- Removedcaseless@0.12.0(transitive)
- Removedcombined-stream@1.0.8(transitive)
- Removedcore-util-is@1.0.2(transitive)
- Removeddashdash@1.14.1(transitive)
- Removeddelayed-stream@1.0.0(transitive)
- Removedecc-jsbn@0.1.2(transitive)
- Removedextend@3.0.2(transitive)
- Removedextsprintf@1.3.0(transitive)
- Removedfast-deep-equal@3.1.3(transitive)
- Removedfast-json-stable-stringify@2.1.0(transitive)
- Removedforever-agent@0.6.1(transitive)
- Removedform-data@2.3.3(transitive)
- Removedgetpass@0.1.7(transitive)
- Removedhar-schema@2.0.0(transitive)
- Removedhar-validator@5.1.5(transitive)
- Removedhttp-signature@1.2.0(transitive)
- Removedis-typedarray@1.0.0(transitive)
- Removedisstream@0.1.2(transitive)
- Removedjsbn@0.1.1(transitive)
- Removedjson-schema@0.4.0(transitive)
- Removedjson-schema-traverse@0.4.1(transitive)
- Removedjson-stringify-safe@5.0.1(transitive)
- Removedjsprim@1.4.2(transitive)
- Removedmime-db@1.52.0(transitive)
- Removedmime-types@2.1.35(transitive)
- Removedoauth-sign@0.9.0(transitive)
- Removedperformance-now@2.1.0(transitive)
- Removedpsl@1.9.0(transitive)
- Removedpunycode@2.3.1(transitive)
- Removedqs@6.5.3(transitive)
- Removedrequest@2.88.2(transitive)
- Removedsafer-buffer@2.1.2(transitive)
- Removedsshpk@1.18.0(transitive)
- Removedtough-cookie@2.5.0(transitive)
- Removedtunnel-agent@0.6.0(transitive)
- Removedtweetnacl@0.14.5(transitive)
- Removeduri-js@4.4.1(transitive)
- Removeduuid@3.4.0(transitive)
- Removedverror@1.10.0(transitive)