diff --git a/lib/linkedin.mjs b/lib/linkedin.mjs index 95ce666..a135ea9 100644 --- a/lib/linkedin.mjs +++ b/lib/linkedin.mjs @@ -40,6 +40,7 @@ export async function searchLinkedIn(page, search, { onPage, onKeyword } = {}) { } await page.waitForTimeout(PAGE_LOAD_WAIT); + try { let pageNum = 0; while (pageNum < LINKEDIN_MAX_SEARCH_PAGES) { // Scroll to load all cards @@ -129,7 +130,7 @@ export async function searchLinkedIn(page, search, { onPage, onKeyword } = {}) { jobs.push(job); } - if (pageJobs.length > 0 && callbacks.onPage) callbacks.onPage(pageJobs); + if (pageJobs.length > 0 && callbacks.onPage) await callbacks.onPage(pageJobs); const nextBtn = await page.$('button[aria-label="View next page"]'); if (!nextBtn) break; @@ -137,6 +138,11 @@ export async function searchLinkedIn(page, search, { onPage, onKeyword } = {}) { await page.waitForTimeout(PAGE_LOAD_WAIT); pageNum++; } + } catch (kwErr) { + console.error(` ❌ Keyword "${keyword}" failed: ${kwErr.message}`); + // Don't mark as complete — will be retried on next run + continue; + } // Mark keyword complete after all its pages are done callbacks.onKeyword?.(ki); }