// Usage: node render-card.cjs // Рендер карточки организации (Яндекс.Карты/2ГИС) локальным Playwright → JSON { html }. // ВАЖНО: Яндекс.Карты НЕ доходят до networkidle (постоянные фоновые запросы) — поэтому ждём // domcontentloaded + фиксированную паузу (как рабочий render-yandex-list.cjs), а не networkidle. // Нужен, чтобы вскрывать яндекс-карточки надёжно (xfetch под нагрузкой их режет → терялся сайт). const { chromium } = require('playwright'); (async () => { const url = process.argv[2]; let parsed; try { parsed = new URL(url); } catch (e) { console.error('bad url'); process.exit(2); } if (parsed.protocol !== 'http:' && parsed.protocol !== 'https:') { console.error('bad scheme'); process.exit(2); } const browser = await chromium.launch({ headless: true }); try { const page = await browser.newPage({ locale: 'ru-RU' }); await page.goto(url, { waitUntil: 'domcontentloaded', timeout: 45000 }); // Даём подгрузиться блоку контактов (сайт/телефоны рисуются после первого рендера). await page.waitForTimeout(4500); const html = await page.content(); process.stdout.write(JSON.stringify({ html })); } finally { await browser.close(); } })().catch((e) => { console.error(String(e)); process.exit(1); });