This repository has been archived by the owner on May 27, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlinkedin_click_connect.js
156 lines (127 loc) · 4.54 KB
/
linkedin_click_connect.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
var lastSendTimeout = null;
var lastConnectTimeout = null;
var useRandomConnectClickTime = true;
var connectMissesBeforeMovingToNextPage = 3;
var currentConnectMisses = connectMissesBeforeMovingToNextPage;
var minimumConnectWaitTime = 1000;
var maximumConnectWaitTime = 2500;
var numTriesNextPage = 3;
var curNumTriesNextPage = numTriesNextPage;
var goToNextPage = () =>
{
window.scrollTo({
top: document.body.scrollHeight,
behavior: 'smooth'
});
if (curNumTriesNextPage <= 0)
{
alert("No Next button detected. Rerun script after zooming out");
return;
}
// click on next button
let nextButtons = document.getElementsByClassName("artdeco-pagination__button--next");
if (nextButtons.length)
{
curNumTriesNextPage = numTriesNextPage;
console.log("Click next button");
nextButtons[0].click();
setTimeout(findConnectButton, minimumConnectWaitTime);
} else
{
curNumTriesNextPage--;
}
};
// if connect buttons length has stayed the same for X number even after clicking on send button, then go to next page
var numTriesConnectStaySame = 3;
var curNumTriesConnectStaySame = numTriesConnectStaySame;
var lastConnectButtonsLength = null;
var findConnectButton = () =>
{
let allButtons = document.getElementsByClassName("artdeco-button--2");
let connectButtons = Array.from(allButtons).filter((el) =>
{
return !el.classList.contains("artdeco-button--muted") && el.innerText === "Connect"
});
let connectTimeoutMS = 700;
if (useRandomConnectClickTime)
{
connectTimeoutMS = Math.floor(Math.random() * (maximumConnectWaitTime - minimumConnectWaitTime) + 1) + minimumConnectWaitTime;
}
if (connectButtons.length)
{
console.log(`${connectButtons.length} connect buttons`);
connectButtons[0].click();
clearTimeout(lastSendTimeout);
findSendButton();
let weeklyInvitationLimitButton = document.getElementsByClassName("artdeco-button ip-fuse-limit-alert__primary-action");
if (weeklyInvitationLimitButton.length)
{
// stop clicking on connect buttons if we reach our weekly connect limit
clearTimeout(lastConnectTimeout);
alert("Reached Connect Invitation Limit! Stopped script");
return;
}
if (connectButtons.length == lastConnectButtonsLength)
{
curNumTriesConnectStaySame--;
} else
{
curNumTriesConnectStaySame = numTriesConnectStaySame;
lastConnectButtonsLength = null;
}
if (curNumTriesConnectStaySame <= 0)
{
//go to next page
goToNextPage();
curNumTriesConnectStaySame = numTriesConnectStaySame;
lastConnectButtonsLength = null;
} else
{
// look and click on next Connect button after connectTimeoutMS
lastConnectTimeout = setTimeout(findConnectButton, connectTimeoutMS);
curNumTriesConnectStaySame--;
lastConnectButtonsLength = connectButtons.length;
}
} else
{
// try 3 more times before saying no more connect buttons on this page
if (currentConnectMisses > 0)
{
window.scrollTo({
top: document.body.scrollHeight,
behavior: 'smooth'
});
lastConnectTimeout = setTimeout(findConnectButton, connectTimeoutMS);
currentConnectMisses--;
} else
{
goToNextPage();
currentConnectMisses = connectMissesBeforeMovingToNextPage;
}
}
}
var findSendButton = () =>
{
let sendButtons = document.getElementsByClassName("ml1 artdeco-button");
if (sendButtons.length)
{
sendButtons[0].click();
} else
{
// try again after 300ms
lastSendTimeout = setTimeout(findSendButton, 300);
}
}
var linkedin_search_regexp = /http[s]?:[/][/][a-zA-Z]+.linkedin.com[/]search[/]results/;
if (window.location.href.match(linkedin_search_regexp) === null)
{
alert("Can't run Linkedin Autoconnect script on pages other than Linkedin Search Results");
} else
{
alert("Zoom out with Ctrl+Minus repeatedly until the Next page button is visible, before pressing OK");
window.scrollTo({
top: document.body.scrollHeight,
behavior: 'smooth'
});
findConnectButton();
}