Files
aidio-description/dist/cli/index.js

83 lines
3.6 KiB
JavaScript
Raw Normal View History

"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 <video_file_path> [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