@elevenlabs/n8n-nodes-elevenlabs
Version:
Official ElevenLabs node for n8n
268 lines • 8.8 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.VoiceFields = exports.VoiceOperations = void 0;
exports.VoiceOperations = [
{
displayName: 'Operation',
name: 'operation',
type: 'options',
noDataExpression: true,
options: [
{
name: 'Get',
value: 'get',
action: 'Get a voice',
description: 'Returns metadata about a specific voice',
routing: {
request: {
method: 'GET',
url: '={{"/voices/" + $parameter["voice"] }}',
},
output: {
postReceive: [
{
type: 'setKeyValue',
enabled: '={{$parameter["simplify"]}}',
properties: {
voice_id: '={{$responseItem.voice_id}}',
name: '={{$responseItem.name}}',
category: '={{$responseItem.category}}',
labels: '={{$responseItem.labels}}',
description: '={{$responseItem.description}}',
preview_url: '={{$responseItem.preview_url}}',
},
},
],
},
},
},
{
name: 'Get Many',
value: 'getAll',
action: 'Get many voices',
description: 'Returns metadata about all voices',
routing: {
request: {
method: 'GET',
url: '/voices',
qs: {
page_size: '={{$parameter["limit"]}}',
},
},
output: {
postReceive: [
{
type: 'rootProperty',
properties: {
property: 'voices',
},
},
{
type: 'setKeyValue',
enabled: '={{$parameter["simplify"]}}',
properties: {
voice_id: '={{$responseItem.voice_id}}',
name: '={{$responseItem.name}}',
category: '={{$responseItem.category}}',
labels: '={{$responseItem.labels}}',
description: '={{$responseItem.description}}',
preview_url: '={{$responseItem.preview_url}}',
},
},
],
},
},
},
{
name: 'Create Clone',
value: 'createClone',
action: 'Create a voice clone',
description: 'Create a voice clone from audio files',
routing: {
send: {
preSend: [preSendAudioFiles],
},
request: {
url: '/voices/add',
returnFullResponse: true,
method: 'POST',
headers: {
'Content-Type': 'multipart/form-data',
},
},
},
},
{
name: 'Delete',
value: 'delete',
action: 'Delete a voice',
description: 'Delete a specific voice',
routing: {
request: {
url: '={{"/voices/" + $parameter["voice"]}}',
method: 'DELETE',
},
},
},
],
default: 'get',
displayOptions: {
show: {
resource: ['voice'],
},
},
}
];
exports.VoiceFields = [
{
displayName: 'Voice',
description: 'The voice you want to use',
name: 'voice',
type: 'resourceLocator',
default: { mode: 'list', value: null },
displayOptions: {
show: {
resource: ['voice'],
operation: ['delete', 'get'],
},
},
modes: [
{
displayName: 'From list',
name: 'list',
type: 'list',
typeOptions: {
searchListMethod: 'listVoices',
searchable: true,
},
},
{
displayName: 'ID',
name: 'id',
type: 'string',
placeholder: '9BWtsMINqrJLrRacOk9x',
},
],
required: true,
},
{
displayName: 'Return All',
name: 'returnAll',
type: 'boolean',
default: false,
description: 'Whether to return all results or only up to a given limit',
displayOptions: {
show: {
operation: ['getAll'],
resource: ['voice'],
},
},
},
{
displayName: 'Limit',
name: 'limit',
type: 'number',
default: 50,
typeOptions: {
minValue: 1,
},
displayOptions: {
show: {
operation: ['getAll'],
resource: ['voice'],
returnAll: [false],
},
},
description: 'Max number of results to return',
},
{
displayName: 'Simplify',
name: 'simplify',
type: 'boolean',
default: false,
description: 'Whether to simplify the response',
displayOptions: {
show: {
resource: ['voice'],
operation: ['get', 'getAll'],
},
},
},
{
displayName: 'Name',
name: 'name',
type: 'string',
default: '',
placeholder: 'e.g. Rachel',
description: 'The name of the cloned voice',
displayOptions: {
show: {
resource: ['voice'],
operation: ['createClone'],
},
},
},
{
displayName: 'Audio Files',
name: 'audioFiles',
type: 'string',
default: '',
placeholder: 'data',
description: 'The audio files to be used for voice cloning',
displayOptions: {
show: {
resource: ['voice'],
operation: ['createClone'],
},
},
},
{
displayName: 'Additional Fields',
name: 'additionalFields',
type: 'collection',
default: {},
placeholder: 'Add Fields',
displayOptions: {
show: {
resource: ['voice'],
operation: ['createClone'],
},
},
options: [
{
displayName: 'Description',
description: 'A description of the voice',
name: 'description',
type: 'string',
default: ``,
placeholder: 'e.g. A warm, expressive voice with a touch of humor',
},
{
displayName: 'Labels',
description: 'Key / value pairs to tag this voice with',
name: 'labels',
type: 'json',
default: `{
"accent": "American",
"gender": "Female",
"age": "Middle-aged"
}`,
},
],
},
];
async function preSendAudioFiles(requestOptions) {
const formData = new FormData();
const binaryData = this.getNodeParameter('audioFiles', '');
const fileBuffer = await this.helpers.getBinaryDataBuffer(binaryData);
const name = this.getNodeParameter('name');
const description = this.getNodeParameter('additionalFields.description', '');
const labels = this.getNodeParameter('additionalFields.labels', '{}');
formData.append('name', name);
formData.append('description', description);
formData.append('labels', labels);
formData.append('files', new Blob([fileBuffer]));
requestOptions.body = formData;
return requestOptions;
}
//# sourceMappingURL=voice.js.map