简体   繁体   中英

Have an issue with loop iMacros/JS

I have here iMacros/JS script for Facebook, which needs to login to FB account from CSV file, then script have second loop j , which is sending 20 friend request from 1 account.

The problem is when you change account there is a popup message that you need to verify phone number in this case I need to skip this account and go to other one.

This code means that if on page appears the message it must break from j loop:

if(iimPlayCode('TAG POS=1 TYPE=DIV ATTR=CLASS:"_2e9n"')>0) {
    break;}

The issues is when script skips this account it as well skips 20 friends URLs in other CSV file.

So j loop must always continue where it stops, if "20" request send start with position "21", but when it skips account it as well skips 20 lines in CSV file.

var accounts = 10;
var total = 100;
var timeout = 'SET !TIMEOUT_STEP 0\n';
var speed = 'SET !REPLAYSPEED FAST\n';
var error = 'SET !ERRORIGNORE YES\n';

var x = 0;//if no error

//Login to account from csv file
for(var i = 1; i <= accounts; i++) {

    function LogIn() {
        iimPlayCode(speed+'SET !DATASOURCE Facebooklogin.csv\nSET !DATASOURCE_LINE '+i+'\nTAG POS=1 TYPE=INPUT:EMAIL ATTR=ID:"email" CONTENT={{!COL1}}\nTAG POS=1 TYPE=INPUT:PASSWORD ATTR=ID:"pass" CONTENT={{!COL2}}\nTAG POS=1 TYPE=LABEL ATTR=class:"uiButton uiButtonConfirm"\n')
    }

    //Check if already logged in then  relog to account from csv file
    if(iimPlayCode(speed+timeout+'TAG POS=1 TYPE=A ATTR=CLASS:"_2s25"')>0) {
        iimPlayCode(timeout+'TAG POS=1 TYPE=DIV ATTR=ID:"userNavigationLabel"\nTAG POS=2 TYPE=SPAN ATTR=TXT:Log<SP>Out')
        LogIn();
    } else { LogIn(); }   

 if(x==0) {
        var j = j*20-19;
    } else if (j > 20) {
        x = 0;
    }

    for (j; j <= total; j++) {

        //If Security Check
        if(iimPlayCode('TAG POS=1 TYPE=DIV ATTR=CLASS:"_2e9n"')>0) {
            x = 1;
            var j = j - 19;
            break;

         } else {
            x = 0;
         }

            //Send Message and Add Friend
            iimPlayCode(speed+error+'SET !TIMEOUT_STEP 0\nSET !DATASOURCE FacebookFriends.csv\nSET !DATASOURCE_LINE '+j+'\nURL GOTO={{!COL1}}\nSET !EXTRACT {{!URLCURRENT}}\nSAVEAS TYPE=EXTRACT FOLDER=* FILE={{!NOW:yyyy/mm/dd}}.csv\nTAG POS=1 TYPE=A ATTR=HREF:/messages/thread/*\nTAG POS=1 TYPE=TEXTAREA ATTR=CLASS:"br *" CONTENT=""\nTAG POS=1 TYPE=TEXTAREA ATTR=ID:"composerInput" CONTENT=""\nTAG POS=1 TYPE=INPUT:SUBMIT FORM=ID:composer_form ATTR=NAME:send\nURL GOTO={{!COL1}}\n')

            if(j==20*i) { break; }
        }
    };//End of loop

I think you need something like this:

var accounts = 10;
var total = 100;
var timeout = 'SET !TIMEOUT_STEP 0\n';
var speed = 'SET !REPLAYSPEED FAST\n';
var error = 'SET !ERRORIGNORE YES\n';

var x = 1;  // variable instead of 'i' in 'j'-loop 

//Login to account from csv file
for(var i = 1; i <= accounts; i++) {

    function LogIn() {
        iimPlayCode(speed+'SET !DATASOURCE Facebooklogin.csv\nSET !DATASOURCE_LINE '+i+'\nTAG POS=1 TYPE=INPUT:EMAIL ATTR=ID:"email" CONTENT={{!COL1}}\nTAG POS=1 TYPE=INPUT:PASSWORD ATTR=ID:"pass" CONTENT={{!COL2}}\nTAG POS=1 TYPE=LABEL ATTR=class:"uiButton uiButtonConfirm"\n')
    }

    //Check if already logged in then  relog to account from csv file
    if(iimPlayCode(speed+timeout+'TAG POS=1 TYPE=A ATTR=CLASS:"_2s25"')>0) {
        iimPlayCode(timeout+'TAG POS=1 TYPE=DIV ATTR=ID:"userNavigationLabel"\nTAG POS=2 TYPE=SPAN ATTR=TXT:Log<SP>Out')
        LogIn();
    } else { LogIn(); }   

    j = 20 * x - 19;
    for (j; j <= total; j++) {

        //If Security Check
        if(iimPlayCode('TAG POS=1 TYPE=DIV ATTR=CLASS:"_2e9n"')>0)
            break;

        //Send Message and Add Friend
        iimPlayCode(speed+error+'SET !TIMEOUT_STEP 0\nSET !DATASOURCE FacebookFriends.csv\nSET !DATASOURCE_LINE '+j+'\nURL GOTO={{!COL1}}\nSET !EXTRACT {{!URLCURRENT}}\nSAVEAS TYPE=EXTRACT FOLDER=* FILE={{!NOW:yyyy/mm/dd}}.csv\nTAG POS=1 TYPE=A ATTR=HREF:/messages/thread/*\nTAG POS=1 TYPE=TEXTAREA ATTR=CLASS:"br *" CONTENT=""\nTAG POS=1 TYPE=TEXTAREA ATTR=ID:"composerInput" CONTENT=""\nTAG POS=1 TYPE=INPUT:SUBMIT FORM=ID:composer_form ATTR=NAME:send\nURL GOTO={{!COL1}}\n')

        if (j == 20 * x) {
            x++;
            break;
        }
    }
};//End of loop

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM