crawler-js
Advanced tools
Comparing version 0.0.13 to 0.0.14
readCsv = function(font,url,config){ | ||
var file = './' + font[font['type']+'Attributes'][font[font['type']+'CurrentEntry']]['file']; | ||
var stream = fs.createReadStream(file); | ||
var first = 1; | ||
stream.on('data', onData).buffer = ''; | ||
@@ -8,5 +9,5 @@ | ||
var i, hasData = Buffer.isBuffer(chunk); | ||
if (hasData){ | ||
if(hasData){ | ||
stream.buffer += chunk.toString('utf8'); | ||
if (stream.paused) | ||
if(stream.paused) | ||
return; | ||
@@ -19,3 +20,3 @@ } | ||
stream.paused = true; | ||
onLine(font, url, config, line, onData); | ||
onLine(font, url, config, line, onData, first); | ||
} else if (!hasData) { | ||
@@ -27,2 +28,8 @@ stream.resume(); | ||
function onLine(font, url, config, line, cb){ | ||
if(first == 1){ | ||
first = 0; | ||
var interval = 0; | ||
}else{ | ||
var interval = font[font['type']+'Attributes'][font[font['type']+'CurrentEntry']]['interval']; | ||
} | ||
setTimeout(function(){ | ||
@@ -36,3 +43,3 @@ line = line.replace('\r','').replace(/^"(.+(?="$))"$/, '$1'); | ||
cb(); | ||
}, parseInt(font.interval/font.limiter)); | ||
}, interval); | ||
} | ||
@@ -49,5 +56,6 @@ } | ||
} | ||
if(typeof font['encode'+font['type']] != 'undefined'){ | ||
if(typeof font['encode'+font['type']] == 'undefined'){ | ||
row[data] = encodeURIComponent(row[data]); | ||
} | ||
console.log(font[font['type']+'Attributes']); | ||
url[font['type']] = font[font['type']].replace(font[font['type']+'Attributes'][font[font['type']+'CurrentEntry']]['parameter'], row[data]); | ||
@@ -54,0 +62,0 @@ var fontTemp = clone(font); |
@@ -47,15 +47,9 @@ CrawlerJS = function(font,config){ | ||
getAttributes = function(entry){ | ||
var csv = /\[csv:[^:]{0,}:[^:]{0,}:(.[0-9]{0,10}?):(.[0-9]{0,10}?)\]/gim; | ||
var mongodb = /\[mongodb:[^:]{0,}:[^:]{0,}:[^:]{0,}\]/gim; | ||
var words = /\[words:\[[^\]]{0,}\]\]/gim; | ||
var numbers = /\[numbers:(.[0-9]{0,10}?):(.[0-9]{0,10}?):(.[0-9]{0,10}?)\]/gim; | ||
var letters = /\[letters:(.[0-9]{0,}?)\]/gim; | ||
var csv = /\[csv:(.*?){0,}:(.*?){0,}:(.[0-9]{0,10}?):(.[0-9]{0,10}?)\]/gim; | ||
var mongodb = /\[mongodb:(.[\w]{0,}?):(.[\w]{0,}?):(.[\w]{0,}?)\]/gim; | ||
var words = /\[words:\[(.*?){0,}\]\]/gim; | ||
var types = []; | ||
if(csv.test(entry) == true){ | ||
var types = types.concat(entry.match(csv)); | ||
} | ||
if(mongodb.test(entry) == true){ | ||
var types = types.concat(entry.match(mongodb)); | ||
} | ||
if(words.test(entry) == true){ | ||
@@ -70,2 +64,8 @@ var types = types.concat(entry.match(words)); | ||
} | ||
if(mongodb.test(entry) == true){ | ||
var types = types.concat(entry.match(mongodb)); | ||
} | ||
if(csv.test(entry) == true){ | ||
var types = types.concat(entry.match(csv)); | ||
} | ||
@@ -82,15 +82,24 @@ var allAttributes = []; | ||
if(attribute[0] == 'numbers'){ | ||
if(attribute[0] == 'words'){ | ||
attribute = attribute.splice(1); | ||
attributes['init'] = 0; | ||
attributes['words'] = attribute; | ||
attributes['total'] = attribute.length-1; | ||
} | ||
else if(attribute[0] == 'numbers'){ | ||
attributes['init'] = parseInt(attribute[1]); | ||
attributes['size'] = parseInt(attribute[2]); | ||
attributes['diff'] = parseInt(attribute[3]); | ||
attributes['position'] = parseInt(attribute[1]); | ||
attributes['total'] = parseInt((attributes['size']-attributes['init'])/attributes['diff']); | ||
} | ||
else if(attribute[0] == 'letters'){ | ||
attributes['init'] = 0; | ||
attributes['size'] = parseInt(attribute[1]); | ||
attributes['position'] = 0; | ||
attributes['letters'] = lettersCombinations(parseInt(attribute[1])); | ||
attributes['size'] = attributes['letters'].length-1; | ||
attributes['total'] = attributes['letters'].length-1; | ||
} | ||
else if(attribute[0] == 'mongodb'){ | ||
attributes['collection'] =attribute[1]; | ||
attributes['key'] = attribute[2]; | ||
attributes['id'] = attribute[3]; | ||
} | ||
else if(attribute[0] == 'csv'){ | ||
@@ -101,19 +110,18 @@ attributes['file'] = attribute[1]; | ||
attributes['csvId'] = attribute[4]; | ||
attributes['position'] = 0; | ||
attributes['size'] = 1; | ||
attributes['total'] = 0; | ||
fs.createReadStream(attributes['file']) | ||
.on('data',function(chunk){ | ||
for(var i=0; i < chunk.length; ++i){ | ||
if(chunk[i] == 10){attributes['total']++}; | ||
} | ||
}) | ||
} | ||
if(attribute[0] == 'mongodb'){ | ||
attributes['collection'] =attribute[1]; | ||
attributes['key'] = attribute[2]; | ||
attributes['id'] = attribute[3]; | ||
} | ||
else if(attribute[0] == 'words'){ | ||
attribute = attribute.splice(1); | ||
attributes['init'] = 0; | ||
attributes['words'] = attribute; | ||
attributes['position'] = 1; | ||
attributes['size'] = attribute.length-1; | ||
} | ||
if(attributes['total'] == 0){attributes['total']=1;} | ||
attributes['first']=1; | ||
allAttributes[n] = attributes; | ||
} | ||
return allAttributes; | ||
@@ -124,64 +132,26 @@ } | ||
if(typeof font[font['type']+'Attributes'][font[font['type']+'CurrentEntry']] !== 'undefined'){ | ||
if(font[font['type']+'Attributes'][font[font['type']+'CurrentEntry']]['name'] == 'numbers'){ | ||
var count = 0; | ||
for(i=font[font['type']+'Attributes'][font[font['type']+'CurrentEntry']]['init']; i<=font[font['type']+'Attributes'][font[font['type']+'CurrentEntry']]['size']; i=i+font[font['type']+'Attributes'][font[font['type']+'CurrentEntry']]['diff']){ | ||
url[font['type']] = font[font['type']].replace(font[font['type']+'Attributes'][font[font['type']+'CurrentEntry']]['parameter'],i); | ||
var fontTemp = clone(font); | ||
if(count == font.limiter){ | ||
fontTemp[font['type']+'Attributes'][font[font['type']+'CurrentEntry']]['init'] = i+font[font['type']+'Attributes'][font[font['type']+'CurrentEntry']]['diff']; | ||
setTimeout(function(){getEntry(fontTemp,url,config)}, fontTemp.interval); | ||
break; | ||
}else{ | ||
fontTemp[font['type']+'CurrentEntry']++; | ||
fontTemp[font['type']] = url[font['type']]; | ||
getEntry(fontTemp,url,config); | ||
} | ||
count++; | ||
for(var c = font[font['type']+'Attributes'].length-1; c>=0; c--){ | ||
if(c == font[font['type']+'Attributes'].length-1){ | ||
font[font['type']+'Attributes'][c]['interval'] = font.interval; | ||
}else{ | ||
font[font['type']+'Attributes'][c]['interval'] = font[font['type']+'Attributes'][c+1]['interval']*(font[font['type']+'Attributes'][c+1]['total']+1); | ||
} | ||
} | ||
else if(font[font['type']+'Attributes'][font[font['type']+'CurrentEntry']]['name'] == 'letters'){ | ||
var count = 0; | ||
for(var i=font[font['type']+'Attributes'][font[font['type']+'CurrentEntry']]['init']; i<font[font['type']+'Attributes'][font[font['type']+'CurrentEntry']]['letters'].length; i++){ | ||
url[font['type']] = font[font['type']].replace(font[font['type']+'Attributes'][font[font['type']+'CurrentEntry']]['parameter'],font[font['type']+'Attributes'][font[font['type']+'CurrentEntry']]['letters'][i]); | ||
var fontTemp = clone(font); | ||
if(count == font.limiter){ | ||
fontTemp[font['type']+'Attributes'][font[font['type']+'CurrentEntry']]['init'] = i; | ||
setTimeout(function(){getEntry(fontTemp,url,config)}, fontTemp.interval); | ||
break; | ||
}else{ | ||
fontTemp[font['type']+'CurrentEntry']++; | ||
fontTemp[font['type']] = url[font['type']]; | ||
getEntry(fontTemp,url,config); | ||
} | ||
count++; | ||
} | ||
var count = 0; | ||
if(font[font['type']+'Attributes'][font[font['type']+'CurrentEntry']]['first'] == 1){ | ||
font[font['type']+'Attributes'][font[font['type']+'CurrentEntry']]['first'] = 0; | ||
getTypeUrl(font,url,config); | ||
count++; | ||
} | ||
else if(font[font['type']+'Attributes'][font[font['type']+'CurrentEntry']]['name'] == 'words'){ | ||
var count = 0; | ||
for(var i=font[font['type']+'Attributes'][font[font['type']+'CurrentEntry']]['init']; i<font[font['type']+'Attributes'][font[font['type']+'CurrentEntry']]['words'].length; i++){ | ||
if(typeof font['encode'+font['type']] != 'undefined'){ | ||
var urlTemp = encodeURIComponent(font[font['type']+'Attributes'][font[font['type']+'CurrentEntry']]['words'][i]); | ||
}else{ | ||
var urlTemp = font[font['type']+'Attributes'][font[font['type']+'CurrentEntry']]['words'][i]; | ||
} | ||
url[font['type']] = font[font['type']].replace(font[font['type']+'Attributes'][font[font['type']+'CurrentEntry']]['parameter'],urlTemp); | ||
var fontTemp = clone(font); | ||
if(count == font.limiter){ | ||
fontTemp[font['type']+'Attributes'][font[font['type']+'CurrentEntry']]['init'] = i; | ||
setTimeout(function(){getEntry(fontTemp,url,config)}, fontTemp.interval); | ||
break; | ||
}else{ | ||
fontTemp[font['type']+'CurrentEntry']++; | ||
fontTemp[font['type']] = url[font['type']]; | ||
getEntry(fontTemp,url,config); | ||
} | ||
count++; | ||
var i = setInterval(function(){ | ||
getTypeUrl(font,url,config); | ||
count++; | ||
if(count > font[font['type']+'Attributes'][font[font['type']+'CurrentEntry']]['total']){ | ||
clearInterval(i); | ||
} | ||
} | ||
else if(font[font['type']+'Attributes'][font[font['type']+'CurrentEntry']]['name'] == 'csv'){ | ||
readCsv(font,url,config); | ||
} | ||
else if(font[font['type']+'Attributes'][font[font['type']+'CurrentEntry']]['name'] == 'mongodb'){ | ||
readMongodb(font,url,config); | ||
} | ||
}, font[font['type']+'Attributes'][font[font['type']+'CurrentEntry']]['interval']); | ||
}else{ | ||
@@ -205,12 +175,50 @@ if(font[font['type']+'Attributes'].length == 0){ | ||
clone = function(obj){ | ||
if(obj === null || typeof obj !== 'object'){ | ||
return obj; | ||
getTypeUrl = function(font,url,config){ | ||
if(font[font['type']+'Attributes'][font[font['type']+'CurrentEntry']]['name'] == 'words'){ | ||
words(font,url,config); | ||
} | ||
else if(font[font['type']+'Attributes'][font[font['type']+'CurrentEntry']]['name'] == 'numbers'){ | ||
numbers(font,url,config); | ||
} | ||
else if(font[font['type']+'Attributes'][font[font['type']+'CurrentEntry']]['name'] == 'letters'){ | ||
letters(font,url,config); | ||
} | ||
else if(font[font['type']+'Attributes'][font[font['type']+'CurrentEntry']]['name'] == 'mongodb'){ | ||
readMongodb(font,url,config); | ||
} | ||
else if(font[font['type']+'Attributes'][font[font['type']+'CurrentEntry']]['name'] == 'csv'){ | ||
readCsv(font,url,config); | ||
} | ||
} | ||
numbers = function(font,url,config){ | ||
url[font['type']] = font[font['type']].replace(font[font['type']+'Attributes'][font[font['type']+'CurrentEntry']]['parameter'],font[font['type']+'Attributes'][font[font['type']+'CurrentEntry']]['init']); | ||
font[font['type']+'Attributes'][font[font['type']+'CurrentEntry']]['init'] = font[font['type']+'Attributes'][font[font['type']+'CurrentEntry']]['init']+font[font['type']+'Attributes'][font[font['type']+'CurrentEntry']]['diff']; | ||
var fontTemp = clone(font); | ||
fontTemp[font['type']+'CurrentEntry']++; | ||
fontTemp[font['type']] = url[font['type']]; | ||
getEntry(fontTemp,url,config); | ||
} | ||
letters = function(font,url,config){ | ||
url[font['type']] = font[font['type']].replace(font[font['type']+'Attributes'][font[font['type']+'CurrentEntry']]['parameter'],font[font['type']+'Attributes'][font[font['type']+'CurrentEntry']]['letters'][font[font['type']+'Attributes'][font[font['type']+'CurrentEntry']]['init']]); | ||
font[font['type']+'Attributes'][font[font['type']+'CurrentEntry']]['init'] = font[font['type']+'Attributes'][font[font['type']+'CurrentEntry']]['init']+1; | ||
var fontTemp = clone(font); | ||
fontTemp[font['type']+'CurrentEntry']++; | ||
fontTemp[font['type']] = url[font['type']]; | ||
getEntry(fontTemp,url,config); | ||
} | ||
words = function(font,url,config){ | ||
if(typeof font['encode'+font['type']] != 'undefined' && font['encode'+font['type']] == 0){ | ||
var urlTemp = font[font['type']+'Attributes'][font[font['type']+'CurrentEntry']]['words'][font[font['type']+'Attributes'][font[font['type']+'CurrentEntry']]['init']]; | ||
}else{ | ||
var temp = obj.constructor(); | ||
for(var key in obj){ | ||
temp[key] = clone(obj[key]); | ||
} | ||
return temp; | ||
var urlTemp = encodeURIComponent(font[font['type']+'Attributes'][font[font['type']+'CurrentEntry']]['words'][font[font['type']+'Attributes'][font[font['type']+'CurrentEntry']]['init']]); | ||
} | ||
url[font['type']] = font[font['type']].replace(font[font['type']+'Attributes'][font[font['type']+'CurrentEntry']]['parameter'],urlTemp); | ||
font[font['type']+'Attributes'][font[font['type']+'CurrentEntry']]['init'] = font[font['type']+'Attributes'][font[font['type']+'CurrentEntry']]['init']+1; | ||
var fontTemp = clone(font); | ||
fontTemp[font['type']+'CurrentEntry']++; | ||
fontTemp[font['type']] = url[font['type']]; | ||
getEntry(fontTemp,url,config); | ||
} | ||
@@ -217,0 +225,0 @@ |
@@ -21,2 +21,14 @@ getUrlParams = function(qs){ | ||
return mask.replace(/[xy]/g, function(c) {var r = Math.random()*16|0,v=c=='x'?r:r&0x3|0x8;return v.toString(16);}); | ||
} | ||
} | ||
clone = function(obj){ | ||
if(obj === null || typeof obj !== 'object'){ | ||
return obj; | ||
}else{ | ||
var temp = obj.constructor(); | ||
for(var key in obj){ | ||
temp[key] = clone(obj[key]); | ||
} | ||
return temp; | ||
} | ||
} |
@@ -5,3 +5,3 @@ { | ||
"homepage" : "http://crawlerjs.org", | ||
"version": "0.0.13", | ||
"version": "0.0.14", | ||
"keywords": [ | ||
@@ -8,0 +8,0 @@ "crawler", |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
660558
18
1010