107 lines
5.9 KiB
JavaScript
107 lines
5.9 KiB
JavaScript
|
|
"use strict";
|
||
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||
|
|
exports.saveConfigToFile = exports.loadConfigFromFile = exports.printStats = exports.createStats = exports.TTSProviderFactory = exports.VisionProviderFactory = exports.defaultConfig = exports.getDefaultConfig = exports.estimateCost = exports.generateAudioDescription = exports.generateAudioDescriptionFromOptions = void 0;
|
||
|
|
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("./cli/args");
|
||
|
|
// Export functions and types for use as a module
|
||
|
|
var processor_2 = require("./utils/processor");
|
||
|
|
Object.defineProperty(exports, "generateAudioDescriptionFromOptions", { enumerable: true, get: function () { return processor_2.generateAudioDescriptionFromOptions; } });
|
||
|
|
Object.defineProperty(exports, "generateAudioDescription", { enumerable: true, get: function () { return processor_2.generateAudioDescription; } });
|
||
|
|
var costEstimator_2 = require("./utils/costEstimator");
|
||
|
|
Object.defineProperty(exports, "estimateCost", { enumerable: true, get: function () { return costEstimator_2.estimateCost; } });
|
||
|
|
var config_2 = require("./config/config");
|
||
|
|
Object.defineProperty(exports, "getDefaultConfig", { enumerable: true, get: function () { return config_2.getDefaultConfig; } });
|
||
|
|
Object.defineProperty(exports, "defaultConfig", { enumerable: true, get: function () { return config_2.defaultConfig; } });
|
||
|
|
var visionProviderFactory_2 = require("./providers/vision/visionProviderFactory");
|
||
|
|
Object.defineProperty(exports, "VisionProviderFactory", { enumerable: true, get: function () { return visionProviderFactory_2.VisionProviderFactory; } });
|
||
|
|
var ttsProviderFactory_2 = require("./providers/tts/ttsProviderFactory");
|
||
|
|
Object.defineProperty(exports, "TTSProviderFactory", { enumerable: true, get: function () { return ttsProviderFactory_2.TTSProviderFactory; } });
|
||
|
|
var stats_2 = require("./config/stats");
|
||
|
|
Object.defineProperty(exports, "createStats", { enumerable: true, get: function () { return stats_2.createStats; } });
|
||
|
|
Object.defineProperty(exports, "printStats", { enumerable: true, get: function () { return stats_2.printStats; } });
|
||
|
|
var configUtils_2 = require("./utils/configUtils");
|
||
|
|
Object.defineProperty(exports, "loadConfigFromFile", { enumerable: true, get: function () { return configUtils_2.loadConfigFromFile; } });
|
||
|
|
Object.defineProperty(exports, "saveConfigToFile", { enumerable: true, get: function () { return configUtils_2.saveConfigToFile; } });
|
||
|
|
// CLI entry point when run directly
|
||
|
|
if (require.main === module) {
|
||
|
|
main().catch(err => console.error('Unhandled error:', err));
|
||
|
|
}
|
||
|
|
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.ttsInstructions) {
|
||
|
|
config.ttsInstructions = argv.ttsInstructions;
|
||
|
|
}
|
||
|
|
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 dist/index.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);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
//# sourceMappingURL=index.js.map
|