diff --git a/search_analyzer.js b/search_analyzer.js index 185db9a..a8a6c0a 100644 --- a/search_analyzer.js +++ b/search_analyzer.js @@ -31,7 +31,7 @@ // ─── Find Result Container ─────────────────────────────────────────────── function getSearchResultsContainer() { - return document.querySelector('.search-results-container, .reusable-search__entity-result-list, ul.reusable-search__entity-result-list'); + return document.querySelector('.search-results-container, .reusable-search__entity-result-list, ul.reusable-search__entity-result-list, .search-results__list'); } // ─── Extract Person Data ───────────────────────────────────────────────── @@ -43,30 +43,38 @@ summary: '' }; - // Name - const nameEl = cardEl.querySelector('.entity-result__title-text a span[dir="ltr"], .entity-result__title-line a span[dir="ltr"], span.entity-result__title-text, .app-aware-link span[dir="ltr"]'); + // 1. Extract Name (Usually inside a link with /in/) + const nameEl = cardEl.querySelector('.entity-result__title-text, .search-result__title, span[dir="ltr"]'); if (nameEl) { - data.name = nameEl.innerText.trim(); + data.name = nameEl.innerText.trim().split('\n')[0]; + } else { + const profileLinks = Array.from(cardEl.querySelectorAll('a[href*="/in/"]')).filter(a => a.innerText.trim().length > 0); + if (profileLinks.length > 0) { + data.name = profileLinks[0].innerText.trim().split('\n')[0]; + } } - // Headline - const headlineEl = cardEl.querySelector('.entity-result__primary-subtitle'); + // 2. Extract Headline + const headlineEl = cardEl.querySelector('.entity-result__primary-subtitle, .search-result__truncate, .linked-area'); if (headlineEl) { data.headline = headlineEl.innerText.trim(); } - // Location - const locationEl = cardEl.querySelector('.entity-result__secondary-subtitle'); + // 3. Extract Location + const locationEl = cardEl.querySelector('.entity-result__secondary-subtitle, .search-result__info'); if (locationEl) { data.location = locationEl.innerText.trim(); } - // Summary/Snippet - const summaryEl = cardEl.querySelector('.entity-result__summary'); + // 4. Extract Summary + const summaryEl = cardEl.querySelector('.entity-result__summary, .search-result__snippets'); if (summaryEl) { data.summary = summaryEl.innerText.trim(); } + // Clean up "View Profile" texts + data.name = data.name.replace(/View .* profile/gi, '').trim(); + return data; } @@ -74,14 +82,20 @@ function injectScanButton(cardEl) { if (cardEl.querySelector('.lja-scan-person-btn') || cardEl.querySelector('.lja-investor-result')) return; - // Find a good place to put the button. Usually near the title or actions. - const actionArea = cardEl.querySelector('.entity-result__actions') || cardEl.querySelector('.entity-result__item'); - if (!actionArea) return; - const btn = document.createElement('button'); btn.className = 'lja-scan-person-btn'; btn.innerHTML = '🔍 Scan Investor'; + // Add some basic styling just in case CSS fails to load or apply correctly + btn.style.margin = '10px 0'; + btn.style.padding = '5px 15px'; + btn.style.cursor = 'pointer'; + btn.style.backgroundColor = '#6C63FF'; + btn.style.color = '#fff'; + btn.style.border = 'none'; + btn.style.borderRadius = '5px'; + btn.style.fontWeight = 'bold'; + // Create a container for the result const resultContainer = document.createElement('div'); resultContainer.className = 'lja-result-wrapper'; @@ -92,16 +106,16 @@ await scanPerson(cardEl, btn, resultContainer); }); - // Try to append button to actions area if possible, else to the item - if (actionArea.classList.contains('entity-result__actions')) { + // Try to append to actions area, if not just append at the end of the card + const actionArea = cardEl.querySelector('.entity-result__actions, .search-result__actions'); + if (actionArea) { actionArea.prepend(btn); } else { - const titleLine = cardEl.querySelector('.entity-result__title-line') || actionArea; - titleLine.appendChild(btn); + cardEl.appendChild(btn); } cardEl.appendChild(resultContainer); - console.log('[LJA] Injected button for a profile'); + console.log('[LJA] Injected button for a profile:', extractPersonData(cardEl).name); } // ─── Scan a Single Person ──────────────────────────────────────────────── @@ -171,11 +185,11 @@ const colorClass = isGreen ? 'green' : 'red'; resultContainer.innerHTML = ` -