function process_ncdex(count,n,baseurl,downloadpath,unzippath,outputpath,logpath,fromd,tod,sn)
{
try{
var mon=count[n].split('-')[0];
var m=count[n].split('-')[1];
var d=count[n].split('-')[2];
var yy=count[n].split('-')[3];
var y=yy.substr(2,2);
var fs = require('fs');
var csv = require('ya-csv');
var async = require('async');
var tempPath = downloadpath+'temp/';
var urlStockinfo = 'http://www.ncdex.com/Downloads/Bhavcopy_Summary_File/Export_csv/'+m+'-'+d+'-'+yy+'.csv';
var fileName = tempPath+m+'-'+d+'-'+yy+".csv";
var fname = m+'-'+d+'-'+yy+".csv";
request
(
{
method: 'GET',
uri: urlStockinfo,
headers: {"User-Agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11",
"Accept-Encoding": "gzip,deflate,sdch",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Cookie": "cookie"
}
},
function(error, response, body)
{
if(response != null)
{
if(response.statusCode != null || response.statusCode != "")
{
if (!error && response.statusCode == 200)
{
Ext.getCmp('pbar3').updateText('Downloading '+fname);
downloadNcdex(200, urlStockinfo, fileName, fname, n,tempPath, outputpath, count, baseurl,downloadpath,unzippath, m, d, yy,logpath,fromd,tod,sn);
}
else
{
downloadNcdex(404, urlStockinfo, fileName, fname, n, tempPath, outputpath, count, baseurl,downloadpath,unzippath, m, d, yy,logpath,fromd,tod,sn);
}
}else
{
downloadNcdex(404, urlStockinfo, fileName, fname, n, tempPath, outputpath, count, baseurl,downloadpath,unzippath, m, d, yy,logpath,fromd,tod,sn);
}
}else
{
downloadNcdex(404, urlStockinfo, fileName, fname, n, tempPath, outputpath, count, baseurl,downloadpath,unzippath, m, d, yy,logpath,fromd,tod,sn);
}
}
);
function downloadNcdex(statuscode, urlStockinfo, fileName, fname, n, tempPath, outputpath, count, baseurl,downloadpath,unzippath, m, d, yy,logpath,fromd,tod,sn)
{
try{
var fs = require('fs');
var csv = require('ya-csv');
var async = require('async');
if(statuscode==200)
{
Ext.getCmp('pbar3').updateText('Downloading '+fname);
var out = fs.createWriteStream(fileName);
var req = request(
{
method: 'GET',
uri: urlStockinfo,
headers:
{
"User-Agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11",
"Accept-Encoding": "gzip,deflate,sdch",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Cookie": "cookie"
}
});
req.on('error',function()
{
Ext.getCmp('pbar3').updateText('Error occured in downloading '+fname);
document.getElementById("om").innerHTML+='<br/>Error occured in downloading '+fname;
addlog(logpath, 'Error occured in downloading '+fname);
process_ncdex(count,n,baseurl,downloadpath,unzippath,outputpath);
});
req.pipe(out);
req.on('end', function()
{
Ext.getCmp('pbar3').updateText('Downloading '+fname+' completed');
document.getElementById("om").innerHTML+='<br>NCDEXfno'+fname+' is downloaded...';
var async = require('async');
async.parallel(
{
data1 : function(callback){
if (fs.existsSync(fileName)) {
Ext.getCmp('pbar3').updateText('Processing '+fname);
fs.readFile(fileName,'utf-8', function(err, data){
if(err){document.getElementById("om").innerHTML+="<br/>"+err;}
callback(err, data);
});
}else
{
fs.readdir(downloadpath, function(err, files){
if(err){document.getElementById("om").innerHTML+="<br/>"+err;}
callback(err,'0');
});
}
}
}, function(err, result)
{
if(err){document.getElementById("om").innerHTML+="<br/>"+err;}
if (fs.existsSync(fileName)) {
Ext.getCmp('pbar3').updateText('Processing '+fname);
var arrRow = new Array();
arrRow = result['data1'].split('\n');
var arrFileData = new Array();
for(var i=0 ; i<arrRow.length;i++)
{
arrRow[i]=arrRow[i].toString().replace(/"/g, '').trim();
arrRow[i]=arrRow[i].toString().replace(/NA/g, '0').trim();
var tempArr = arrRow[i].split(',');
arrFileData.push(tempArr);
}
var header='TICKER,NAME,DATE,OPEN,HIGH,LOW,CLOSE,VOLUME,OPENINT';
var outputpath1=outputpath;
var output_path = outputpath1+'NCDEX_Market_NCDEXfno'+m+''+d+''+yy+'.csv';
if(!fs.existsSync(output_path)){
fs.writeFile(output_path, header+'\n', function (err)
{
if(err){document.getElementById("om").innerHTML+="<br/>An error occured while processing "+fname;}
var dates = new Array();
for(var i=1;i<arrFileData.length-1;i++)
{
if(typeof arrFileData[i][1]!=="undefined" && arrFileData[i][1]!=="" && arrFileData[i][1]!==null && arrFileData[i][1]!= "\"N/A\"" && arrFileData[i][1]!= "N/A" && arrFileData[i][1]!= "NaN" && arrFileData[i][1]!= "undefined")
dates.push(new Date(arrFileData[i][1].replace(/"/g,'').split('/')[2],arrFileData[i][1].replace(/"/g,'').split('/')[1]-1,arrFileData[i][1].replace(/"/g,'').split('/')[0]));
}
function sortDates(a, b)
{
return a.getTime() - b.getTime();
}
var sorted = dates.sort(sortDates);
var m2=sorted[1].getMonth()+1;
var d2=sorted[1].getFullYear()+'/'+m2+'/'+sorted[1].getDate();
for(var i=0; i<sorted.length; i++)
{
}
for(var i=1 ; i<arrFileData.length-1;i++)
{
var arrDate = arrFileData[i][1].split('/');
var strDate = arrDate[2].toString().concat(arrDate[0].toString());
var strTempname = arrFileData[i][2];
var strTempExt = arrFileData[i][3];
var strName = strTempname.trim()+strTempExt.trim()+strDate;
var date1 = new Date(d2);
var date2 = new Date(arrFileData[i][1].replace(/"/g,'').split('/')[2]+'/'+arrFileData[i][1].replace(/"/g,'').split('/')[0]+'/'+arrFileData[i][1].replace(/"/g,'').split('/')[1]);
var m1=monthDiff(date1,date2);
if(m1==0)
{
fs.appendFileSync(output_path, arrFileData[i][0].toString().trim()+'-I'+','+strName.replace(/"/g,'').replace(/\s/g, '')+','+arrFileData[i][15].toString().replace(/NOTRADE/g, '0').trim()+','+arrFileData[i][6]+','+arrFileData[i][7]+','+arrFileData[i][8]+','+arrFileData[i][9]+','+arrFileData[i][10]+','+arrFileData[i][14]+'\n','utf-8', function (err) {
if(err){document.getElementById("om").innerHTML+="<br/>An error occured while processing "+fname;}
});
}
if(m1==1)
{
fs.appendFileSync(output_path, arrFileData[i][0].toString().trim()+'-II'+','+strName.replace(/"/g,'').replace(/\s/g, '')+','+arrFileData[i][15].toString().replace(/NOTRADE/g, '0').trim()+','+arrFileData[i][6]+','+arrFileData[i][7]+','+arrFileData[i][8]+','+arrFileData[i][9]+','+arrFileData[i][10]+','+arrFileData[i][14]+'\n','utf-8', function (err) {
if(err){document.getElementById("om").innerHTML+="<br/>An error occured while processing "+fname;}
});
}
if(m1==2)
{
fs.appendFileSync(output_path, arrFileData[i][0].toString().trim()+'-III'+','+strName.replace(/"/g,'').replace(/\s/g, '')+','+arrFileData[i][15].toString().replace(/NOTRADE/g, '0').trim()+','+arrFileData[i][6]+','+arrFileData[i][7]+','+arrFileData[i][8]+','+arrFileData[i][9]+','+arrFileData[i][10]+','+arrFileData[i][14]+'\n','utf-8', function (err) {
if(err){document.getElementById("om").innerHTML+="<br/>An error occured while processing "+fname;}
});
}
if(m1==3)
{
fs.appendFileSync(output_path, arrFileData[i][0].toString().trim()+'-IV'+','+strName.replace(/"/g,'').replace(/\s/g, '')+','+arrFileData[i][15].toString().replace(/NOTRADE/g, '0').trim()+','+arrFileData[i][6]+','+arrFileData[i][7]+','+arrFileData[i][8]+','+arrFileData[i][9]+','+arrFileData[i][10]+','+arrFileData[i][14]+'\n','utf-8', function (err) {
if(err){document.getElementById("om").innerHTML+="<br/>An error occured while processing "+fname;}
});
}
if(m1==4)
{
fs.appendFileSync(output_path, arrFileData[i][0].toString().trim()+'-V'+','+strName.replace(/"/g,'').replace(/\s/g, '')+','+arrFileData[i][15].toString().replace(/NOTRADE/g, '0').trim()+','+arrFileData[i][6]+','+arrFileData[i][7]+','+arrFileData[i][8]+','+arrFileData[i][9]+','+arrFileData[i][10]+','+arrFileData[i][14]+'\n','utf-8', function (err) {
if(err){document.getElementById("om").innerHTML+="<br/>An error occured while processing "+fname;}
});
}
if(m1==5)
{
fs.appendFileSync(output_path, arrFileData[i][0].toString().trim()+'-VI'+','+strName.replace(/"/g,'').replace(/\s/g, '')+','+arrFileData[i][15].toString().replace(/NOTRADE/g, '0').trim()+','+arrFileData[i][6]+','+arrFileData[i][7]+','+arrFileData[i][8]+','+arrFileData[i][9]+','+arrFileData[i][10]+','+arrFileData[i][14]+'\n','utf-8', function (err) {
if(err){document.getElementById("om").innerHTML+="<br/>An error occured while processing "+fname;}
});
}
if(m1==6)
{
fs.appendFileSync(output_path, arrFileData[i][0].toString().trim()+'-VII'+','+strName.replace(/"/g,'').replace(/\s/g, '')+','+arrFileData[i][15].toString().replace(/NOTRADE/g, '0').trim()+','+arrFileData[i][6]+','+arrFileData[i][7]+','+arrFileData[i][8]+','+arrFileData[i][9]+','+arrFileData[i][10]+','+arrFileData[i][14]+'\n','utf-8', function (err) {
if(err){document.getElementById("om").innerHTML+="<br/>An error occured while processing "+fname;}
});
}
if(m1==7)
{
fs.appendFileSync(output_path, arrFileData[i][0].toString().trim()+'-VIII'+','+strName.replace(/"/g,'').replace(/\s/g, '')+','+arrFileData[i][15].toString().replace(/NOTRADE/g, '0').trim()+','+arrFileData[i][6]+','+arrFileData[i][7]+','+arrFileData[i][8]+','+arrFileData[i][9]+','+arrFileData[i][10]+','+arrFileData[i][14]+'\n','utf-8', function (err) {
if(err){document.getElementById("om").innerHTML+="<br/>An error occured while processing "+fname;}
});
}
if(m1==8)
{
fs.appendFileSync(output_path, arrFileData[i][0].toString().trim()+'-IX'+','+strName.replace(/"/g,'').replace(/\s/g, '')+','+arrFileData[i][15].toString().replace(/NOTRADE/g, '0').trim()+','+arrFileData[i][6]+','+arrFileData[i][7]+','+arrFileData[i][8]+','+arrFileData[i][9]+','+arrFileData[i][10]+','+arrFileData[i][14]+'\n','utf-8', function (err) {
if(err){document.getElementById("om").innerHTML+="<br/>An error occured while processing "+fname;}
});
}
if(m1==9)
{
fs.appendFileSync(output_path, arrFileData[i][0].toString().trim()+'-X'+','+strName.replace(/"/g,'').replace(/\s/g, '')+','+arrFileData[i][15].toString().replace(/NOTRADE/g, '0').trim()+','+arrFileData[i][6]+','+arrFileData[i][7]+','+arrFileData[i][8]+','+arrFileData[i][9]+','+arrFileData[i][10]+','+arrFileData[i][14]+'\n','utf-8', function (err) {
if(err){document.getElementById("om").innerHTML+="<br/>An error occured while processing "+fname;}
});
}
if(m1==10)
{
fs.appendFileSync(output_path, arrFileData[i][0].toString().trim()+'-XI'+','+strName.replace(/"/g,'').replace(/\s/g, '')+','+arrFileData[i][15].toString().replace(/NOTRADE/g, '0').trim()+','+arrFileData[i][6]+','+arrFileData[i][7]+','+arrFileData[i][8]+','+arrFileData[i][9]+','+arrFileData[i][10]+','+arrFileData[i][14]+'\n','utf-8', function (err) {
if(err){document.getElementById("om").innerHTML+="<br/>An error occured while processing "+fname;}
});
}
if(m1==11)
{
fs.appendFileSync(output_path, arrFileData[i][0].toString().trim()+'-XII'+','+strName.replace(/"/g,'').replace(/\s/g, '')+','+arrFileData[i][15].toString().replace(/NOTRADE/g, '0').trim()+','+arrFileData[i][6]+','+arrFileData[i][7]+','+arrFileData[i][8]+','+arrFileData[i][9]+','+arrFileData[i][10]+','+arrFileData[i][14]+'\n','utf-8', function (err) {
if(err){document.getElementById("om").innerHTML+="<br/>An error occured while processing "+fname;}
});
}
if(m1==12)
{
fs.appendFileSync(output_path, arrFileData[i][0].toString().trim()+'-XIII'+','+strName.replace(/"/g,'').replace(/\s/g, '')+','+arrFileData[i][15].toString().replace(/NOTRADE/g, '0').trim()+','+arrFileData[i][6]+','+arrFileData[i][7]+','+arrFileData[i][8]+','+arrFileData[i][9]+','+arrFileData[i][10]+','+arrFileData[i][14]+'\n','utf-8', function (err) {
if(err){document.getElementById("om").innerHTML+="<br/>An error occured while processing "+fname;}
});
}
if(m1==13)
{
fs.appendFileSync(output_path, arrFileData[i][0].toString().trim()+'-XIV'+','+strName.replace(/"/g,'').replace(/\s/g, '')+','+arrFileData[i][15].toString().replace(/NOTRADE/g, '0').trim()+','+arrFileData[i][6]+','+arrFileData[i][7]+','+arrFileData[i][8]+','+arrFileData[i][9]+','+arrFileData[i][10]+','+arrFileData[i][14]+'\n','utf-8', function (err) {
if(err){document.getElementById("om").innerHTML+="<br/>An error occured while processing "+fname;}
});
}
if(m1==14)
{
fs.appendFileSync(output_path, arrFileData[i][0].toString().trim()+'-XV'+','+strName.replace(/"/g,'').replace(/\s/g, '')+','+arrFileData[i][15].toString().replace(/NOTRADE/g, '0').trim()+','+arrFileData[i][6]+','+arrFileData[i][7]+','+arrFileData[i][8]+','+arrFileData[i][9]+','+arrFileData[i][10]+','+arrFileData[i][14]+'\n','utf-8', function (err) {
if(err){document.getElementById("om").innerHTML+="<br/>An error occured while processing "+fname;}
});
}
if(m==15)
{
fs.appendFileSync(output_path, arrFileData[i][0].toString().trim()+'-XVI'+','+strName.replace(/"/g,'').replace(/\s/g, '')+','+arrFileData[i][15].toString().replace(/NOTRADE/g, '0').trim()+','+arrFileData[i][6]+','+arrFileData[i][7]+','+arrFileData[i][8]+','+arrFileData[i][9]+','+arrFileData[i][10]+','+arrFileData[i][14]+'\n','utf-8', function (err) {
if(err){document.getElementById("om").innerHTML+="<br/>An error occured while processing "+fname;}
});
}
}
});
}
}
Ext.getCmp('pbar3').updateText('Processing '+fname+' completed');
document.getElementById("om").innerHTML+='<br>NCDEXfno'+fname+' is processed...';
n++;
if(count.length>n)
{
loadprogressbar();
setTimeout(function(){process_ncdex(count,n,baseurl,downloadpath,unzippath,outputpath,logpath,fromd,tod,sn);},1000);
}else
{
Ext.getCmp('pbar3').updateProgress(0);
visit('ncdex.html');
sn++;
callfun(count,baseurl,downloadpath,unzippath,outputpath,logpath,fromd,tod,sn);
}
});
});
}
else
{
document.getElementById("om").innerHTML+='<br/><font color=red>'+fname+' is not present on server</font>';
addlog(logpath, fname+' is not present on server');
n++;
if(count.length>n)
{
loadprogressbar();
setTimeout(function(){process_ncdex(count,n,baseurl,downloadpath,unzippath,outputpath,logpath,fromd,tod,sn);},1000);
}else
{
Ext.getCmp('pbar3').updateProgress(0);
visit('ncdex.html');
sn++;
callfun(count,baseurl,downloadpath,unzippath,outputpath,logpath,fromd,tod,sn);
}
}
}catch(err)
{
document.getElementById("om").innerHTML+="<br/>An error occured while processing "+fname;
n++;
if(count.length>n)
{
loadprogressbar();
setTimeout(function(){process_ncdex(count,n,baseurl,downloadpath,unzippath,outputpath,logpath,fromd,tod,sn);},1000);
}else
{
Ext.getCmp('pbar3').updateProgress(0);
visit('ncdex.html');
sn++;
callfun(count,baseurl,downloadpath,unzippath,outputpath,logpath,fromd,tod,sn);
}
}
}
}catch(err)
{
console.log(err);
}
}
function monthDiff(d1, d2) {
try
{
var months;
months = (d2.getFullYear() - d1.getFullYear()) * 12;
months -= d1.getMonth() + 1;
months += d2.getMonth();
return months+1;
}catch(err)
{
console.log(err);
}
}