@marcmeese/n8n-nodes-communityapi-ai-client 0.3.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. package/LICENSE.md +19 -0
  2. package/README.md +290 -0
  3. package/dist/config/endpoints.d.ts +84 -0
  4. package/dist/config/endpoints.js +162 -0
  5. package/dist/config/endpoints.js.map +1 -0
  6. package/dist/credentials/CommunityAPIAIServer.credentials.d.ts +9 -0
  7. package/dist/credentials/CommunityAPIAIServer.credentials.js +36 -0
  8. package/dist/credentials/CommunityAPIAIServer.credentials.js.map +1 -0
  9. package/dist/credentials/marcmeeselogo.png +0 -0
  10. package/dist/index.d.ts +19 -0
  11. package/dist/index.js +38 -0
  12. package/dist/index.js.map +1 -0
  13. package/dist/nodes/CommunityAPIAIServer/AdvancedVoice/AdvancedVoice.node.d.ts +6 -0
  14. package/dist/nodes/CommunityAPIAIServer/AdvancedVoice/AdvancedVoice.node.js +191 -0
  15. package/dist/nodes/CommunityAPIAIServer/AdvancedVoice/AdvancedVoice.node.js.map +1 -0
  16. package/dist/nodes/CommunityAPIAIServer/AdvancedVoice/marcmeeselogo.png +0 -0
  17. package/dist/nodes/CommunityAPIAIServer/AudioDatasetCreator/AudioDatasetCreator.node.d.ts +6 -0
  18. package/dist/nodes/CommunityAPIAIServer/AudioDatasetCreator/AudioDatasetCreator.node.js +186 -0
  19. package/dist/nodes/CommunityAPIAIServer/AudioDatasetCreator/AudioDatasetCreator.node.js.map +1 -0
  20. package/dist/nodes/CommunityAPIAIServer/AudioDatasetCreator/marcmeeselogo.png +0 -0
  21. package/dist/nodes/CommunityAPIAIServer/ComfyuiImageModifyFaceswapDetailer/ComfyuiImageModifyFaceswapDetailer.node.d.ts +6 -0
  22. package/dist/nodes/CommunityAPIAIServer/ComfyuiImageModifyFaceswapDetailer/ComfyuiImageModifyFaceswapDetailer.node.js +142 -0
  23. package/dist/nodes/CommunityAPIAIServer/ComfyuiImageModifyFaceswapDetailer/ComfyuiImageModifyFaceswapDetailer.node.js.map +1 -0
  24. package/dist/nodes/CommunityAPIAIServer/ComfyuiImageModifyFaceswapDetailer/marcmeeselogo.png +0 -0
  25. package/dist/nodes/CommunityAPIAIServer/ComfyuiImageUpscaleFluxMagnific/ComfyuiImageUpscaleFluxMagnific.node.d.ts +6 -0
  26. package/dist/nodes/CommunityAPIAIServer/ComfyuiImageUpscaleFluxMagnific/ComfyuiImageUpscaleFluxMagnific.node.js +160 -0
  27. package/dist/nodes/CommunityAPIAIServer/ComfyuiImageUpscaleFluxMagnific/ComfyuiImageUpscaleFluxMagnific.node.js.map +1 -0
  28. package/dist/nodes/CommunityAPIAIServer/ComfyuiImageUpscaleFluxMagnific/marcmeeselogo.png +0 -0
  29. package/dist/nodes/CommunityAPIAIServer/ComfyuiImageUpscaleSdxlClarity/ComfyuiImageUpscaleSdxlClarity.node.d.ts +6 -0
  30. package/dist/nodes/CommunityAPIAIServer/ComfyuiImageUpscaleSdxlClarity/ComfyuiImageUpscaleSdxlClarity.node.js +160 -0
  31. package/dist/nodes/CommunityAPIAIServer/ComfyuiImageUpscaleSdxlClarity/ComfyuiImageUpscaleSdxlClarity.node.js.map +1 -0
  32. package/dist/nodes/CommunityAPIAIServer/ComfyuiImageUpscaleSdxlClarity/marcmeeselogo.png +0 -0
  33. package/dist/nodes/CommunityAPIAIServer/ComfyuiImageUpscaleSeedvr2/ComfyuiImageUpscaleSeedvr2.node.d.ts +6 -0
  34. package/dist/nodes/CommunityAPIAIServer/ComfyuiImageUpscaleSeedvr2/ComfyuiImageUpscaleSeedvr2.node.js +170 -0
  35. package/dist/nodes/CommunityAPIAIServer/ComfyuiImageUpscaleSeedvr2/ComfyuiImageUpscaleSeedvr2.node.js.map +1 -0
  36. package/dist/nodes/CommunityAPIAIServer/ComfyuiImageUpscaleSeedvr2/marcmeeselogo.png +0 -0
  37. package/dist/nodes/CommunityAPIAIServer/ComfyuiImageUpscaleStablesr/ComfyuiImageUpscaleStablesr.node.d.ts +6 -0
  38. package/dist/nodes/CommunityAPIAIServer/ComfyuiImageUpscaleStablesr/ComfyuiImageUpscaleStablesr.node.js +170 -0
  39. package/dist/nodes/CommunityAPIAIServer/ComfyuiImageUpscaleStablesr/ComfyuiImageUpscaleStablesr.node.js.map +1 -0
  40. package/dist/nodes/CommunityAPIAIServer/ComfyuiImageUpscaleStablesr/marcmeeselogo.png +0 -0
  41. package/dist/nodes/CommunityAPIAIServer/DownloadJob/DownloadJob.node.d.ts +6 -0
  42. package/dist/nodes/CommunityAPIAIServer/DownloadJob/DownloadJob.node.js +147 -0
  43. package/dist/nodes/CommunityAPIAIServer/DownloadJob/DownloadJob.node.js.map +1 -0
  44. package/dist/nodes/CommunityAPIAIServer/DownloadJob/marcmeeselogo.png +0 -0
  45. package/dist/nodes/CommunityAPIAIServer/ElevenLabsSTS/ElevenLabsSTS.node.d.ts +6 -0
  46. package/dist/nodes/CommunityAPIAIServer/ElevenLabsSTS/ElevenLabsSTS.node.js +266 -0
  47. package/dist/nodes/CommunityAPIAIServer/ElevenLabsSTS/ElevenLabsSTS.node.js.map +1 -0
  48. package/dist/nodes/CommunityAPIAIServer/ElevenLabsSTS/marcmeeselogo.png +0 -0
  49. package/dist/nodes/CommunityAPIAIServer/ElevenLabsTTS/ElevenLabsTTS.node.d.ts +6 -0
  50. package/dist/nodes/CommunityAPIAIServer/ElevenLabsTTS/ElevenLabsTTS.node.js +285 -0
  51. package/dist/nodes/CommunityAPIAIServer/ElevenLabsTTS/ElevenLabsTTS.node.js.map +1 -0
  52. package/dist/nodes/CommunityAPIAIServer/ElevenLabsTTS/marcmeeselogo.png +0 -0
  53. package/dist/nodes/CommunityAPIAIServer/GetJob/GetJob.node.d.ts +6 -0
  54. package/dist/nodes/CommunityAPIAIServer/GetJob/GetJob.node.js +51 -0
  55. package/dist/nodes/CommunityAPIAIServer/GetJob/GetJob.node.js.map +1 -0
  56. package/dist/nodes/CommunityAPIAIServer/GetJob/marcmeeselogo.png +0 -0
  57. package/dist/nodes/CommunityAPIAIServer/GetUserInfo/GetUserInfo.node.d.ts +6 -0
  58. package/dist/nodes/CommunityAPIAIServer/GetUserInfo/GetUserInfo.node.js +41 -0
  59. package/dist/nodes/CommunityAPIAIServer/GetUserInfo/GetUserInfo.node.js.map +1 -0
  60. package/dist/nodes/CommunityAPIAIServer/GetUserInfo/marcmeeselogo.png +0 -0
  61. package/dist/nodes/CommunityAPIAIServer/GptVision/marcmeeselogo.png +0 -0
  62. package/dist/nodes/CommunityAPIAIServer/MultimediaTranscriber/MultimediaTranscriber.node.d.ts +6 -0
  63. package/dist/nodes/CommunityAPIAIServer/MultimediaTranscriber/MultimediaTranscriber.node.js +157 -0
  64. package/dist/nodes/CommunityAPIAIServer/MultimediaTranscriber/MultimediaTranscriber.node.js.map +1 -0
  65. package/dist/nodes/CommunityAPIAIServer/MultimediaTranscriber/marcmeeselogo.png +0 -0
  66. package/dist/nodes/CommunityAPIAIServer/Soundstorm/Soundstorm.node.d.ts +6 -0
  67. package/dist/nodes/CommunityAPIAIServer/Soundstorm/Soundstorm.node.js +191 -0
  68. package/dist/nodes/CommunityAPIAIServer/Soundstorm/Soundstorm.node.js.map +1 -0
  69. package/dist/nodes/CommunityAPIAIServer/Soundstorm/marcmeeselogo.png +0 -0
  70. package/dist/nodes/CommunityAPIAIServer/TopazVideoUpscale/TopazVideoUpscale.node.d.ts +6 -0
  71. package/dist/nodes/CommunityAPIAIServer/TopazVideoUpscale/TopazVideoUpscale.node.js +163 -0
  72. package/dist/nodes/CommunityAPIAIServer/TopazVideoUpscale/TopazVideoUpscale.node.js.map +1 -0
  73. package/dist/nodes/CommunityAPIAIServer/TopazVideoUpscale/marcmeeselogo.png +0 -0
  74. package/dist/nodes/CommunityAPIAIServer/UploadFile/UploadFile.node.d.ts +6 -0
  75. package/dist/nodes/CommunityAPIAIServer/UploadFile/UploadFile.node.js +115 -0
  76. package/dist/nodes/CommunityAPIAIServer/UploadFile/UploadFile.node.js.map +1 -0
  77. package/dist/nodes/CommunityAPIAIServer/UploadFile/marcmeeselogo.png +0 -0
  78. package/dist/nodes/CommunityAPIAIServer/UploadFiles/UploadFiles.node.d.ts +6 -0
  79. package/dist/nodes/CommunityAPIAIServer/UploadFiles/UploadFiles.node.js +132 -0
  80. package/dist/nodes/CommunityAPIAIServer/UploadFiles/UploadFiles.node.js.map +1 -0
  81. package/dist/nodes/CommunityAPIAIServer/UploadFiles/marcmeeselogo.png +0 -0
  82. package/dist/nodes/CommunityAPIAIServer/WebpageScraper/WebpageScraper.node.d.ts +6 -0
  83. package/dist/nodes/CommunityAPIAIServer/WebpageScraper/WebpageScraper.node.js +147 -0
  84. package/dist/nodes/CommunityAPIAIServer/WebpageScraper/WebpageScraper.node.js.map +1 -0
  85. package/dist/nodes/CommunityAPIAIServer/WebpageScraper/marcmeeselogo.png +0 -0
  86. package/dist/utils/fileUploads.d.ts +37 -0
  87. package/dist/utils/fileUploads.js +166 -0
  88. package/dist/utils/fileUploads.js.map +1 -0
  89. package/dist/utils/inputProcessing.d.ts +29 -0
  90. package/dist/utils/inputProcessing.js +147 -0
  91. package/dist/utils/inputProcessing.js.map +1 -0
  92. package/package.json +69 -0
@@ -0,0 +1,191 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Soundstorm = void 0;
4
+ const endpoints_1 = require("../../../config/endpoints");
5
+ class Soundstorm {
6
+ constructor() {
7
+ this.description = {
8
+ displayName: '(AI) Soundstorm',
9
+ name: 'aiToolsSoundstorm',
10
+ icon: 'file:marcmeeselogo.png',
11
+ group: ['transform'],
12
+ version: 1,
13
+ description: 'Create soundstorm synthesis using AI models',
14
+ defaults: { name: 'Soundstorm' },
15
+ inputs: ['main'],
16
+ outputs: ['main'],
17
+ credentials: [
18
+ {
19
+ name: 'CommunityAPIAIServer',
20
+ required: true,
21
+ },
22
+ ],
23
+ properties: [
24
+ {
25
+ displayName: 'Scripts',
26
+ name: 'scripts',
27
+ type: 'string',
28
+ typeOptions: {
29
+ multipleValues: true,
30
+ },
31
+ required: true,
32
+ default: [],
33
+ description: "Scripts to be used for voice synthesis",
34
+ },
35
+ {
36
+ displayName: 'Instruction',
37
+ name: 'instruction',
38
+ type: 'string',
39
+ required: true,
40
+ default: 'Speak in a happy and energetic tone.',
41
+ description: 'Instruction on how to speak for the voice synthesis',
42
+ },
43
+ {
44
+ displayName: 'Language',
45
+ name: 'language',
46
+ type: 'options',
47
+ required: true,
48
+ options: [
49
+ { name: 'German', value: 'german' },
50
+ { name: 'English', value: 'english' },
51
+ ],
52
+ default: 'german',
53
+ description: 'The language in which the scripts are written.',
54
+ },
55
+ {
56
+ displayName: 'Gender',
57
+ name: 'gender',
58
+ type: 'options',
59
+ required: true,
60
+ options: [
61
+ { name: 'Male', value: 'male' },
62
+ { name: 'Female', value: 'female' }
63
+ ],
64
+ default: 'male',
65
+ description: 'The gender of the voice to be used for synthesis.',
66
+ },
67
+ {
68
+ displayName: 'Target format',
69
+ name: 'target_format',
70
+ type: 'options',
71
+ required: true,
72
+ options: [
73
+ { name: 'mp3', value: 'mp3' },
74
+ { name: 'wav', value: 'wav' },
75
+ ],
76
+ default: 'mp3',
77
+ description: 'Target audio format for the output files.',
78
+ },
79
+ {
80
+ displayName: 'Speed',
81
+ name: 'speed',
82
+ type: 'number',
83
+ required: false,
84
+ default: 1.0,
85
+ description: 'Speed of the voice synthesis (must be > 0)',
86
+ typeOptions: {
87
+ minValue: 0.1,
88
+ maxValue: 8.0,
89
+ numberPrecision: 2,
90
+ },
91
+ },
92
+ {
93
+ displayName: 'Callback URL',
94
+ name: 'callback_url',
95
+ type: 'string',
96
+ required: false,
97
+ default: '',
98
+ description: 'Eine optionale URL, die aufgerufen wird, wenn der Job abgeschlossen ist',
99
+ typeOptions: {
100
+ alwaysOpenEditWindow: true,
101
+ },
102
+ },
103
+ {
104
+ displayName: 'Callback Data',
105
+ name: 'callback_payload',
106
+ type: 'fixedCollection',
107
+ placeholder: 'Add Callback Data',
108
+ description: 'Custom data that will be returned with the job completion notification',
109
+ default: {},
110
+ typeOptions: {
111
+ multipleValues: true,
112
+ },
113
+ options: [
114
+ {
115
+ displayName: 'Parameters',
116
+ name: 'parameters',
117
+ values: [
118
+ {
119
+ displayName: 'Key',
120
+ name: 'key',
121
+ type: 'string',
122
+ default: '',
123
+ description: 'Parameter key',
124
+ required: true,
125
+ },
126
+ {
127
+ displayName: 'Value',
128
+ name: 'value',
129
+ type: 'string',
130
+ default: '',
131
+ description: 'Parameter value (can be mapped from previous nodes)',
132
+ required: true,
133
+ },
134
+ ],
135
+ }
136
+ ]
137
+ },
138
+ ],
139
+ };
140
+ }
141
+ async execute() {
142
+ const items = this.getInputData();
143
+ const returnData = [];
144
+ for (let i = 0; i < items.length; i++) {
145
+ const scripts = this.getNodeParameter('scripts', i);
146
+ const instruction = this.getNodeParameter('instruction', i);
147
+ const language = this.getNodeParameter('language', i);
148
+ const gender = this.getNodeParameter('gender', i);
149
+ const targetFormat = this.getNodeParameter('target_format', i);
150
+ const speed = this.getNodeParameter('speed', i);
151
+ const callbackUrl = this.getNodeParameter('callback_url', i);
152
+ const callbackPayloadRaw = this.getNodeParameter('callback_payload', i);
153
+ // Job erstellen mit file_id
154
+ const formData = {
155
+ scripts: scripts,
156
+ instruction: instruction,
157
+ language: language,
158
+ gender: gender,
159
+ target_format: targetFormat,
160
+ speed: speed
161
+ };
162
+ if (callbackUrl) {
163
+ formData['callback_url'] = callbackUrl;
164
+ }
165
+ // Callback Payload von fixedCollection in JSON umwandeln
166
+ if (callbackPayloadRaw && callbackPayloadRaw.parameters) {
167
+ const callbackPayload = {};
168
+ // Jedes Key-Value Paar aus der fixedCollection in ein Objekt umwandeln
169
+ for (const param of callbackPayloadRaw.parameters) {
170
+ if (param.key && param.value !== undefined) {
171
+ callbackPayload[param.key] = param.value;
172
+ }
173
+ }
174
+ // Nur hinzufügen wenn es tatsächlich Daten gibt
175
+ if (Object.keys(callbackPayload).length > 0) {
176
+ formData['callback_payload'] = JSON.stringify(callbackPayload);
177
+ }
178
+ }
179
+ const response = await this.helpers.requestWithAuthentication.call(this, 'CommunityAPIAIServer', {
180
+ method: 'POST',
181
+ url: endpoints_1.EndpointBuilder.getSoundstormUrl(),
182
+ formData: formData,
183
+ json: true
184
+ });
185
+ returnData.push({ json: response });
186
+ }
187
+ return this.prepareOutputData(returnData);
188
+ }
189
+ }
190
+ exports.Soundstorm = Soundstorm;
191
+ //# sourceMappingURL=Soundstorm.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Soundstorm.node.js","sourceRoot":"","sources":["../../../../src/nodes/CommunityAPIAIServer/Soundstorm/Soundstorm.node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { IExecuteFunctions } from 'n8n-workflow';
2
+ import { INodeExecutionData, INodeType, INodeTypeDescription } from 'n8n-workflow';
3
+ export declare class TopazVideoUpscale implements INodeType {
4
+ description: INodeTypeDescription;
5
+ execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
6
+ }
@@ -0,0 +1,163 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TopazVideoUpscale = void 0;
4
+ const endpoints_1 = require("../../../config/endpoints");
5
+ const inputProcessing_1 = require("../../../utils/inputProcessing");
6
+ class TopazVideoUpscale {
7
+ constructor() {
8
+ this.description = {
9
+ displayName: '(AI) Upscale Topaz Video',
10
+ name: 'aiToolsTopazVideoUpscale',
11
+ icon: 'file:marcmeeselogo.png',
12
+ group: ['transform'],
13
+ version: 1,
14
+ description: 'Upscale videos using Topaz AI',
15
+ defaults: { name: 'TopazVideoUpscale' },
16
+ inputs: ['main'],
17
+ outputs: ['main'],
18
+ credentials: [
19
+ {
20
+ name: 'CommunityAPIAIServer',
21
+ required: true,
22
+ },
23
+ ],
24
+ properties: [
25
+ {
26
+ displayName: 'Input Video Path',
27
+ name: 'input_video',
28
+ type: 'string',
29
+ required: true,
30
+ default: '',
31
+ description: (0, inputProcessing_1.getInputDescription)('Video', false),
32
+ },
33
+ {
34
+ displayName: 'Framerate',
35
+ name: 'fps',
36
+ type: 'number',
37
+ required: false,
38
+ default: -1,
39
+ description: 'Ziel FPS. Verwenden Sie -1, um die ursprüngliche Framerate beizubehalten.',
40
+ },
41
+ {
42
+ displayName: 'Scale Factor',
43
+ name: 'factor',
44
+ type: 'number',
45
+ required: false,
46
+ default: -1,
47
+ description: 'Scale Factor. Use -1 to leave the original size.',
48
+ },
49
+ {
50
+ displayName: 'Target format',
51
+ name: 'target_format',
52
+ type: 'options',
53
+ required: true,
54
+ options: [
55
+ { name: 'mp4', value: 'mp4' },
56
+ { name: 'mov', value: 'mov' },
57
+ { name: 'mkv', value: 'mkv' },
58
+ { name: 'webm', value: 'webm' }
59
+ ],
60
+ default: 'mp4',
61
+ description: 'Zielformat für das skalierte Video',
62
+ },
63
+ {
64
+ displayName: 'Callback URL',
65
+ name: 'callback_url',
66
+ type: 'string',
67
+ required: false,
68
+ default: '',
69
+ description: 'Eine optionale URL, die aufgerufen wird, wenn der Job abgeschlossen ist',
70
+ typeOptions: {
71
+ alwaysOpenEditWindow: true,
72
+ },
73
+ },
74
+ {
75
+ displayName: 'Callback Data',
76
+ name: 'callback_payload',
77
+ type: 'fixedCollection',
78
+ placeholder: 'Add Callback Data',
79
+ description: 'Custom data that will be returned with the job completion notification',
80
+ default: {},
81
+ typeOptions: {
82
+ multipleValues: true,
83
+ },
84
+ options: [
85
+ {
86
+ displayName: 'Parameters',
87
+ name: 'parameters',
88
+ values: [
89
+ {
90
+ displayName: 'Key',
91
+ name: 'key',
92
+ type: 'string',
93
+ default: '',
94
+ description: 'Parameter key',
95
+ required: true,
96
+ },
97
+ {
98
+ displayName: 'Value',
99
+ name: 'value',
100
+ type: 'string',
101
+ default: '',
102
+ description: 'Parameter value (can be mapped from previous nodes)',
103
+ required: true,
104
+ },
105
+ ],
106
+ }
107
+ ]
108
+ },
109
+ ],
110
+ };
111
+ }
112
+ async execute() {
113
+ const items = this.getInputData();
114
+ const returnData = [];
115
+ for (let i = 0; i < items.length; i++) {
116
+ const inputVideoPath = this.getNodeParameter('input_video', i);
117
+ const scale_factor = this.getNodeParameter('factor', i);
118
+ const target_format = this.getNodeParameter('target_format', i);
119
+ const framerate = this.getNodeParameter('fps', i);
120
+ const callbackUrl = this.getNodeParameter('callback_url', i);
121
+ const callbackPayloadRaw = this.getNodeParameter('callback_payload', i);
122
+ const validExtensions = [...endpoints_1.SUPPORTED_FORMATS.VIDEO];
123
+ // Eingabe intelligent verarbeiten mit inputProcessing Utils
124
+ const processedInputVideoPath = await (0, inputProcessing_1.processMediaInput)(this, inputVideoPath, validExtensions);
125
+ // Debug-Informationen loggen
126
+ (0, inputProcessing_1.logInputProcessing)(inputVideoPath, processedInputVideoPath);
127
+ // Job erstellen mit file_id
128
+ const formData = {
129
+ input_video: processedInputVideoPath,
130
+ factor: scale_factor,
131
+ target_format: target_format,
132
+ fps: framerate
133
+ };
134
+ if (callbackUrl) {
135
+ formData['callback_url'] = callbackUrl;
136
+ }
137
+ // Callback Payload von fixedCollection in JSON umwandeln
138
+ if (callbackPayloadRaw && callbackPayloadRaw.parameters) {
139
+ const callbackPayload = {};
140
+ // Jedes Key-Value Paar aus der fixedCollection in ein Objekt umwandeln
141
+ for (const param of callbackPayloadRaw.parameters) {
142
+ if (param.key && param.value !== undefined) {
143
+ callbackPayload[param.key] = param.value;
144
+ }
145
+ }
146
+ // Nur hinzufügen wenn es tatsächlich Daten gibt
147
+ if (Object.keys(callbackPayload).length > 0) {
148
+ formData['callback_payload'] = JSON.stringify(callbackPayload);
149
+ }
150
+ }
151
+ const response = await this.helpers.requestWithAuthentication.call(this, 'CommunityAPIAIServer', {
152
+ method: 'POST',
153
+ url: endpoints_1.EndpointBuilder.getTopazVideoUrl(),
154
+ form: formData,
155
+ json: true
156
+ });
157
+ returnData.push({ json: response });
158
+ }
159
+ return this.prepareOutputData(returnData);
160
+ }
161
+ }
162
+ exports.TopazVideoUpscale = TopazVideoUpscale;
163
+ //# sourceMappingURL=TopazVideoUpscale.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TopazVideoUpscale.node.js","sourceRoot":"","sources":["../../../../src/nodes/CommunityAPIAIServer/TopazVideoUpscale/TopazVideoUpscale.node.ts"],"names":[],"mappings":";;;AAOA,yDAA+E;AAC/E,oEAIwC;AAExC,MAAa,iBAAiB;IAA9B;QACC,gBAAW,GAAyB;YACnC,WAAW,EAAE,0BAA0B;YACvC,IAAI,EAAE,0BAA0B;YAChC,IAAI,EAAE,wBAAwB;YAC9B,KAAK,EAAE,CAAC,WAAW,CAAC;YACpB,OAAO,EAAE,CAAC;YACV,WAAW,EAAE,+BAA+B;YAC5C,QAAQ,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE;YACvC,MAAM,EAAE,CAAC,MAAM,CAAC;YAChB,OAAO,EAAE,CAAC,MAAM,CAAC;YACjB,WAAW,EAAE;gBACZ;oBACC,IAAI,EAAE,sBAAsB;oBAC5B,QAAQ,EAAE,IAAI;iBACd;aACD;YACD,UAAU,EAAE;gBACX;oBACC,WAAW,EAAE,kBAAkB;oBAC/B,IAAI,EAAE,aAAa;oBACnB,IAAI,EAAE,QAAQ;oBACd,QAAQ,EAAE,IAAI;oBACd,OAAO,EAAE,EAAE;oBACX,WAAW,EAAE,IAAA,qCAAmB,EAAC,OAAO,EAAE,KAAK,CAAC;iBAChD;gBACD;oBACC,WAAW,EAAE,WAAW;oBACxB,IAAI,EAAE,KAAK;oBACX,IAAI,EAAE,QAAQ;oBACd,QAAQ,EAAE,KAAK;oBACf,OAAO,EAAE,CAAC,CAAC;oBACX,WAAW,EAAE,2EAA2E;iBACxF;gBACD;oBACC,WAAW,EAAE,cAAc;oBAC3B,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,QAAQ;oBACd,QAAQ,EAAE,KAAK;oBACf,OAAO,EAAE,CAAC,CAAC;oBACX,WAAW,EAAE,kDAAkD;iBAC/D;gBACD;oBACC,WAAW,EAAE,eAAe;oBAC5B,IAAI,EAAE,eAAe;oBACrB,IAAI,EAAE,SAAS;oBACf,QAAQ,EAAE,IAAI;oBACd,OAAO,EAAE;wBACR,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;wBAC7B,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;wBAC7B,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;wBAC7B,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;qBAC/B;oBACD,OAAO,EAAE,KAAK;oBACd,WAAW,EAAE,oCAAoC;iBACjD;gBACD;oBACC,WAAW,EAAE,cAAc;oBAC3B,IAAI,EAAE,cAAc;oBACpB,IAAI,EAAE,QAAQ;oBACd,QAAQ,EAAE,KAAK;oBACf,OAAO,EAAE,EAAE;oBACX,WAAW,EAAE,yEAAyE;oBACtF,WAAW,EAAE;wBACZ,oBAAoB,EAAE,IAAI;qBAC1B;iBACD;gBACD;oBACC,WAAW,EAAE,eAAe;oBAC5B,IAAI,EAAE,kBAAkB;oBACxB,IAAI,EAAE,iBAAiB;oBACvB,WAAW,EAAE,mBAAmB;oBAChC,WAAW,EAAE,wEAAwE;oBACrF,OAAO,EAAE,EAAE;oBACX,WAAW,EAAE;wBACZ,cAAc,EAAE,IAAI;qBACpB;oBACD,OAAO,EAAE;wBACR;4BACC,WAAW,EAAE,YAAY;4BACzB,IAAI,EAAE,YAAY;4BAClB,MAAM,EAAE;gCACP;oCACC,WAAW,EAAE,KAAK;oCAClB,IAAI,EAAE,KAAK;oCACX,IAAI,EAAE,QAAQ;oCACd,OAAO,EAAE,EAAE;oCACX,WAAW,EAAE,eAAe;oCAC5B,QAAQ,EAAE,IAAI;iCACd;gCACD;oCACC,WAAW,EAAE,OAAO;oCACpB,IAAI,EAAE,OAAO;oCACb,IAAI,EAAE,QAAQ;oCACd,OAAO,EAAE,EAAE;oCACX,WAAW,EAAE,qDAAqD;oCAClE,QAAQ,EAAE,IAAI;iCACd;6BACD;yBACD;qBAAC;iBACH;aACD;SACD,CAAC;IAmEH,CAAC;IAjEA,KAAK,CAAC,OAAO;QACZ,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAClC,MAAM,UAAU,GAAyB,EAAE,CAAC;QAE5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC,CAAW,CAAC;YACzE,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAW,CAAC;YAClE,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,eAAe,EAAE,CAAC,CAAW,CAAC;YAC1E,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC,CAAW,CAAC;YAC5D,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE,CAAC,CAAW,CAAC;YACvE,MAAM,kBAAkB,GAAG,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,CAAC,CAAQ,CAAC;YAE/E,MAAM,eAAe,GAAG,CAAC,GAAG,6BAAiB,CAAC,KAAK,CAAC,CAAC;YAErD,4DAA4D;YAC5D,MAAM,uBAAuB,GAAG,MAAM,IAAA,mCAAiB,EAAC,IAAI,EAAE,cAAc,EAAE,eAAe,CAAC,CAAC;YAE/F,6BAA6B;YAC7B,IAAA,oCAAkB,EAAC,cAAc,EAAE,uBAAuB,CAAC,CAAC;YAE5D,4BAA4B;YAC5B,MAAM,QAAQ,GAAgB;gBAC7B,WAAW,EAAE,uBAAuB;gBACpC,MAAM,EAAE,YAAY;gBACpB,aAAa,EAAE,aAAa;gBAC5B,GAAG,EAAE,SAAS;aACd,CAAC;YAEF,IAAI,WAAW,EAAE,CAAC;gBACjB,QAAQ,CAAC,cAAc,CAAC,GAAG,WAAW,CAAC;YACxC,CAAC;YAED,yDAAyD;YACzD,IAAI,kBAAkB,IAAI,kBAAkB,CAAC,UAAU,EAAE,CAAC;gBACzD,MAAM,eAAe,GAAgB,EAAE,CAAC;gBAExC,uEAAuE;gBACvE,KAAK,MAAM,KAAK,IAAI,kBAAkB,CAAC,UAAU,EAAE,CAAC;oBACnD,IAAI,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;wBAC5C,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;oBAC1C,CAAC;gBACF,CAAC;gBAED,gDAAgD;gBAChD,IAAI,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC7C,QAAQ,CAAC,kBAAkB,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;gBAChE,CAAC;YACF,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,yBAAyB,CAAC,IAAI,CACjE,IAAI,EACJ,sBAAsB,EACtB;gBACC,MAAM,EAAE,MAAM;gBACd,GAAG,EAAE,2BAAe,CAAC,gBAAgB,EAAE;gBACvC,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,IAAI;aACV,CACD,CAAC;YAEF,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAuB,EAAE,CAAC,CAAC;QACpD,CAAC;QAED,OAAO,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAC3C,CAAC;CACD;AAzKD,8CAyKC"}
@@ -0,0 +1,6 @@
1
+ import type { IExecuteFunctions } from 'n8n-workflow';
2
+ import { INodeExecutionData, INodeType, INodeTypeDescription } from 'n8n-workflow';
3
+ export declare class UploadFile implements INodeType {
4
+ description: INodeTypeDescription;
5
+ execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
6
+ }
@@ -0,0 +1,115 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.UploadFile = void 0;
40
+ const endpoints_1 = require("../../../config/endpoints");
41
+ const mime_1 = __importDefault(require("mime"));
42
+ const fs = __importStar(require("fs"));
43
+ const path = __importStar(require("path"));
44
+ class UploadFile {
45
+ constructor() {
46
+ this.description = {
47
+ displayName: '(AI) Upload File',
48
+ name: 'aiToolsUploadFile',
49
+ icon: 'file:marcmeeselogo.png',
50
+ group: ['transform'],
51
+ version: 1,
52
+ description: 'Erstellt eine Presigned URL für eine lokale Datei und lädt sie hoch',
53
+ defaults: { name: 'UploadFile' },
54
+ inputs: ['main'],
55
+ outputs: ['main'],
56
+ credentials: [
57
+ {
58
+ name: 'CommunityAPIAIServer',
59
+ required: true,
60
+ },
61
+ ],
62
+ properties: [
63
+ {
64
+ displayName: 'Local File Path',
65
+ name: 'local_file_path',
66
+ type: 'string',
67
+ required: true,
68
+ default: '',
69
+ description: 'Pfad zur lokalen Datei, die hochgeladen werden soll',
70
+ placeholder: '/path/to/your/file.pdf',
71
+ },
72
+ ],
73
+ };
74
+ }
75
+ async execute() {
76
+ const items = this.getInputData();
77
+ const returnData = [];
78
+ for (let i = 0; i < items.length; i++) {
79
+ const localFilePath = this.getNodeParameter('local_file_path', i);
80
+ if (!fs.existsSync(localFilePath)) {
81
+ throw new Error(`Lokale Datei nicht gefunden: ${localFilePath}`);
82
+ }
83
+ const filename = path.basename(localFilePath);
84
+ // Presigned URL anfordern
85
+ const presignedResponse = await this.helpers.requestWithAuthentication.call(this, 'CommunityAPIAIServer', {
86
+ method: 'POST',
87
+ url: `${endpoints_1.API_ENDPOINTS.AI_BASE}${endpoints_1.API_ENDPOINTS.PRESIGN_FILE}`,
88
+ form: { filename: filename },
89
+ json: true,
90
+ });
91
+ if (!(presignedResponse === null || presignedResponse === void 0 ? void 0 : presignedResponse.presigned_url) || !(presignedResponse === null || presignedResponse === void 0 ? void 0 : presignedResponse.file_id)) {
92
+ throw new Error('Fehler beim Anfordern der Presigned URL');
93
+ }
94
+ // Datei hochladen
95
+ const fileBuffer = fs.readFileSync(localFilePath);
96
+ const contentType = mime_1.default.getType(localFilePath) || 'application/octet-stream';
97
+ await this.helpers.request({
98
+ method: 'PUT',
99
+ url: presignedResponse.presigned_url,
100
+ body: fileBuffer,
101
+ headers: {
102
+ 'Content-Type': contentType,
103
+ },
104
+ });
105
+ const result = {
106
+ file_id: presignedResponse.file_id,
107
+ filename: presignedResponse.source_filename,
108
+ };
109
+ returnData.push({ json: result });
110
+ }
111
+ return this.prepareOutputData(returnData);
112
+ }
113
+ }
114
+ exports.UploadFile = UploadFile;
115
+ //# sourceMappingURL=UploadFile.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UploadFile.node.js","sourceRoot":"","sources":["../../../../src/nodes/CommunityAPIAIServer/UploadFile/UploadFile.node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { IExecuteFunctions } from 'n8n-workflow';
2
+ import { INodeExecutionData, INodeType, INodeTypeDescription } from 'n8n-workflow';
3
+ export declare class UploadFiles implements INodeType {
4
+ description: INodeTypeDescription;
5
+ execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
6
+ }
@@ -0,0 +1,132 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.UploadFiles = void 0;
40
+ const endpoints_1 = require("../../../config/endpoints");
41
+ const mime_1 = __importDefault(require("mime"));
42
+ const fs = __importStar(require("fs"));
43
+ const path = __importStar(require("path"));
44
+ class UploadFiles {
45
+ constructor() {
46
+ this.description = {
47
+ displayName: '(AI) Upload Files Batch',
48
+ name: 'aiToolsUploadFiles',
49
+ icon: 'file:marcmeeselogo.png',
50
+ group: ['transform'],
51
+ version: 1,
52
+ description: 'Erstellt Presigned URLs für mehrere lokale Dateien und lädt sie parallel hoch',
53
+ defaults: { name: 'UploadFiles' },
54
+ inputs: ['main'],
55
+ outputs: ['main'],
56
+ credentials: [
57
+ {
58
+ name: 'CommunityAPIAIServer',
59
+ required: true,
60
+ },
61
+ ],
62
+ properties: [
63
+ {
64
+ displayName: 'Local File Paths',
65
+ name: 'local_file_paths',
66
+ type: 'string',
67
+ typeOptions: {
68
+ multipleValues: true,
69
+ },
70
+ required: true,
71
+ default: [],
72
+ description: 'Pfade zu den lokalen Dateien, die hochgeladen werden sollen',
73
+ placeholder: '/path/to/file1.pdf, /path/to/file2.jpg, ...',
74
+ },
75
+ ],
76
+ };
77
+ }
78
+ async execute() {
79
+ const items = this.getInputData();
80
+ const returnData = [];
81
+ for (let i = 0; i < items.length; i++) {
82
+ const localFilePaths = this.getNodeParameter('local_file_paths', i);
83
+ if (localFilePaths.length === 0) {
84
+ throw new Error('Mindestens eine Datei muss angegeben werden');
85
+ }
86
+ // Validierung aller Dateien
87
+ for (const filePath of localFilePaths) {
88
+ if (!fs.existsSync(filePath)) {
89
+ throw new Error(`Lokale Datei nicht gefunden: ${filePath}`);
90
+ }
91
+ }
92
+ const filenames = localFilePaths.map(filePath => path.basename(filePath));
93
+ // Batch Presigned URLs anfordern
94
+ const batchResponse = await this.helpers.requestWithAuthentication.call(this, 'CommunityAPIAIServer', {
95
+ method: 'POST',
96
+ url: `${endpoints_1.API_ENDPOINTS.AI_BASE}${endpoints_1.API_ENDPOINTS.PRESIGN_FILE_BATCH}`,
97
+ form: { filenames: filenames },
98
+ json: true,
99
+ });
100
+ if (!(batchResponse === null || batchResponse === void 0 ? void 0 : batchResponse.presigned) || batchResponse.presigned.length !== localFilePaths.length) {
101
+ throw new Error('Fehler beim Anfordern der Batch Presigned URLs');
102
+ }
103
+ // Alle Dateien parallel hochladen
104
+ const uploadPromises = localFilePaths.map(async (filePath, index) => {
105
+ const presignedData = batchResponse.presigned[index];
106
+ const fileBuffer = fs.readFileSync(filePath);
107
+ const contentType = mime_1.default.getType(filePath) || 'application/octet-stream';
108
+ await this.helpers.request({
109
+ method: 'PUT',
110
+ url: presignedData.presigned_url,
111
+ body: fileBuffer,
112
+ headers: {
113
+ 'Content-Type': contentType,
114
+ },
115
+ });
116
+ return presignedData;
117
+ });
118
+ await Promise.all(uploadPromises);
119
+ const mappedResults = batchResponse.presigned.map(item => ({
120
+ file_id: item.file_id,
121
+ filename: item.source_filename,
122
+ }));
123
+ const result = {
124
+ presigned: mappedResults,
125
+ };
126
+ returnData.push({ json: result });
127
+ }
128
+ return this.prepareOutputData(returnData);
129
+ }
130
+ }
131
+ exports.UploadFiles = UploadFiles;
132
+ //# sourceMappingURL=UploadFiles.node.js.map