|
// ==UserScript== |
|
// @name Linkedin-get-emails |
|
// @version 1.3 |
|
// @grant none |
|
// @match https://www.linkedin.com/* |
|
// ==/UserScript== |
|
|
|
(function() { |
|
'use strict'; |
|
start() |
|
// window.onhashchange = start; |
|
// window.onpopstate = start; |
|
})(); |
|
|
|
function stop() { |
|
var emails = JSON.parse(localStorage.getItem('linkedin-emails') || '[]'); |
|
alert('Linkedin get emails stopped, ' + emails.length + ' emails found. All the emails: ', JSON.stringify(emails)); |
|
console.info('stop,', emails.length, 'emails found:', emails); |
|
localStorage.removeItem('linkedin-connexions') |
|
localStorage.removeItem('linkedin-emails') |
|
localStorage.removeItem('linkedin-started') |
|
} |
|
function addStartBtn(phase) { |
|
$('#lexo-stop, #lexo-start').remove() |
|
$('.search-results__total').append(`<strong id="lexo-start">start</strong>`).click(() => { |
|
console.log('start') |
|
localStorage.setItem('linkedin-started', phase) |
|
storeLinks(); |
|
}); |
|
} |
|
function addStopBtn() { |
|
$('#lexo-stop, #lexo-start').remove() |
|
$(`<strong style="position: fixed;" id="lexo-stop">Stop</strong>`).insertBefore('.ad-banner:first').click(() => { |
|
console.log('stop') |
|
stop() |
|
}); |
|
} |
|
|
|
function start() { |
|
setTimeout(function() { |
|
var phase = localStorage.getItem('linkedin-started'); |
|
if(phase === 'phase1') { |
|
storeLinks(); |
|
addStopBtn() |
|
} |
|
else if(phase === 'phase2') { |
|
startPhase2() |
|
} |
|
else { |
|
addStartBtn('phase1') |
|
} |
|
}, 5000); |
|
} |
|
|
|
function startPhase2() { |
|
console.log('start phase 2'); |
|
addStopBtn(); |
|
var stored = JSON.parse(localStorage.getItem('linkedin-connexions') || '[]') |
|
//console.log('connexions:', stored); |
|
var href = stored.pop(); |
|
if(href) { |
|
localStorage.setItem('linkedin-connexions', JSON.stringify(stored)) |
|
if(localStorage.getItem('linkedin-started') === 'phase2') { |
|
$('.pv-top-card-v2-section__link--contact-info') |
|
.trigger('click') |
|
var emails = JSON.parse(localStorage.getItem('linkedin-emails') || '[]'); |
|
console.info(emails.length, 'emails found so far,', stored.length, 'left to go'); |
|
setTimeout(() => { |
|
var emailEl = $('.pv-contact-info__contact-link').filter((idx, el) => el.innerHTML.indexOf('@') > 0).get(); |
|
var nameEl = $('.pv-top-card-section__name').get(0).innerText; |
|
if(emailEl && nameEl) { |
|
var email = emailEl.map(el => el.innerText); |
|
emails.push({ |
|
email: email, |
|
name: nameEl, |
|
}); |
|
localStorage.setItem('linkedin-emails', JSON.stringify(emails)) |
|
console.log('saved email', email, 'and name', nameEl) |
|
} |
|
else { |
|
console.log('no email') |
|
} |
|
location.href = href; |
|
}, 2000) |
|
} |
|
else { |
|
localStorage.setItem('linkedin-started', 'phase2') |
|
location.href = href; |
|
} |
|
} |
|
else { |
|
stop(); |
|
} |
|
} |
|
function storeLinks() { |
|
var n = $(document).height() - $(window).height(); |
|
$('html, body') |
|
.animate({ scrollTop: n }, 5000, () => { setTimeout(function() { |
|
var links = $('a.search-result__result-link') |
|
.map((idx, el) => el.href) |
|
.get() |
|
|
|
var stored = JSON.parse(localStorage.getItem('linkedin-connexions') || '[]') |
|
.concat(links) |
|
|
|
var newStored = stored.filter((link, idx) => idx === stored.indexOf(link)) |
|
|
|
localStorage.setItem('linkedin-connexions', JSON.stringify(newStored)) |
|
|
|
console.log(newStored.length, 'urls') |
|
|
|
const btn = $('.artdeco-pagination__button.artdeco-pagination__button--next.artdeco-button--icon-right') |
|
if(btn.length > 0 && !btn.attr('disabled')) { |
|
btn.trigger('click') |
|
start(); |
|
} |
|
else { |
|
startPhase2() |
|
} |
|
}, 4000)}) |
|
} |
|
|