Files
FrenoCorp/scripts/capture-ph-screenshots.js

89 lines
2.6 KiB
JavaScript

import puppeteer from 'puppeteer-core';
import path from 'path';
import fs from 'fs';
import { fileURLToPath } from 'url';
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
// Configuration
const OUTPUT_DIR = path.join(__dirname, '..', 'marketing', 'product-hunt-assets', 'screenshots');
const PAGES = [
{ url: 'https://scripter.app/pricing', filename: 'ph-screenshot-01-pricing-1920x1080.png' },
{ url: 'https://scripter.app/features', filename: 'ph-screenshot-02-features-1920x1080.png' },
{ url: 'https://scripter.app/', filename: 'ph-screenshot-03-home-1920x1080.png' },
{ url: 'https://scripter.app/waitlist', filename: 'ph-screenshot-04-waitlist-1920x1080.png' }
];
// Chromium executable path (adjust if needed)
const CHROMIUM_PATH = process.env.CHROMIUM_PATH || '/usr/bin/chromium-browser';
async function captureScreenshots() {
console.log('🎬 Starting Product Hunt screenshot capture...\n');
// Ensure output directory exists
if (!fs.existsSync(OUTPUT_DIR)) {
fs.mkdirSync(OUTPUT_DIR, { recursive: true });
console.log(`✅ Created output directory: ${OUTPUT_DIR}\n`);
}
let browser;
try {
// Launch browser
console.log('🚀 Launching browser...');
browser = await puppeteer.launch({
executablePath: CHROMIUM_PATH,
headless: 'new',
args: [
'--no-sandbox',
'--disable-setuid-sandbox',
'--disable-dev-shm-usage',
'--disable-gpu'
]
});
const page = await browser.newPage();
await page.setViewport({ width: 1920, height: 1080 });
// Capture each page
for (const { url, filename } of PAGES) {
try {
console.log(`📸 Capturing: ${url}`);
await page.goto(url, {
waitUntil: 'networkidle2',
timeout: 30000
});
// Wait for any lazy-loaded content
await new Promise(resolve => setTimeout(resolve, 2000));
const outputPath = path.join(OUTPUT_DIR, filename);
await page.screenshot({
path: outputPath,
fullPage: true,
type: 'png'
});
console.log(`✅ Saved: ${filename}\n`);
} catch (error) {
console.error(`❌ Failed to capture ${url}: ${error.message}\n`);
}
}
console.log('🎉 Screenshot capture complete!');
console.log(`📁 Files saved to: ${OUTPUT_DIR}`);
} catch (error) {
console.error('💥 Error:', error.message);
process.exit(1);
} finally {
if (browser) {
await browser.close();
}
}
}
// Run the script
captureScreenshots();