Files
blackcanyontickets/scripts/run-scraper.js
2025-07-08 12:31:31 -06:00

85 lines
2.4 KiB
JavaScript
Executable File

#!/usr/bin/env node
/**
* Standalone event scraper script
* Can be run manually or via cron job
*
* Usage:
* node scripts/run-scraper.js
* node scripts/run-scraper.js --init (to initialize scraper organization)
*/
import { runEventScraper, initializeScraperOrganization } from '../src/lib/eventScraper.js';
import { fileURLToPath } from 'url';
import { dirname, join } from 'path';
import { config } from 'dotenv';
// Get the directory of this script
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);
// Load environment variables from the project root
config({ path: join(__dirname, '..', '.env') });
config({ path: join(__dirname, '..', '.env.local') });
async function main() {
const args = process.argv.slice(2);
const shouldInit = args.includes('--init');
console.log('🚀 Black Canyon Tickets Event Scraper');
console.log('======================================');
try {
if (shouldInit) {
console.log('🔧 Initializing scraper organization...');
const initialized = await initializeScraperOrganization();
if (initialized) {
console.log('✅ Scraper organization initialized successfully');
} else {
console.error('❌ Failed to initialize scraper organization');
process.exit(1);
}
}
console.log('🔍 Running event scraper...');
const result = await runEventScraper();
if (result.success) {
console.log('✅', result.message);
if (result.newEvent) {
console.log('📅 New Featured Event Added:');
console.log(` Title: ${result.newEvent.title}`);
console.log(` Venue: ${result.newEvent.venue}`);
console.log(` Category: ${result.newEvent.category}`);
console.log(` Start Time: ${result.newEvent.startTime}`);
if (result.newEvent.imageUrl) {
console.log(` Image: ${result.newEvent.imageUrl}`);
}
}
} else {
console.error('❌', result.message);
process.exit(1);
}
} catch (error) {
console.error('💥 Scraper script failed:', error);
process.exit(1);
}
}
// Handle uncaught errors
process.on('unhandledRejection', (reason, promise) => {
console.error('Unhandled Rejection at:', promise, 'reason:', reason);
process.exit(1);
});
process.on('uncaughtException', (error) => {
console.error('Uncaught Exception:', error);
process.exit(1);
});
// Run the script
main();