Advertisement
Guest User

Xenforo CasperJS Autolike Thread

a guest
Jan 19th, 2013
571
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var colorizer = require('colorizer').create('Colorizer');
  2. var casper = require('casper').create({
  3.   pageSettings: {
  4.     loadImages:  false,
  5.     loadPlugins: false
  6.   }
  7. });
  8.  
  9. var xenforoUrl = ''; //fill with your own
  10. var user = {
  11.   'name': '', //fill with your own
  12.   'password': '' //fill with your own
  13. };
  14. var threadUrl = ''; //fill with your own
  15.  
  16. casper.start(xenforoUrl, function() {
  17.      console.log(colorizer.format(xenforoUrl,
  18.         {bg: 'black', fg: 'white', bold: true}
  19.      ));
  20. });
  21.  
  22. casper.on('remote.message', function(msg) {
  23.     var ignoreRegExs = [
  24.      /^XenForo/,
  25.      /^Unsafe JavaScript attempt to access frame/,
  26.      /^FB.getLoginStatus/,
  27.      /^flash url/,
  28.      /^Attachments/,
  29.      /^PageNav/
  30.     ];
  31.     var ignore = false;
  32.    
  33.     this.each(ignoreRegExs, function(self, RegEx) {
  34.         if(RegEx.test(msg)){
  35.             ignore = true;
  36.         }
  37.     });
  38.    
  39.     if (!ignore) {
  40.         this.echo('[remote] ' + msg);
  41.     }
  42. });
  43.  
  44. casper.waitFor(function check() {
  45.     return this.evaluate(function() {
  46.         return $('label[for=LoginControl]').click();
  47.     });
  48. }, function then(){
  49.         this.evaluate(function(user) {
  50.             $('input#LoginControl').val(user.name);
  51.             $('input#ctrl_password').val(user.password);
  52.             $('form#login').submit();
  53.         }, user);
  54. });
  55.  
  56. casper.then(function(){
  57.   var currentUrl = this.getCurrentUrl();
  58.   if (/\/login$/.test(currentUrl)){
  59.         this.evaluate(function() {
  60.             console.error( $('.errorPanel').text().trim() );
  61.         });
  62.   }
  63.   else {
  64.         this.echo(' login succesful ', 'INFO_BAR')
  65.   }
  66. });
  67.  
  68. casper.thenOpen(threadUrl);
  69.  
  70. var pagesArr = [];
  71. var currentPage = 1;
  72. casper.then(function() {
  73.     var pages;
  74.    
  75.     pages = this.evaluate(function() {
  76.         return $('div.PageNav').attr('data-last');
  77.     });
  78.     if (pages == null){
  79.         pagesArr.push(1);
  80.     }
  81.     else{
  82.         for (var i = 1; i<=pages; i++){
  83.             pagesArr.push(i);
  84.         }
  85.     }
  86. });
  87.  
  88. casper.then(function(){
  89.     this.echo(
  90.      colorizer.colorize(' number of pages ', 'GREEN_BAR')
  91.       +
  92.      colorizer.format(' : ' + pagesArr.length,
  93.         {fg: 'green', bold: true}
  94.      )
  95.     );
  96. });
  97.  
  98. var likeAllPostsInPage = function(){
  99.     var likesArr = [];
  100.     casper.then(function(){
  101.         var likesN = this.evaluate(function(){
  102.             return $('span.LikeLabel').length;
  103.         });
  104.         for (var i = 1; i<=likesN; i++){
  105.             likesArr.push(i);
  106.         }
  107.         this.each(likesArr, function(self, like) { 
  108.             self.waitFor(function check() {
  109.                 return this.evaluate(function(like){
  110.                     console.log('liked: ' + like); //this.echo kills it!
  111.                     return $('span.LikeLabel').eq(like-1).click();
  112.                 }, like)
  113.             }, function then(){
  114.             }, function timeout(){
  115.                 this.echo('liking number: ' + like + ' timed out', 'WARNING');
  116.             },
  117.             5000);
  118.         });
  119.     });
  120. };
  121.  
  122. casper.then(function(){
  123.     casper.each(pagesArr, function(self, page) {
  124.         //console.log(page);
  125.         self.waitFor(function check() {
  126.             return 1;
  127.         }, function then() {
  128.             this.echo('page: ' + page, 'INFO');
  129.             self.open(threadUrl+'page-'+page);
  130.             likeAllPostsInPage();
  131.             //go to next page
  132.         });
  133.     });
  134. });
  135.  
  136. casper.then(function(){
  137.   this.capture('casper.png');
  138. });
  139.  
  140. casper.run(function(){
  141.   this.echo(' ' +
  142.     colorizer.format('     Done.     ',
  143.         {fg: 'white', bold: true}
  144.     )).exit();
  145. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement