Advertisement
Guest User

JS sri bot

a guest
Feb 25th, 2017
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.     "sri": {
  2.  
  3.         usage: "<subreddit>",
  4.  
  5.         process: function(bot, msg, subreddit) {
  6.  
  7.             var MAX_PAGE_ATTEMPTS = 2;
  8.  
  9.             var ITEMS_PER_PAGE = 50;
  10.  
  11.             var path = "";
  12.  
  13.             var after = "";
  14.  
  15.             var attemptNumber = 1;
  16.  
  17.            
  18.  
  19.            
  20.  
  21.             if(subreddit) {
  22.  
  23.                 path = "/r/" + subreddit + "/.json?limit="+ITEMS_PER_PAGE+"&after=";
  24.  
  25.             } else {
  26.  
  27.                 bot.sendMessage(msg.channel, "Must provide a subreddit.");
  28.  
  29.             }
  30.  
  31.  
  32.  
  33.             var callback = function(result) {
  34.  
  35.                 if(result.body && result.body.data && result.body.data.children.length !== 0) {
  36.  
  37.                     var data = result.body.data.children;
  38.  
  39.                     var time = new Date();
  40.  
  41.                     if(typeof sri_sentLinks === "undefined"){
  42.  
  43.                         sri_sentLinks = [];
  44.  
  45.                     }
  46.  
  47.                     sri_sentLinks = sri_sentLinks.filter(function(sent){
  48.  
  49.                         return sent.timestamp > time.getTime() - (12*60*60*1000);
  50.  
  51.                     });
  52.  
  53.                     var filteredData = data.filter(function(child){            
  54.  
  55.                         return child && child.data && child.data.url &&
  56.  
  57.                         (child.data.url.indexOf("imgur") !== -1 ||
  58.  
  59.                         child.data.url.indexOf("gfycat") !== -1 ||
  60.  
  61.                         child.data.url.indexOf("gif") !== -1  ||
  62.  
  63.                         child.data.url.indexOf("jpg") !== -1  ||
  64.  
  65.                         child.data.url.indexOf("jpeg") !== -1  ||
  66.  
  67.                         child.data.url.indexOf("redditmedia") !== -1 ||                    
  68.  
  69.                         child.data.url.indexOf("png") !== -1 );
  70.  
  71.                     });
  72.  
  73.                     filteredData.sort(function(a, b){
  74.  
  75.                         return a.data.url.localeCompare(b.data.url);
  76.  
  77.                     });
  78.  
  79.                     var unsentLinks = [];
  80.  
  81.                     var senti = 0, datai = 0;
  82.  
  83.                     while(datai < filteredData.length){
  84.  
  85.                         if(senti >= sri_sentLinks.length){
  86.  
  87.                             unsentLinks.push(filteredData[datai++]);
  88.  
  89.                             continue;
  90.  
  91.                         }
  92.  
  93.                         var comparison = filteredData[datai].data.url.localeCompare(sri_sentLinks[senti].url);
  94.  
  95.                         if(comparison < 0){
  96.  
  97.                             unsentLinks.push(filteredData[datai++]);
  98.  
  99.                         }else if(comparison > 0){
  100.  
  101.                             senti++;
  102.  
  103.                         }else{
  104.  
  105.                             datai++;
  106.  
  107.                             senti++;
  108.  
  109.                         }
  110.  
  111.                     }
  112.  
  113.                     var c = unsentLinks.length;
  114.  
  115.                     if(c === 0){
  116.  
  117.                         if(attemptNumber++ !== MAX_PAGE_ATTEMPTS){
  118.  
  119.                             after = data[data.length - 1].data.name;
  120.  
  121.                             doSearch();
  122.  
  123.                         }else{                     
  124.  
  125.                             bot.sendMessage(msg.channel, "No image found on " + subreddit + ".");
  126.  
  127.                         }                  
  128.  
  129.                         return;
  130.  
  131.                     }
  132.  
  133.                     var rand = Math.floor(Math.random() * (c));        
  134.  
  135.                     var url = unsentLinks[rand].data.url;
  136.  
  137.                     senti = 0;
  138.  
  139.                     while(senti < sri_sentLinks.length && sri_sentLinks[senti] && sri_sentLinks[senti].url && sri_sentLinks[senti].url.localeCompare(url) < 0){
  140.  
  141.                         senti++;
  142.  
  143.                     }
  144.  
  145.                     sri_sentLinks.splice(senti, 0, {"url": url, "timestamp": time.getTime()});
  146.  
  147.                     bot.sendMessage(msg.channel, unsentLinks[rand].data.title + ": " + url);
  148.  
  149.                    
  150.  
  151.                     var pattern = /((imgur.com\/a)|(imgur.com\/album)|(imgur.com\/gallery))/;
  152.  
  153.                     var pattern2 = /(imgur.com)/;
  154.  
  155.                     var pattern3 = /\.(jpg|png|gif|bmp)$/;
  156.  
  157.                     if (pattern.test(url))
  158.  
  159.                     {
  160.  
  161.                         var match = url.split('/')[4];
  162.  
  163.                         unirest.get("https://api.imgur.com/3/album/" + match + "/images")
  164.  
  165.                         .header("Authorization", "Client-ID 378ca74b217e4cc")
  166.  
  167.                         .header("Accept", "application/json")
  168.  
  169.                         .end(function (result)
  170.  
  171.                         {
  172.  
  173.                         var lengthh = result.body.data.length;
  174.  
  175.                         if (lengthh > 10)
  176.  
  177.                             lengthh = 10;
  178.  
  179.                         bot.sendMessage(msg.channel, lengthh + " images in this album are:");
  180.  
  181.                         for(var i=0; i<lengthh; i++)
  182.  
  183.                             {
  184.  
  185.                             bot.sendMessage(msg.channel, result.body.data[i].link);
  186.  
  187.                             }
  188.  
  189.                         });
  190.  
  191.                     return;
  192.  
  193.                     }
  194.  
  195.                     if ((pattern2.test(url) && !(pattern.test(url))) &&  !(pattern3.test(url)))
  196.  
  197.                     {
  198.  
  199.                     bot.sendMessage(msg.channel, url + ".jpg");
  200.  
  201.                     return;
  202.  
  203.                     }
  204.  
  205.                    
  206.  
  207.                 } else {
  208.  
  209.                     bot.sendMessage(msg.channel, "No image found on " + subreddit + ".");
  210.  
  211.                 }
  212.  
  213.             };
  214.  
  215.            
  216.  
  217.             var doSearch = function(){         
  218.  
  219.                 unirest.get("https://www.reddit.com" + path + after)
  220.  
  221.                 .header("Accept", "application/json")
  222.  
  223.                 .end(callback);        
  224.  
  225.             }; 
  226.  
  227.            
  228.  
  229.             doSearch();
  230.  
  231.         }
  232.  
  233.     },
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement