Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //imacros-js:showsteps no
- /*
- Made by Genczler Tamás
- Updated by Karol Kolecava 30.06.2016 version 1.3
- */
- //functions
- function Load(name, delimiter, numCols, line) {
- if (typeof line === "undefined") {
- var line = 1;
- }
- var array = [];
- var load;
- for (var i = line, error = "OK"; error == "OK"; i++) {
- load = "CODE:";
- load += "set !extract {{!folder_datasource}}" + "\n";
- load += "set !datasource_delimiter {{delimiter}}" + "\n";
- load += "set !datasource {{name}}" + "\n";
- load += "set !datasource_line {{loop}}" + "\n";
- iimSet("name", name);
- iimSet("delimiter", delimiter);
- iimSet("loop", i);
- for (var i2 = 1; i2 != numCols + 1; i2++) {
- load += "add !extract {{!col" + i2 + "}}" + "\n";
- }
- iimPlay(load);
- iimDisplay("Loading " + name + " from " + iimGetLastExtract(1) + " ...");
- error = iimGetLastError(1);
- if (iimGetLastError(1) == "OK") {
- var row = iimGetLastExtract().split("[EXTRACT]");
- for (var i3 = 0; i3 < row.length; i3++) {
- if (!row[i3]) {
- iimDisplay("Make sure you fill out all of the columns! Please check line " + i + " in " + name + " in the " + iimGetLastExtract(1) + " folder!");
- iimExit();
- }
- }
- row.splice(0, 1);
- array.push(row);
- } else if (i == line) {
- iimDisplay("Make sure you have an UTF-8 coded file named \"" + name + "\" in the " + iimGetLastExtract(1) + " folder with at least " + line + " line(s)!");
- iimExit();
- }
- }
- iimDisplay("");
- return array;
- }
- function Go(url, clear, proxy, strict) {
- var go; go = "CODE:"; go += "filter type=images status=on" + "\n";
- if (clear)
- go += "clear" + "\n";
- if (proxy) {
- go += "proxy address={{ip}}:{{port}}" + "\n"; go += "onlogin user={{user}} password={{pass}}" + "\n";
- iimSet("ip", proxy[0]);
- iimSet("port", proxy[1]);
- iimSet("user", proxy[2]);
- iimSet("pass", proxy[3]);
- }
- go += "url goto={{url}}" + "\n";
- iimSet("url", url);
- iimPlay(go);
- if (iimGetLastError(1) != "OK" || (strict && window.location.href != url))
- return true;
- }
- function ChangeUseragent(useragent) {
- iimSet("useragent", useragent);
- iimPlayCode("set !useragent {{useragent}}\nset !timeout_step 0\ntag pos=1 type=foo attr=foo:foo");
- }
- function Prepare() {
- iimPlayCode("url goto=about:blank\ntab closeallothers\nclear");
- }
- function CheckExtract(num) {
- if (iimGetLastExtract(num) && iimGetLastExtract(num).indexOf("#EANF#") == -1)
- return true;
- }
- function Input(text, defaultInput) {
- do {
- var input = parseInt(prompt(text, defaultInput));
- } while (isNaN(input));
- return input;
- }
- function save(array, name, folder) {
- var save;
- save = "CODE:";
- for (var i = 0; i < array.length; i++) {
- save += "add !extract {{index" + i + "}}" + "\n";
- if (!array[i])
- array[i] = " ";
- iimSet("index" + i, array[i]);
- }
- save += "saveas type=extract folder=" + folder.replace(/ /g,"<sp>") + " file=" + name.replace(/ /g,"<sp>") + "\n";
- iimPlay(save);
- }
- function Login(email, pass) {
- while(Go("https://mobile.twitter.com/login", true));
- iimSet("email", email);
- iimSet("pass", pass);
- 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");
- if (iimGetLastError(1) != "OK")
- return true;
- }
- function Fav(keyword, numFavs, blacklist, whitelist) {
- if (keyword)
- while(Go("https://twitter.com/search?f=tweets&vertical=default&q=" + encodeURIComponent(keyword) + "&src=typd", false, false, true));
- else
- while(Go("https://twitter.com/likes", false, false, true));
- global: for (var i = 0, pos = 1; i++ < numFavs;) {
- for (var j = 0; true; j++) {
- 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");
- if (iimGetLastExtract(1) == "#EANF#" && j == tries)
- break global;
- else if (iimGetLastExtract(1) == "#EANF#")
- window.scrollBy(0, 200000);
- else
- break;
- }
- if (CheckExtract(2)) {
- var user = iimGetLastExtract(2).replace("@","");
- if ((blacklist.indexOf(user) == -1 && whitelist) || whitelist.indexOf(user) != -1) {
- 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));
- if (iimGetLastError(1) == "OK") {
- iimPlayCode("set !extract {{!now:hh:nn:ss<sp>dd.mm.yyyy.}}");
- var now = iimGetLastExtract(1);
- save([now, row.email, keyword, user, (keyword ? "like" : "unlike")], "logMisterk_favbot.csv", "*");
- if (keyword)
- blacklist.push(user);
- } else if (keyword) {
- numFavs++;
- pos++;
- }
- } else {
- numFavs++;
- pos++;
- }
- } else {
- numFavs++;
- pos++;
- }
- }
- }
- //settings
- var minDelay = Input("Min delay in seconds between favs/unfavs:", 1);
- var maxDelay = Input("Max delay in seconds between favs/unfavs:", 5);
- var tries = Input("# of times to try to load new tweets before skipping:", 1) + 1;
- //prepare
- Prepare();
- ChangeUseragent("Mozilla/5.0 (Windows NT 6.3; rv:36.0) Gecko/20100101 Firefox/36.0");
- var datasource = Load("datasourceMisterk_favbot.csv", ",", 5, 2);
- for (var i = 0; i < datasource.length; i++) {
- var row = datasource[i];
- datasource[i] = {
- email: row[0],
- pass: row[1],
- keywords: row[2].split(";"),
- whitelist: row[3].split(";"),
- blacklist: row[4].split(";")
- };
- for (var j = 0; j < datasource[i].keywords.length; j++) {
- keyword = datasource[i].keywords[j].split(":");
- datasource[i].keywords[j] = {
- keyword: keyword[0] == "#unfav#" ? false : keyword[0],
- numFavs: keyword[1] == "#all#" ? Infinity : parseInt(keyword[1])
- };
- }
- if (datasource[i].whitelist[0] == " ")
- datasource[i].whitelist = [];
- if (datasource[i].blacklist[0] == " ")
- datasource[i].blacklist = [];
- }
- //run
- for (var i = 0; i < datasource.length; i++) {
- row = datasource[i];
- while(Login(row.email, row.pass));
- if (window.location.href.match("error"))
- continue;
- for (var j = 0; j < row.keywords.length; j++) {
- Fav(row.keywords[j].keyword, row.keywords[j].numFavs, row.blacklist, row.whitelist);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement