import puppeteer from 'puppeteer-core';
import { mkdirSync } from 'fs';
import { join } from 'path';
const CDP_URL = 'http://127.0.0.1:18800';
const OUTPUT_DIR = '/Users/mariscal/.openclaw/workspace/style-library/screenshots';
const styleNames = {
'S06': 'Cyberpunk', 'S07': 'Retro-80s-Synth', 'S08': 'Retro-60s-70s',
'S09': 'Memphis', 'S10': 'Luxury-Editorial', 'S11': 'Japanese-Minimalism',
'S12': 'Nature-Organic', 'S13': 'Material-ish', 'S14': 'Glassmorphism',
'S15': 'Neumorphism', 'S16': 'Terminal-Hacker', 'S17': 'Bauhaus-Modern',
'S18': 'Retro-Pixel-UI', 'S19': 'Aesthetic-Harmony', 'S20': 'Aurora-Borealis',
'S21': 'Claymorphism', 'S22': 'Dark-Mode-Elegance', 'S23': 'Doodle-Sketch',
'S24': 'Minimalist-Line-Art', 'S25': 'Paper-Craft'
};
const startNum = parseInt(process.argv[2] || '37');
const endNum = parseInt(process.argv[3] || '100');
mkdirSync(OUTPUT_DIR, { recursive: true });
const browser = await puppeteer.connect({ browserURL: CDP_URL });
const page = await browser.newPage();
await page.setViewport({ width: 1280, height: 900 });
for (let i = startNum; i <= endNum; i++) {
const id = `S${String(i).padStart(2, '0')}`;
const name = styleNames[id] || id;
const filename = `${id}-${name}.jpg`;
const url = `https://styleprompt.zeabur.app/styles/pro/${id}`;
console.log(`[${id}] Navigating...`);
try {
await page.goto(url, { waitUntil: 'load', timeout: 10000 });
} catch (e) {
console.log(`[${id}] Nav timeout, continuing...`);
}
// Wait 3s for JS rendering
await new Promise(r => setTimeout(r, 3000));
try {
await page.screenshot({
path: join(OUTPUT_DIR, filename),
fullPage: true,
type: 'jpeg',
quality: 85
});
console.log(`[${id}] Saved ${filename}`);
} catch (e) {
console.log(`[${id}] Screenshot error: ${e.message}`);
}
}
await page.close();
console.log('Done!');