function process_yahooeod(count,baseurl,downloadpath,unzippath,outputpath,logpath,fromd,tod,sn)
{
var url = require('url');
var async = require('async');
var http = require('http'),fs = require('fs'),AdmZip = require('adm-zip'),request = require('request');
var csv = require('ya-csv');
var datefrom=fromd;
var dateto=tod;
async.parallel({
data1 : function(callback){
if (fs.existsSync('yahoo.csv')) {
fs.readFile('yahoo.csv','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('yahoo.csv'))
{
var arrRow = new Array();
arrRow = result['data1'].split('\n');
if(arrRow.length>0)
{
var arrFileData = new Array();
for(var i=0 ; i<arrRow.length-1;i++)
{
var tempArr = arrRow[i].split(',');
arrFileData.push(tempArr);
}
var tempPath = downloadpath+'temp_yahoo/';
if(arrFileData.length > 0)
{
downloadAndProcessYahoo(arrFileData, 0, datefrom, dateto,tempPath, outputpath);
}else
{
document.getElementById("om").innerHTML+="<br/><font color=lightcoral>Please add yahoo symbols to download yahoo data</font>";
sn++;
callfun(count,baseurl,downloadpath,unzippath,outputpath,logpath,fromd,tod,sn);
}
}
else
{
document.getElementById("om").innerHTML+="<br/><font color=lightcoral>Please add yahoo symbols to download yahoo data</font>";
sn++;
callfun(count,baseurl,downloadpath,unzippath,outputpath,logpath,fromd,tod,sn);
}
}
else
{
document.getElementById("om").innerHTML+="<br/><font color=lightcoral>Please add yahoo symbols to download yahoo data</font>";
sn++;
callfun(count,baseurl,downloadpath,unzippath,outputpath,logpath,fromd,tod,sn);
}
})
function downloadAndProcessYahoo(arrSymbol, n, stDateFormate, endDateFormate, tempPath, outputpath)
{
var stmonth = parseInt(stDateFormate.split('/')[0].toString()) - 1 ;
if(stmonth < 10)
stmonth = '0'+stmonth;
var stdate = parseInt(stDateFormate.split('/')[1].toString());
if(stdate < 10)
stdate = '0'+stdate;
var endmonth = parseInt(endDateFormate.split('/')[0].toString()) - 1 ;
if(endmonth < 10)
endmonth = '0'+endmonth;
var enddate = parseInt(endDateFormate.split('/')[1].toString());
if(enddate < 10)
enddate = '0'+enddate;
var urlStockinfo = 'http://ichart.yahoo.com/table.csv?s='+arrSymbol[n][0].toString().trim()+'&a='+stmonth+'&b='+stdate+'&c='+stDateFormate.split('/')[2].toString()+'&d='+endmonth+'&e='+enddate+'&f='+endDateFormate.split('/')[2].toString()+'&g=d&ignore=.csv';
var fileName = tempPath+"temp_"+arrSymbol[n][0].toString().trim()+".csv";
var fname = "temp_"+arrSymbol[n][0]+".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",
"Referer": "http://ichart.yahoo.com/table.csv?s=",
"Accept-Encoding": "csv",
"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)
{
downloadIndexData(200, urlStockinfo, fileName, fname, arrSymbol ,n, stDateFormate, endDateFormate, tempPath, outputpath);
}
else
{
downloadIndexData(404, urlStockinfo, fileName, fname, arrSymbol, n, stDateFormate, endDateFormate, tempPath, outputpath);
}
}else
{
downloadIndexData(404, urlStockinfo, fileName, fname, arrSymbol, n, stDateFormate, endDateFormate, tempPath, outputpath);
}
}else
{
downloadIndexData(404, urlStockinfo, fileName, fname, arrSymbol, n, stDateFormate, endDateFormate, tempPath, outputpath);
}
});
}
function downloadIndexData(statuscode, urlStockinfo, fileName, fname, ind, n, stDateFormate, endDateFormate, tempPath, outputpath)
{
if(statuscode == 200)
{
var fs=require('fs')
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",
"Referer": "http://ichart.yahoo.com/table.csv?s=",
"Accept-Encoding": "csv",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Cookie": "cookie"
}
});
req.on('error',function()
{
document.getElementById("om").innerHTML+='<br/>Error occured in downloading '+fname;
downloadAndProcessYahoo(ind, n, stDateFormate, endDateFormate, tempPath);
});
req.pipe(out);
req.on('end', function()
{
Ext.getCmp('pbar3').updateText(fileName.split("/")[fileName.split("/").length-1]+' downloaded...');
document.getElementById("om").innerHTML+="<br/>"+fileName.split('/')[fileName.split('/').length-1]+" downloaded...";
stpro();
});
function stpro(){
var async = require('async');
async.parallel(
{
data1 : function(callback){
if (fs.existsSync(fileName)) {
fs.readFile(fileName,'utf-8', function(err, data){
if(err){
document.getElementById("om").innerHTML+="<br/>"+err;
}
callback(err, data);
});
}else
{
fs.readdir(outputpath, function(err, files){
if(err){
document.getElementById("om").innerHTML+="<br/>"+err;
}
callback(err,'0');
});
}
}
}, function(err, result)
{
var sym=ind[n][0],name=ind[n][1];
if(err){
document.getElementById("om").innerHTML+="<br/>"+err;
}
if (fs.existsSync(fileName))
{
var arrRow = new Array();
arrRow = result['data1'].split('\n');
var arrFileData = new Array();
for(var i=1 ; i<arrRow.length;i++)
{
var tempArr = arrRow[i].split(',');
arrFileData.push(tempArr);
}
var output_filename = outputpath+'yahoo_eod.csv';
if(fs.existsSync(output_filename))
{
for(i=0;i <arrFileData.length-1;i++)
{
var arrYeodDate = arrFileData[i][0].split('-');
fs.appendFileSync(output_filename, sym+','+name+','+arrYeodDate[0]+arrYeodDate[1]+arrYeodDate[2]+','+arrFileData[i][1]+','+arrFileData[i][2]+','+arrFileData[i][3]+','+arrFileData[i][4]+','+arrFileData[i][5]+','+'0'+'\n','utf-8', function(err){
if(err) throw err;
});
}
}
else
{
var header='TICKER,NAME,DATE,OPEN,HIGH,LOW,CLOSE,VOLUME,OPENINT';
fs.writeFile(output_filename, header+'\n', function (err)
{
for(i=0;i <arrFileData.length-1;i++)
{
var arrYeodDate = arrFileData[i][0].split('-');
fs.appendFileSync(output_filename, sym+','+name+','+arrYeodDate[0]+arrYeodDate[1]+arrYeodDate[2]+','+arrFileData[i][1]+','+arrFileData[i][2]+','+arrFileData[i][3]+','+arrFileData[i][4]+','+arrFileData[i][5]+','+'0'+'\n','utf-8', function(err){
if(err) throw err;
});
}
});
}
}
Ext.getCmp('pbar3').updateText('Processing yahoo_eod.csv completed');
document.getElementById("om").innerHTML+='<br/>Processing yahoo_eod.csv completed';
n++;
if(ind.length>n)
{
loadprogressbar();
setTimeout(function (){
downloadAndProcessYahoo(ind, n, stDateFormate, endDateFormate, tempPath, outputpath);
},1000);
}else
{
visit('yahooeod.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>';
n++;
if(ind.length>n)
{
loadprogressbar();
setTimeout(function (){
downloadAndProcessYahoo(ind, n, stDateFormate, endDateFormate, tempPath, outputpath);
},1000);
}else
{
sn++;
callfun(count,baseurl,downloadpath,unzippath,outputpath,logpath,fromd,tod,sn);
}
}
}
}
function getDate(date)
{
if(parseInt(date) < 10)
{
var strDate = '0'+date;
return strDate;
}
return date;
}
function getMonth(mon){
switch(mon)
{
case 'January':
mon='01';
break;
case 'February':
mon='02';
break;
case 'March':
mon='03';
break;
case 'April':
mon='04';
break;
case 'May':
mon='5';
break;
case 'June':
mon='06';
break;
case 'July':
mon='07';
break;
case 'August':
mon='08';
break;
case 'September':
mon='09';
break;
case 'October':
mon='10';
break;
case 'November':
mon='11';
break;
case 'December':
mon='12';
break;
}
return mon;
}