@n8n/n8n-nodes-langchain
Version:
205 lines • 6.39 kB
JavaScript
;
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