Advertisement
Guest User

инфакачалка

a guest
Nov 23rd, 2014
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*
  2.  * запускать через nodejs
  3.  * nodejs можно скачать с официального сайта
  4.  *
  5.  * запускать через консоль:
  6.  * node node.js [номер "года"]
  7.  * node node.js 1900
  8.  * если год скачивается с середины:
  9.  * node node.js [номер "года"] [номер сообщения]
  10.  * node node.js 1900 42
  11.  *
  12.  * текущая версия работает через tor+privoxy.
  13.  * proxy можно поменять в коде.
  14.  *
  15.  *
  16.  */
  17.  
  18. var proxy="http://127.0.0.1:8118";
  19.  
  20.  
  21. var fs = require('fs')
  22. var request = require('request');
  23. var http = require ('http');
  24.  
  25.  
  26. var data={};
  27.  
  28. var infa_div1=new Buffer('<div class="infa-text">');
  29. var infa_div2=new Buffer("</div><div class='infa-procent'>");
  30. var infaBegin='<div class="infa-text">';
  31. var infaEnd  ='</div>';
  32.  
  33. var year=+process.argv[2];
  34. var from=0;
  35. if(process.argv[3]){
  36.   from=+process.argv[3];
  37.  
  38.  
  39. }
  40. var n=from;
  41.  
  42.  
  43. var writer = fs.createWriteStream('infa'+year+'.txt', {flags: 'a'});
  44. var proxy="http://127.0.0.1:8118";
  45.  
  46.  
  47. var req;
  48.  
  49. var inf=function(num,proxy){
  50.     var options={
  51.         'url':'http://62.76.40.172/infa/'+num,
  52.             'encoding': 'binary'
  53.         }
  54.         if(proxy){
  55.       options.proxy=proxy;
  56.     }
  57.        
  58.         options.headers={
  59.       'Accept': "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
  60.       'Connection':"keep-alive"
  61.     }
  62.  
  63.         options.proxy=proxy;
  64.     req=request(options,
  65.      function (error, response, body) {
  66.        if(error){
  67.          inf(year*1E4+n,proxy);
  68.          console.log('restart');
  69.       }
  70.       else{
  71.                 body = new Buffer(body, 'binary');
  72.                 var startInfa=0;
  73.                 var endInfa=0;
  74.                 var percentbuf='';
  75.  
  76.                 for(var i=0;i<body.length;i++){
  77.                     if(body.slice(i, i+infaBegin.length).toString()==infaBegin){
  78.                         startInfa=i+infa_div1.length;
  79.                     }
  80.                 }
  81.                 if(startInfa){
  82.                     for(var i=startInfa;i<body.length;i++){
  83.                         if(body.slice(i, i+infaEnd.length).toString()==infaEnd){
  84.                             endInfa=i;
  85.                             break;
  86.                         }
  87.                         }
  88.                 }
  89.                 if(endInfa){
  90.                     for(var i=endInfa;i<body.length;i++){
  91.                         data[num]={};
  92.                         data[num].text=body.slice(startInfa,endInfa);
  93.                         if(body.slice(i, i+1).toString()=='%'){
  94.                             for(var j=1;j<5;j++){
  95.                                 if(body[i-j]==0x3e){
  96.                                     data[num].percentbuf=body.slice(i-j+1, i+1);
  97.                                 }
  98.                             }
  99.                             break;
  100.                         }
  101.                         }
  102.                 }
  103.                 if(data[num]){
  104.                 writer.write(num+' ');
  105.                 writer.write(data[num].text);
  106.             if(data[num].percentbuf){
  107.               writer.write(new Buffer([0x20,0xC8,0xED,0xF4,0xE0,0x3D]));
  108.                   writer.write(data[num].percentbuf);
  109.                   writer.write(new Buffer([0x0d,0x0a]));
  110.             }
  111.             } else{
  112.               inf(year*1E4+n,proxy);
  113.               console.log('restart');
  114.             }
  115.           }
  116.         });
  117. }
  118.  
  119.  
  120.  
  121. var tick=function(){
  122.         console.log(year,n,year*1E4+n);
  123.     if(data[year*1E4+n]){
  124.         n++;
  125.         if(n>9999) return;
  126.         inf(year*1E4+n,proxy);
  127.         setTimeout(tick,1000);
  128.     } else {
  129.     setTimeout(tick,1000);
  130.     }
  131. }
  132.  
  133. inf(year*1E4+n,proxy);
  134. setTimeout(tick,1000);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement