Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * запускать через nodejs
- * nodejs можно скачать с официального сайта
- *
- * запускать через консоль:
- * node node.js [номер "года"]
- * node node.js 1900
- * если год скачивается с середины:
- * node node.js [номер "года"] [номер сообщения]
- * node node.js 1900 42
- *
- * текущая версия работает через tor+privoxy.
- * proxy можно поменять в коде.
- *
- *
- */
- var proxy="http://127.0.0.1:8118";
- var fs = require('fs')
- var request = require('request');
- var http = require ('http');
- var data={};
- var infa_div1=new Buffer('<div class="infa-text">');
- var infa_div2=new Buffer("</div><div class='infa-procent'>");
- var infaBegin='<div class="infa-text">';
- var infaEnd ='</div>';
- var year=+process.argv[2];
- var from=0;
- if(process.argv[3]){
- from=+process.argv[3];
- }
- var n=from;
- var writer = fs.createWriteStream('infa'+year+'.txt', {flags: 'a'});
- var proxy="http://127.0.0.1:8118";
- var req;
- var inf=function(num,proxy){
- var options={
- 'url':'http://62.76.40.172/infa/'+num,
- 'encoding': 'binary'
- }
- if(proxy){
- options.proxy=proxy;
- }
- options.headers={
- 'Accept': "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
- 'Connection':"keep-alive"
- }
- options.proxy=proxy;
- req=request(options,
- function (error, response, body) {
- if(error){
- inf(year*1E4+n,proxy);
- console.log('restart');
- }
- else{
- body = new Buffer(body, 'binary');
- var startInfa=0;
- var endInfa=0;
- var percentbuf='';
- for(var i=0;i<body.length;i++){
- if(body.slice(i, i+infaBegin.length).toString()==infaBegin){
- startInfa=i+infa_div1.length;
- }
- }
- if(startInfa){
- for(var i=startInfa;i<body.length;i++){
- if(body.slice(i, i+infaEnd.length).toString()==infaEnd){
- endInfa=i;
- break;
- }
- }
- }
- if(endInfa){
- for(var i=endInfa;i<body.length;i++){
- data[num]={};
- data[num].text=body.slice(startInfa,endInfa);
- if(body.slice(i, i+1).toString()=='%'){
- for(var j=1;j<5;j++){
- if(body[i-j]==0x3e){
- data[num].percentbuf=body.slice(i-j+1, i+1);
- }
- }
- break;
- }
- }
- }
- if(data[num]){
- writer.write(num+' ');
- writer.write(data[num].text);
- if(data[num].percentbuf){
- writer.write(new Buffer([0x20,0xC8,0xED,0xF4,0xE0,0x3D]));
- writer.write(data[num].percentbuf);
- writer.write(new Buffer([0x0d,0x0a]));
- }
- } else{
- inf(year*1E4+n,proxy);
- console.log('restart');
- }
- }
- });
- }
- var tick=function(){
- console.log(year,n,year*1E4+n);
- if(data[year*1E4+n]){
- n++;
- if(n>9999) return;
- inf(year*1E4+n,proxy);
- setTimeout(tick,1000);
- } else {
- setTimeout(tick,1000);
- }
- }
- inf(year*1E4+n,proxy);
- setTimeout(tick,1000);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement