Paul Coombes
Paul Coombes

Reputation: 11

Creating an auto connect on linkedin advanced search page

I'm looking for a way to auto connect to people found via the LinkedIn advanced search function. There's plenty of information on doing this from the 'people you may know' page but I can only find the code below that is meant to work on the advanced search page, but doesn't. Any ideas?

setInterval(function () {var x = $(‘.primary-action-button’);for (var i = 0; i < x.length; i++){if(x[i].innerHTML == “Connect”) {x[i].click()}}var y = $(‘a.page-link’);y[y.length — 1].click();}, 1000)

Upvotes: 1

Views: 1056

Answers (4)

John
John

Reputation: 11

var i;
var res;
var str1 = "ember";
for(i=0;i < 10000;i++)
{
try {
    res = str1.concat(i);
    if(document.getElementById(res).innerText == "Connect"){
        document.getElementById(res).click();}
    console.log(document.getElementById(res).innerText == "Connect");
    }
catch(err) {
}
}

Upvotes: 1

looks like this is not working anymore...

Seems that LinkedIn not use jQuery anymore.

VM4213:158 Uncaught ReferenceError: $ is not defined
at Object.setScroll (<anonymous>:158:9)
at <anonymous>:164:22

Upvotes: 0

Patrick Otto
Patrick Otto

Reputation: 181

Linkedin auto invite (add) script class (JS)

For use to connect to other people 1-3rd in Linkedin custom search

Hello developers, how are you?

I went behind a plugin for Chrome or Firefox that did this type of action, however I only found useless or discontinued codes.

So I decided to create my own code to do this automated work, with paging and adding automatic notes.

If you are reading this comment, the date release is 2019.06.05. The code was built to be compatible with the current version of Linkedin, but there may be a need to update as the business social network is being changed in its design / structure.

How do I use?

Simple, open your Linkedin, make a search by company, service or sector desired. Press the F12 key in Google Chrome, in the developer console paste the code and press enter.

PS: Do not forget to change the custom note message in the Linkedin (script) class.

search screen on Linkedin

(Linkedin = {
    release: '1.0.5 stable',
    data: {},
    config: {
        autoStart: true,
        inspectorSpeed: 5000,
        sendSpeed: 4000,
        pagerSpeed: 10000,
        scrollDownAuto: 600,
        debug: true,
        message: 'Your custom note message (max 300 length)'
    },
    setEvents: function () {
        this.debug('set events');
    },
    debug: function (a) {
        if (this.config.debug && typeof console === 'object') {
            console.log(a)
        }
    },
    init: function () {
        this.debug('start script');
        this.setDefaults();
        this.setEvents();
        if (this.config.autoStart) {
            this.inspect();
        }
    },
    complete: function () {
        this.debug('script complete');
    },
    sleep: function (a) {
        this.setScroll();
        var start = new Date().getTime();
        for (var i = 0; i < 1e7; i++) {
            if ((new Date().getTime() - start) > a) {
                break;
            }
        }
    },
    totalRows: function () {
        return $('.search-result').length;
    },
    compile: function () {
        this.data.pageButtons = $("button.search-result__action-button").filter(function () {
            return $.trim($(this).text()) === "Connect";
        });
        this.data.pageButtonTotal = this.data.pageButtons.length;
    },
    stop: function () {
        clearInterval(Linkedin.data.pageInterval);
        clearInterval(Linkedin.data.nextInterval);
    },
    setDefaults: function () {
        this.stop();
        this.data = {
            pageInterval: null,
            nextInterval: null,
            pageIndex: (this.data.pageIndex) ? this.data.pageIndex : 1,
            pageButtons: {},
            pageButtonIndex: 0,
            pageButtonTotal: 0,
            lockInpect: false,
            lockClick: false
        };
    },
    sendInvites: function () {
        this.compile();
        this.setScroll();
        this.debug('validing');

        if (this.data.pageButtonTotal === 0 || this.data.lockInpect === true) {

            this.sleep(this.config.sendSpeed);

            return this.nextPage();
        }

        this.sleep(this.data.speed);
        this.debug('sending invite ' + (this.data.pageButtonIndex + 1) + '/' + this.data.pageButtonTotal);

        var button = this.data.pageButtons[this.data.pageButtonIndex];

        this.debug('clicking connect');
        $(button).click();
        this.sleep(Linkedin.config.sendSpeed);

        this.debug('adding a note');
        $("button:contains('Add a note')").click();
        this.sleep(Linkedin.config.sendSpeed);

        this.debug('write a note');
        var textArea = $('textarea[id="custom-message"]');
        textArea.val(this.config.message);
        this.sleep(Linkedin.config.sendSpeed);

        this.debug('send click');
        $("button:contains('Send invitation')").click();
        this.sleep(Linkedin.config.sendSpeed);

        this.debug('close window');
        $("button:contains('Cancel')").click();
        this.sleep(Linkedin.config.sendSpeed);

        this.debug('ignore confirm mail');
        if ($('[id=email]').length) {
            $('.send-invite__cancel-btn').click();
        }

        this.sleep(Linkedin.config.sendSpeed);
        this.stop();

        if (this.closeAll() && this.data.pageButtonIndex === (this.data.pageButtonTotal - 1)) {
            return this.nextPage();
        } else if (this.data.lockInpect === false && this.data.pageButtonIndex < (this.data.pageButtonTotal - 1)) {
            this.data.pageButtonIndex++;
            return this.sendInvites();
        } else {
            this.debug('waiting page overflow down');
            this.sleep(Linkedin.config.sendSpeed);
            return this.nextPage();
        }
    },
    nextPage: function () {
        Linkedin.debug('find page');
        Linkedin.setScroll();
        Linkedin.data.lockInpect = true;
        Linkedin.data.nextInterval = setInterval(function () {
            var pagerButton = $('.artdeco-pagination__button.artdeco-pagination__button--next[id^=ember]');
            Linkedin.debug('check page links...');
            if (pagerButton.length === 0) {
                return false;
            }
            if (Linkedin.data.lockClick === false) {
                Linkedin.debug('call next page (link)');
                Linkedin.data.lockClick = true;
                pagerButton.trigger('click');
            }
            Linkedin.checkRequest();
        }, Linkedin.config.pagerSpeed);
    },
    checkRequest: function () {
        var currentPageIndex = Linkedin.getURIParam('page');
        if (currentPageIndex !== Linkedin.data.pageIndex) {
            Linkedin.data.pageIndex = currentPageIndex;
            Linkedin.setDefaults();
            Linkedin.debug('page ready');
            return Linkedin.inspect();
        }
    },
    closeAll: function () {
        if ($('.send-invite__cancel-btn').length) {
            $('.send-invite__cancel-btn').click();
        }
        return (!$('.send-invite__cancel-btn:visible').length);
    },
    setScroll: function (a) {
        $('body').click();
        window.scrollTo(0, $(window).scrollTop() + ((a) ? a : Linkedin.config.scrollDownAuto));
    },
    inspect: function () {
        this.debug('inspect elements');
        this.data.pageInterval = setInterval(function () {
            Linkedin.setScroll(Linkedin.config.scrollDownAuto);
            if (Linkedin.totalRows() >= 20 && $('.artdeco-pagination__button.artdeco-pagination__button--next[id^=ember]').length) {
                clearInterval(Linkedin.data.pageInterval);
                Linkedin.sendInvites();
            } else {
                Linkedin.debug('listening..');
            }
        }, Linkedin.config.inspectorSpeed);
    },
    getURIParam: function (name) {
        name = name.replace(/[\[]/, '\\[').replace(/[\]]/, '\\]');
        var regex = new RegExp('[\\?&]' + name + '=([^&#]*)');
        var results = regex.exec(location.search);
        return results === null ? '' : decodeURIComponent(results[1].replace(/\+/g, ' '));
    }
}).init();

Upvotes: 0

Wildhammer
Wildhammer

Reputation: 2175

There are a few illegal tokens in the code such as ‘,’,“,” as well as the minus sign which are not the ones used for parsing JavaScript. They should be replaced with ',',",",-, respectively.

This problem usually happens when you copy text from a PDF or something which is not in pure text format.

setInterval(function () {
	var x = $('.primary-action-button');
	for (var i = 0; i < x.length; i++){
		if(x[i].innerHTML == "Connect") {
			x[i].click()
		}
	}
	var y = $('a.page-link');
	y[y.length - 1].click();
}, 1000)

Upvotes: 0

Related Questions