// Usage: node render-firm.cjs // Открывает карточку справочника, жмёт «Показать телефон(ы)», печатает JSON { html }. 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(); await page.goto(url, { waitUntil: 'networkidle', timeout: 30000 }); // нажать кнопку раскрытия телефона, если есть try { const btn = page.getByText(/Показать телефон/i).first(); await btn.click({ timeout: 4000 }); await page.waitForTimeout(700); } catch (e) { /* кнопки нет — номер уже виден */ } const html = await page.content(); process.stdout.write(JSON.stringify({ html })); } finally { await browser.close(); } })().catch(e => { console.error(String(e)); process.exit(1); });