diff --git a/lib/scraper/session.js b/lib/scraper/session.js index cf249a0..f7fefc7 100644 --- a/lib/scraper/session.js +++ b/lib/scraper/session.js @@ -114,7 +114,39 @@ async function extractSessionDetails(page) { async function getSessionList(page) { const strategy = selectors.sessionListStrategies[0]; - return await page.evaluate(strategy.fn); + const initialSessions = await page.evaluate(strategy.fn); + + const sessionsById = new Map(); + initialSessions.forEach(session => { + if (session?.sessionId) { + sessionsById.set(session.sessionId, session); + } + }); + + if (initialSessions.length > 0) { + const clicked = await page.evaluate((href) => { + const link = Array.from(document.querySelectorAll('a[href*="sessionId="]')) + .find(el => el.href === href); + + if (!link) return false; + + link.click(); + return true; + }, initialSessions[0].href); + + if (clicked) { + await waitForStable(page); + + const subsequentSessions = await page.evaluate(strategy.fn); + subsequentSessions.forEach(session => { + if (session?.sessionId && !sessionsById.has(session.sessionId)) { + sessionsById.set(session.sessionId, session); + } + }); + } + } + + return Array.from(sessionsById.values()); } async function setRatings(page, ratings) {