Skip to content

Instantly share code, notes, and snippets.

@miamarti
Last active January 15, 2025 20:13
Show Gist options
  • Save miamarti/97665960eecf440ed53c4d9beffab6ab to your computer and use it in GitHub Desktop.
Save miamarti/97665960eecf440ed53c4d9beffab6ab to your computer and use it in GitHub Desktop.
Linkedin Jobs (vagas)
let list = [];
let index = 0
let isFinish = false;
let users = document.querySelectorAll('[data-view-name="job-applicant-list-profile-card"] .artdeco-entity-lockup__title');
const finishTxt = document.querySelectorAll('.artdeco-pagination__pages.artdeco-pagination__pages--number li')[document.querySelectorAll('.artdeco-pagination__pages.artdeco-pagination__pages--number li').length-1].querySelector('button').ariaLabel;
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
function updateUsers() {
users = document.querySelectorAll('[data-view-name="job-applicant-list-profile-card"] .artdeco-entity-lockup__title');
}
window.addEventListener("beforeunload", function(event) {
event.returnValue = "Mensagem de aviso";
});
window.scrollTo(0, document.body.scrollHeight);
const execSc = async () => {
try {
if(index < users.length) {
window.scrollTo(0, document.body.scrollHeight);
await sleep(200);
window.scrollTo(0, document.body.scrollHeight);
await sleep(1000);
updateUsers();
const user = users[index];
const name = user.innerText;
const photo = document.querySelectorAll('[data-view-name="job-applicant-list-profile-card"] img')[index].src;
user.click();
window.scrollTo(0, document.body.scrollHeight);
await sleep(1500);
updateUsers();
document.querySelector('.t-20.pb5').click();
const btn = document.querySelectorAll('.artdeco-dropdown__trigger.artdeco-dropdown__trigger--placement-bottom.ember-view.artdeco-button.artdeco-button--secondary.artdeco-button--muted.artdeco-button--3')[0];
btn.click();
window.scrollTo(0, document.body.scrollHeight);
await sleep(2000);
updateUsers();
let link = document.querySelectorAll('.artdeco-dropdown__content-inner a')[0].href;
let email = document.querySelectorAll('.artdeco-dropdown__content-inner a')[1].querySelectorAll('span')[1].innerText;
let fone = document.querySelectorAll('.artdeco-dropdown__content-inner div')[2].querySelectorAll('span')[1].innerText;
let pretensao = 0;
let fluencia = 0;
let experiencia = 0;
let nivel = 0;
let triagem = [];
btn.click();
document.querySelectorAll('.job-posting-shared-screening-question-list__list-item').forEach((tr) => {
console.log(tr);
const trr = `${tr.querySelectorAll('p')[0].innerText} | ${tr.querySelectorAll('p')[1].innerText} | Resposta: ${tr.querySelectorAll('p')[2].innerText.split('Resposta da pessoa candidata')[1].trim()}`;
if(trr.includes("salarial") || trr.includes("pretensão") || trr.includes("Salarial") || trr.includes("PJ")) {
pretensao = trr.replace(/[^0-9]/g,'').substring(1);
}
if(trr.includes("inglês") || trr.includes("fluência")) {
fluencia = tr.innerText.split('\n')[5];
}
if(trr.includes("experiência") || trr.includes("tempo") || trr.includes("anos")) {
experiencia = tr.innerText.split('\n')[5];
}
if(trr.includes("nível")) {
nivel = tr.innerText.split('\n')[5];
}
triagem.push(trr);
});
// document.querySelectorAll('.hiring-screening-question-list__list-item').forEach((tr) => {
// console.log(tr.innerText.split('\n')[0]);
// console.log(tr.innerText.split('\n')[5]);
// });
if(name && email && link && fone) {
const obj = {
name,
linkedin: link,
photo,
email,
fone,
budget: pretensao,
fluencia,
experiencia,
nivel
// screening: triagem
};
list.push(obj);
index++;
}
console.clear();
console.table(list);
window.scrollTo(0, document.body.scrollHeight);
await sleep(100);
updateUsers();
execSc();
} else {
const pages = document.querySelectorAll('.artdeco-pagination__pages.artdeco-pagination__pages--number li');
for (let i = 0; i < pages.length; i++) {
const pg = pages[i];
if(pg.className.includes('selected')) {
if(pg.querySelector('button').ariaLabel === finishTxt) {
console.clear();
console.table(list);
} else {
index = 0;
pages[i + 1].querySelector('button').click();
await sleep(1000);
window.scrollTo(0, document.body.scrollHeight);
await sleep(500);
window.scrollTo(0, document.body.scrollHeight);
await sleep(1000);
updateUsers();
await sleep(100);
execSc();
}
}
}
}
} catch (error) {
await sleep(200);
execSc();
}
};
execSc();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment