Initial commit - Black Canyon Tickets whitelabel platform
🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
85
scripts/run-scraper.js
Executable file
85
scripts/run-scraper.js
Executable file
@@ -0,0 +1,85 @@
|
||||
#!/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();
|
||||
Reference in New Issue
Block a user