"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); require("dotenv/config"); const config_1 = require("../config/config"); const stats_1 = require("../config/stats"); const visionProviderFactory_1 = require("../providers/vision/visionProviderFactory"); const ttsProviderFactory_1 = require("../providers/tts/ttsProviderFactory"); const processor_1 = require("../utils/processor"); const costEstimator_1 = require("../utils/costEstimator"); const configUtils_1 = require("../utils/configUtils"); const args_1 = require("./args"); async function main() { const argv = (0, args_1.parseCommandLineArgs)(); let config = (0, config_1.getDefaultConfig)(); if (argv.config) { const fileConfig = (0, configUtils_1.loadConfigFromFile)(argv.config); config = { ...config, ...fileConfig }; } const argvObj = argv; Object.keys(argvObj).forEach(key => { if (key !== '_' && key !== '$0' && key !== 'config' && key !== 'saveConfig' && key !== 'estimate' && key !== 'help' && key !== 'version' && argvObj[key] !== undefined) { config[key] = argvObj[key]; } }); if (argv.visionModel) { if (!config.visionProviders[config.visionProvider]) { config.visionProviders[config.visionProvider] = { model: '' }; } config.visionProviders[config.visionProvider].model = argv.visionModel; } if (argv.ttsModel) { if (!config.ttsProviders[config.ttsProvider]) { config.ttsProviders[config.ttsProvider] = { model: '' }; } config.ttsProviders[config.ttsProvider].model = argv.ttsModel; } if (argv.ttsVoice) { if (!config.ttsProviders[config.ttsProvider]) { config.ttsProviders[config.ttsProvider] = { model: '', voice: '' }; } config.ttsProviders[config.ttsProvider].voice = argv.ttsVoice; } if (argv.saveConfig) { (0, configUtils_1.saveConfigToFile)(argv.saveConfig, config); } if (argv._.length < 1) { console.error('Error: No video file specified'); console.log('Usage: node script.js [options]'); console.log('Use --help for more information'); process.exit(1); } const videoFilePath = String(argv._[0]); if (argv.estimate) { try { const costBreakdown = await (0, costEstimator_1.estimateCost)(videoFilePath, config); console.log('\n=== COST ESTIMATION ==='); console.log(JSON.stringify(costBreakdown, null, 2)); console.log(`\nEstimated total cost: ${costBreakdown.apiCosts.total}`); console.log(`Estimated processing time: ${costBreakdown.estimates.estimatedProcessingTimeMinutes.toFixed(1)} minutes`); console.log('Note: Actual costs may vary based on image complexity and actual response lengths.'); } catch (err) { console.error('Error estimating costs:', err); } } else { try { const stats = (0, stats_1.createStats)(); const visionProvider = visionProviderFactory_1.VisionProviderFactory.getProvider(config); const ttsProvider = ttsProviderFactory_1.TTSProviderFactory.getProvider(config); await (0, processor_1.generateAudioDescription)(videoFilePath, visionProvider, ttsProvider, config, stats); } catch (err) { console.error('Error generating audio description:', err); } } } if (require.main === module) { main().catch(err => console.error('Unhandled error:', err)); } //# sourceMappingURL=index.js.map