Advertisement
Guest User

macrobot

a guest
Jan 3rd, 2017
262
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //imacros-js:showsteps no
  2.  
  3. /*
  4. Made by Genczler Tamás
  5. Updated by Karol Kolecava 30.06.2016 version 1.3
  6. */
  7.  
  8. //functions
  9. function Load(name, delimiter, numCols, line) {
  10.     if (typeof line === "undefined") {
  11.         var line = 1;
  12.     }
  13.     var array = [];
  14.     var load;
  15.     for (var i = line, error = "OK"; error == "OK"; i++) {
  16.         load = "CODE:";
  17.         load += "set !extract {{!folder_datasource}}" + "\n";
  18.         load += "set !datasource_delimiter {{delimiter}}" + "\n";
  19.         load += "set !datasource {{name}}" + "\n";
  20.         load += "set !datasource_line {{loop}}" + "\n";
  21.         iimSet("name", name);
  22.         iimSet("delimiter", delimiter);
  23.         iimSet("loop", i);
  24.         for (var i2 = 1; i2 != numCols + 1; i2++) {
  25.             load += "add !extract {{!col" + i2 + "}}" + "\n";
  26.         }
  27.         iimPlay(load);
  28.         iimDisplay("Loading " + name + " from " + iimGetLastExtract(1) + " ...");
  29.         error = iimGetLastError(1);
  30.         if (iimGetLastError(1) == "OK") {
  31.             var row = iimGetLastExtract().split("[EXTRACT]");
  32.             for (var i3 = 0; i3 < row.length; i3++) {
  33.                 if (!row[i3]) {
  34.                     iimDisplay("Make sure you fill out all of the columns! Please check line " + i + " in " + name + " in the " + iimGetLastExtract(1) + " folder!");
  35.                     iimExit();
  36.                 }
  37.             }
  38.             row.splice(0, 1);
  39.             array.push(row);
  40.         } else if (i == line) {
  41.             iimDisplay("Make sure you have an UTF-8 coded file named \"" + name + "\" in the " + iimGetLastExtract(1) + " folder with at least " + line + " line(s)!");
  42.             iimExit();
  43.         }
  44.     }
  45.     iimDisplay("");
  46.     return array;
  47. }
  48.  
  49. function Go(url, clear, proxy, strict) {
  50.     var go; go =  "CODE:"; go +=  "filter type=images status=on" + "\n";
  51.     if (clear)
  52.         go +=  "clear" + "\n";
  53.     if (proxy) {
  54.         go +=  "proxy address={{ip}}:{{port}}" + "\n"; go +=  "onlogin user={{user}} password={{pass}}" + "\n";
  55.         iimSet("ip", proxy[0]);
  56.         iimSet("port", proxy[1]);
  57.         iimSet("user", proxy[2]);
  58.         iimSet("pass", proxy[3]);
  59.     }
  60.     go +=  "url goto={{url}}" + "\n";
  61.     iimSet("url", url);
  62.     iimPlay(go);
  63.     if (iimGetLastError(1) != "OK" || (strict && window.location.href != url))
  64.         return true;
  65. }
  66.  
  67. function ChangeUseragent(useragent) {
  68.     iimSet("useragent", useragent);
  69.     iimPlayCode("set !useragent {{useragent}}\nset !timeout_step 0\ntag pos=1 type=foo attr=foo:foo");
  70. }
  71.  
  72. function Prepare() {
  73.     iimPlayCode("url goto=about:blank\ntab closeallothers\nclear");
  74. }
  75.  
  76. function CheckExtract(num) {
  77.     if (iimGetLastExtract(num) && iimGetLastExtract(num).indexOf("#EANF#") == -1)
  78.         return true;
  79. }
  80.  
  81. function Input(text, defaultInput) {
  82.     do {
  83.         var input = parseInt(prompt(text, defaultInput));
  84.     } while (isNaN(input));
  85.     return input;
  86. }
  87.  
  88. function save(array, name, folder) {
  89.     var save;
  90.     save = "CODE:";
  91.     for (var i = 0; i < array.length; i++) {
  92.         save += "add !extract {{index" + i + "}}" + "\n";
  93.         if (!array[i])
  94.             array[i] = " ";
  95.         iimSet("index" + i, array[i]);
  96.     }
  97.     save += "saveas type=extract folder=" + folder.replace(/ /g,"<sp>") + " file=" + name.replace(/ /g,"<sp>") + "\n";
  98.     iimPlay(save);
  99. }
  100.  
  101. function Login(email, pass) {
  102.     while(Go("https://mobile.twitter.com/login", true));
  103.     iimSet("email", email);
  104.     iimSet("pass", pass);
  105.     iimPlayCode("tag pos=1 type=input attr=class:text-input content={{email}}\ntag pos=2 type=input attr=class:text-input content={{pass}}\ntag pos=1 type=input:submit form=action:/sessions attr=NAME:commit");
  106.     if (iimGetLastError(1) != "OK")
  107.         return true;
  108. }
  109.  
  110. function Fav(keyword, numFavs, blacklist, whitelist) {
  111.     if (keyword)
  112.         while(Go("https://twitter.com/search?f=tweets&vertical=default&q=" + encodeURIComponent(keyword) + "&src=typd", false, false, true));
  113.     else
  114.         while(Go("https://twitter.com/likes", false, false, true));
  115.     global: for (var i = 0, pos = 1; i++ < numFavs;) {
  116.         for (var j = 0; true; j++) {
  117.             iimPlayCode("set !timeout_step 3\ntag pos=" + pos + " type=div attr=title:" + (keyword ? "" : "undo<sp>") + "like extract=txt\ntag pos=r-1 type=span attr=txt:@* extract=txt");
  118.             if (iimGetLastExtract(1) == "#EANF#" && j == tries)
  119.                 break global;
  120.             else if (iimGetLastExtract(1) == "#EANF#")
  121.                 window.scrollBy(0, 200000);
  122.             else
  123.                 break;
  124.         }
  125.         if (CheckExtract(2)) {
  126.             var user = iimGetLastExtract(2).replace("@","");
  127.             if ((blacklist.indexOf(user) == -1 && whitelist) || whitelist.indexOf(user) != -1) {
  128.                 iimPlayCode("set !timeout_step 0\ntag pos=" + pos + " type=div attr=title:" + (keyword ? "" : "undo<sp>") + "like\nwait seconds=" + Math.floor(Math.random()*(maxDelay-minDelay+1)+minDelay));
  129.                 if (iimGetLastError(1) == "OK") {
  130.                     iimPlayCode("set !extract {{!now:hh:nn:ss<sp>dd.mm.yyyy.}}");
  131.                     var now = iimGetLastExtract(1);
  132.                     save([now, row.email, keyword, user, (keyword ? "like" : "unlike")], "logMisterk_favbot.csv", "*");
  133.                     if (keyword)
  134.                         blacklist.push(user);
  135.                 } else if (keyword) {
  136.                     numFavs++;
  137.                     pos++;
  138.                 }
  139.             } else {
  140.                 numFavs++;
  141.                 pos++;
  142.             }
  143.         } else {
  144.             numFavs++;
  145.             pos++;
  146.         }
  147.     }
  148. }
  149.  
  150. //settings
  151. var minDelay = Input("Min delay in seconds between favs/unfavs:", 1);
  152. var maxDelay = Input("Max delay in seconds between favs/unfavs:", 5);
  153. var tries = Input("# of times to try to load new tweets before skipping:", 1) + 1;
  154.  
  155. //prepare
  156. Prepare();
  157. ChangeUseragent("Mozilla/5.0 (Windows NT 6.3; rv:36.0) Gecko/20100101 Firefox/36.0");
  158. var datasource = Load("datasourceMisterk_favbot.csv", ",", 5, 2);
  159. for (var i = 0; i < datasource.length; i++) {
  160.     var row = datasource[i];
  161.     datasource[i] = {
  162.         email: row[0],
  163.         pass: row[1],
  164.         keywords: row[2].split(";"),
  165.         whitelist: row[3].split(";"),
  166.         blacklist: row[4].split(";")
  167.     };
  168.     for (var j = 0; j < datasource[i].keywords.length; j++) {
  169.         keyword = datasource[i].keywords[j].split(":");
  170.         datasource[i].keywords[j] = {
  171.             keyword: keyword[0] == "#unfav#" ? false : keyword[0],
  172.             numFavs: keyword[1] == "#all#" ? Infinity : parseInt(keyword[1])
  173.         };
  174.     }
  175.     if (datasource[i].whitelist[0] == " ")
  176.         datasource[i].whitelist = [];
  177.     if (datasource[i].blacklist[0] == " ")
  178.         datasource[i].blacklist = [];
  179. }
  180.  
  181. //run
  182. for (var i = 0; i < datasource.length; i++) {
  183.     row = datasource[i];
  184.     while(Login(row.email, row.pass));
  185.     if (window.location.href.match("error"))
  186.         continue;
  187.     for (var j = 0; j < row.keywords.length; j++) {
  188.         Fav(row.keywords[j].keyword, row.keywords[j].numFavs, row.blacklist, row.whitelist);
  189.     }
  190. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement