UNPKG

@n8n/n8n-nodes-langchain

Version:
205 lines 6.39 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.description = void 0; exports.execute = execute; const n8n_workflow_1 = require("n8n-workflow"); const transport_1 = require("../../transport"); const helpers_1 = require("./helpers"); const modelOptionsV1 = [ { name: 'MiniMax-Hailuo-2.3', value: 'MiniMax-Hailuo-2.3', description: 'Hailuo 2.3 video generation model with enhanced realism', }, { name: 'MiniMax-Hailuo-02', value: 'MiniMax-Hailuo-02', description: 'Video model supporting higher resolution and longer duration', }, { name: 'T2V-01-Director', value: 'T2V-01-Director', description: 'Text-to-video model with camera control commands', }, { name: 'T2V-01', value: 'T2V-01', description: 'Standard text-to-video model', }, ]; const modelOptionsV1_1 = [ { name: helpers_1.H3_MODEL, value: helpers_1.H3_MODEL, description: 'Latest multimodal video generation model', }, ...modelOptionsV1, ]; const properties = [ { displayName: 'Model', name: 'modelId', type: 'options', options: modelOptionsV1, default: 'MiniMax-Hailuo-2.3', description: 'The model to use for video generation', displayOptions: { show: { '@version': [1], }, }, }, { displayName: 'Model', name: 'modelId', type: 'options', options: modelOptionsV1_1, default: helpers_1.H3_MODEL, description: 'The model to use for video generation', displayOptions: { show: { '@version': [{ _cnd: { gte: 1.1 } }], }, }, }, { displayName: 'Prompt', name: 'prompt', type: 'string', typeOptions: { rows: 4, }, default: '', required: true, description: 'Text description of the video (max 2000 characters). Camera movements can be controlled using [command] syntax, e.g. [Push in], [Pan left].', placeholder: 'e.g. A cat playing with a ball of yarn [Static shot]', displayOptions: { hide: { modelId: [helpers_1.H3_MODEL], }, }, }, ...helpers_1.h3VideoProperties, { displayName: 'Duration (Seconds)', name: 'duration', type: 'options', options: [ { name: '6 Seconds', value: 6 }, { name: '10 Seconds', value: 10 }, ], default: 6, description: 'Duration of the generated video', displayOptions: { hide: { modelId: [helpers_1.H3_MODEL], }, }, }, { displayName: 'Resolution', name: 'resolution', type: 'options', options: [ { name: '720P', value: '720P' }, { name: '768P', value: '768P' }, { name: '1080P', value: '1080P' }, ], default: '768P', description: 'Resolution of the generated video. Available options depend on the model.', displayOptions: { hide: { modelId: [helpers_1.H3_MODEL], }, }, }, { displayName: 'Aspect Ratio', name: 'ratio', type: 'options', options: [ { name: '1:1', value: '1:1' }, { name: '16:9', value: '16:9' }, { name: '21:9', value: '21:9' }, { name: '3:4', value: '3:4' }, { name: '4:3', value: '4:3' }, { name: '9:16', value: '9:16' }, ], default: '16:9', description: 'Aspect ratio of the generated video', displayOptions: { show: { modelId: [helpers_1.H3_MODEL], '@version': [{ _cnd: { gte: 1.1 } }], }, }, }, { displayName: 'Download Video', name: 'downloadVideo', type: 'boolean', default: true, description: 'Whether to download the generated video as binary data. When disabled, only the video URL is returned.', }, { displayName: 'Options', name: 'options', placeholder: 'Add Option', type: 'collection', default: {}, displayOptions: { hide: { modelId: [helpers_1.H3_MODEL], }, }, options: [ { displayName: 'Prompt Optimizer', name: 'promptOptimizer', type: 'boolean', default: true, description: 'Whether to automatically optimize the prompt for better results', }, ], }, ]; const displayOptions = { show: { resource: ['video'], operation: ['textToVideo'], }, }; exports.description = (0, n8n_workflow_1.updateDisplayOptions)(displayOptions, properties); async function execute(itemIndex) { const model = this.getNodeParameter('modelId', itemIndex); const prompt = this.getNodeParameter('prompt', itemIndex); const downloadVideo = this.getNodeParameter('downloadVideo', itemIndex, true); const isH3 = model === helpers_1.H3_MODEL; let body; if (isH3) { (0, helpers_1.assertH3Prompt)(this, prompt); const ratio = this.getNodeParameter('ratio', itemIndex); body = { model, content: [{ type: 'text', text: prompt }], duration: this.getNodeParameter('h3Duration', itemIndex), resolution: this.getNodeParameter('h3Resolution', itemIndex), ratio, }; } else { const options = this.getNodeParameter('options', itemIndex, {}); body = { model, prompt, duration: this.getNodeParameter('duration', itemIndex), resolution: this.getNodeParameter('resolution', itemIndex), }; if (options.promptOptimizer !== undefined) { body.prompt_optimizer = options.promptOptimizer; } } const result = await transport_1.generateVideo.call(this, isH3 ? 'v2' : 'v1', body); return await (0, helpers_1.prepareVideoOutput)(this, itemIndex, result, downloadVideo); } //# sourceMappingURL=generate.t2v.operation.js.map