89 lines
2.6 KiB
JavaScript
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();
|