@marcmeese/n8n-nodes-mediatranscriber 0.0.1
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.
- package/LICENSE.md +19 -0
- package/README.md +46 -0
- package/dist/credentials/MediaTranscriberApi.credentials.d.ts +10 -0
- package/dist/credentials/MediaTranscriberApi.credentials.js +46 -0
- package/dist/credentials/MediaTranscriberApi.credentials.js.map +1 -0
- package/dist/credentials/marcmeeselogo.png +0 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -0
- package/dist/nodes/MediaTranscriber/DeleteJob/DeleteJob.node.d.ts +5 -0
- package/dist/nodes/MediaTranscriber/DeleteJob/DeleteJob.node.js +34 -0
- package/dist/nodes/MediaTranscriber/DeleteJob/DeleteJob.node.js.map +1 -0
- package/dist/nodes/MediaTranscriber/DeleteJob/marcmeeselogo.png +0 -0
- package/dist/nodes/MediaTranscriber/GetJob/GetJob.node.d.ts +5 -0
- package/dist/nodes/MediaTranscriber/GetJob/GetJob.node.js +32 -0
- package/dist/nodes/MediaTranscriber/GetJob/GetJob.node.js.map +1 -0
- package/dist/nodes/MediaTranscriber/GetJob/marcmeeselogo.png +0 -0
- package/dist/nodes/MediaTranscriber/GetTranscript/GetTranscript.node.d.ts +5 -0
- package/dist/nodes/MediaTranscriber/GetTranscript/GetTranscript.node.js +59 -0
- package/dist/nodes/MediaTranscriber/GetTranscript/GetTranscript.node.js.map +1 -0
- package/dist/nodes/MediaTranscriber/GetTranscript/marcmeeselogo.png +0 -0
- package/dist/nodes/MediaTranscriber/Transcribe/Transcribe.node.d.ts +5 -0
- package/dist/nodes/MediaTranscriber/Transcribe/Transcribe.node.js +192 -0
- package/dist/nodes/MediaTranscriber/Transcribe/Transcribe.node.js.map +1 -0
- package/dist/nodes/MediaTranscriber/Transcribe/marcmeeselogo.png +0 -0
- package/dist/nodes/MediaTranscriber/jobId.d.ts +3 -0
- package/dist/nodes/MediaTranscriber/jobId.js +13 -0
- package/dist/nodes/MediaTranscriber/jobId.js.map +1 -0
- package/dist/utils/errors.d.ts +16 -0
- package/dist/utils/errors.js +72 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/execute.d.ts +6 -0
- package/dist/utils/execute.js +26 -0
- package/dist/utils/execute.js.map +1 -0
- package/dist/utils/files.d.ts +5 -0
- package/dist/utils/files.js +47 -0
- package/dist/utils/files.js.map +1 -0
- package/dist/utils/input.d.ts +13 -0
- package/dist/utils/input.js +48 -0
- package/dist/utils/input.js.map +1 -0
- package/dist/utils/jobRequest.d.ts +13 -0
- package/dist/utils/jobRequest.js +36 -0
- package/dist/utils/jobRequest.js.map +1 -0
- package/dist/utils/jobs.d.ts +3 -0
- package/dist/utils/jobs.js +12 -0
- package/dist/utils/jobs.js.map +1 -0
- package/dist/utils/multipart.d.ts +20 -0
- package/dist/utils/multipart.js +36 -0
- package/dist/utils/multipart.js.map +1 -0
- package/dist/utils/polling.d.ts +11 -0
- package/dist/utils/polling.js +25 -0
- package/dist/utils/polling.js.map +1 -0
- package/dist/utils/request.d.ts +17 -0
- package/dist/utils/request.js +41 -0
- package/dist/utils/request.js.map +1 -0
- package/dist/utils/transcriptFlow.d.ts +17 -0
- package/dist/utils/transcriptFlow.js +67 -0
- package/dist/utils/transcriptFlow.js.map +1 -0
- package/dist/utils/url.d.ts +4 -0
- package/dist/utils/url.js +10 -0
- package/dist/utils/url.js.map +1 -0
- package/package.json +67 -0
package/LICENSE.md
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
Copyright 2022 n8n
|
|
2
|
+
|
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
4
|
+
this software and associated documentation files (the "Software"), to deal in
|
|
5
|
+
the Software without restriction, including without limitation the rights to
|
|
6
|
+
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
|
7
|
+
of the Software, and to permit persons to whom the Software is furnished to do
|
|
8
|
+
so, subject to the following conditions:
|
|
9
|
+
|
|
10
|
+
The above copyright notice and this permission notice shall be included in all
|
|
11
|
+
copies or substantial portions of the Software.
|
|
12
|
+
|
|
13
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
14
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
15
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
16
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
17
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
18
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
19
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# @marcmeese/n8n-nodes-mediatranscriber
|
|
2
|
+
|
|
3
|
+
n8n Community Nodes für die [MediaTranscriber](https://github.com/Ranktotop/mediatranscriber) API: Audio und Video (Datei oder URL) mit WhisperX transkribieren – als JSON mit Segmenten/Sprechern, TXT oder SRT.
|
|
4
|
+
|
|
5
|
+
Voraussetzung: MediaTranscriber mit `GET /v1/auth/check` und `language` pro Job (Phase 11, T44/T45).
|
|
6
|
+
|
|
7
|
+
## Credential „MediaTranscriber API“
|
|
8
|
+
|
|
9
|
+
| Feld | Beschreibung |
|
|
10
|
+
|---|---|
|
|
11
|
+
| Base URL | Root-URL der API ohne `/v1`, z. B. `http://mediatranscriber_server:8000` oder der UI-Proxy `http://host:8080/api` |
|
|
12
|
+
| API Key | Wird als Header `X-API-Key` gesendet |
|
|
13
|
+
|
|
14
|
+
Der Credential-Test ruft `GET /v1/auth/check` auf.
|
|
15
|
+
|
|
16
|
+
## Nodes
|
|
17
|
+
|
|
18
|
+
| Node | Funktion |
|
|
19
|
+
|---|---|
|
|
20
|
+
| **(MediaTranscriber) Transcribe** | Datei oder URL transkribieren. Wartet standardmäßig und gibt das Transkript aus. |
|
|
21
|
+
| **(MediaTranscriber) Get Job** | Status, erkannte Sprache und Dauer eines Jobs |
|
|
22
|
+
| **(MediaTranscriber) Get Transcript** | Transkript eines fertigen Jobs als JSON (im Item), TXT oder SRT (Binary) |
|
|
23
|
+
| **(MediaTranscriber) Delete Job** | Job samt Transkript auf dem Server löschen |
|
|
24
|
+
|
|
25
|
+
### Transcribe
|
|
26
|
+
|
|
27
|
+
- **Eingabe:** Binary-Property (Standard `data`), lokaler Pfad im n8n-Container oder URL (serverseitig per yt-dlp, z. B. YouTube).
|
|
28
|
+
- **Language:** ISO-639-1-Code (`de`, `en`, …); leer = Server-Default `WHISPER_LANGUAGE`. Ungültige Codes lehnt die API mit 422 ab.
|
|
29
|
+
- **Optionen:** Diarization (kann serverseitig nur abgeschaltet werden), Callback URL.
|
|
30
|
+
- **Wait for Result (Standard an):** fragt den Status ab, bis der Job `done` ist, und holt die gewählten **Output Formats**:
|
|
31
|
+
- `json` → Item-Feld `transcript` (`text`, `language`, `duration`, `segments[]`)
|
|
32
|
+
- `txt` → Binary `transcript_txt`, `srt` → Binary `transcript_srt` (Dateiname wie die Quelle)
|
|
33
|
+
- Status `error` → Fehler mit `error_reason`/`error_detail`; Timeout → Fehler mit Job-ID, der Job läuft weiter.
|
|
34
|
+
- **Delete Job After Download** räumt den Job danach auf dem Server weg.
|
|
35
|
+
- **Wait for Result aus:** gibt sofort `{ job_id, status: "queued" }` zurück. Die anderen Nodes übernehmen `{{ $json.job_id }}` automatisch.
|
|
36
|
+
|
|
37
|
+
## Entwicklung
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
npm install
|
|
41
|
+
npm run build # tsc + Icons
|
|
42
|
+
npm test # node --test gegen dist/
|
|
43
|
+
npm run lint
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Veröffentlicht wird über `.github/workflows/n8n-mediatranscriber.yml`, sobald die Version in `package.json` erhöht und auf `main` gepusht wird.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { IAuthenticateGeneric, ICredentialTestRequest, ICredentialType, INodeProperties } from 'n8n-workflow';
|
|
2
|
+
export declare class MediaTranscriberApi implements ICredentialType {
|
|
3
|
+
name: string;
|
|
4
|
+
displayName: string;
|
|
5
|
+
icon: "file:marcmeeselogo.png";
|
|
6
|
+
documentationUrl: string;
|
|
7
|
+
properties: INodeProperties[];
|
|
8
|
+
authenticate: IAuthenticateGeneric;
|
|
9
|
+
test: ICredentialTestRequest;
|
|
10
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MediaTranscriberApi = void 0;
|
|
4
|
+
class MediaTranscriberApi {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.name = 'mediaTranscriberApi';
|
|
7
|
+
this.displayName = 'MediaTranscriber API';
|
|
8
|
+
this.icon = 'file:marcmeeselogo.png';
|
|
9
|
+
this.documentationUrl = 'https://github.com/Ranktotop/mediatranscriber';
|
|
10
|
+
this.properties = [
|
|
11
|
+
{
|
|
12
|
+
displayName: 'Base URL',
|
|
13
|
+
name: 'baseUrl',
|
|
14
|
+
type: 'string',
|
|
15
|
+
default: 'http://mediatranscriber_server:8000',
|
|
16
|
+
required: true,
|
|
17
|
+
description: 'Root-URL der MediaTranscriber API (ohne /v1), z. B. auch der UI-Proxy http://host:8080/api',
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
displayName: 'API Key',
|
|
21
|
+
name: 'apiKey',
|
|
22
|
+
type: 'string',
|
|
23
|
+
typeOptions: { password: true },
|
|
24
|
+
default: '',
|
|
25
|
+
required: true,
|
|
26
|
+
},
|
|
27
|
+
];
|
|
28
|
+
this.authenticate = {
|
|
29
|
+
type: 'generic',
|
|
30
|
+
properties: {
|
|
31
|
+
headers: {
|
|
32
|
+
'X-API-Key': '={{$credentials.apiKey}}',
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
this.test = {
|
|
37
|
+
request: {
|
|
38
|
+
baseURL: '={{$credentials.baseUrl.replace(/\\/+$/, "")}}',
|
|
39
|
+
url: '/v1/auth/check',
|
|
40
|
+
method: 'GET',
|
|
41
|
+
},
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
exports.MediaTranscriberApi = MediaTranscriberApi;
|
|
46
|
+
//# sourceMappingURL=MediaTranscriberApi.credentials.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MediaTranscriberApi.credentials.js","sourceRoot":"","sources":["../../src/credentials/MediaTranscriberApi.credentials.ts"],"names":[],"mappings":";;;AAOA,MAAa,mBAAmB;IAAhC;QACC,SAAI,GAAG,qBAAqB,CAAC;QAE7B,gBAAW,GAAG,sBAAsB,CAAC;QAErC,SAAI,GAAG,wBAAiC,CAAC;QAEzC,qBAAgB,GAAG,+CAA+C,CAAC;QAEnE,eAAU,GAAsB;YAC/B;gBACC,WAAW,EAAE,UAAU;gBACvB,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,qCAAqC;gBAC9C,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE,4FAA4F;aACzG;YACD;gBACC,WAAW,EAAE,SAAS;gBACtB,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAC/B,OAAO,EAAE,EAAE;gBACX,QAAQ,EAAE,IAAI;aACd;SACD,CAAC;QAEF,iBAAY,GAAyB;YACpC,IAAI,EAAE,SAAS;YACf,UAAU,EAAE;gBACX,OAAO,EAAE;oBACR,WAAW,EAAE,0BAA0B;iBACvC;aACD;SACD,CAAC;QAEF,SAAI,GAA2B;YAC9B,OAAO,EAAE;gBACR,OAAO,EAAE,gDAAgD;gBACzD,GAAG,EAAE,gBAAgB;gBACrB,MAAM,EAAE,KAAK;aACb;SACD,CAAC;IACH,CAAC;CAAA;AA5CD,kDA4CC"}
|
|
Binary file
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { MediaTranscriberApi } from './credentials/MediaTranscriberApi.credentials';
|
|
2
|
+
export { GetJob } from './nodes/MediaTranscriber/GetJob/GetJob.node';
|
|
3
|
+
export { Transcribe } from './nodes/MediaTranscriber/Transcribe/Transcribe.node';
|
|
4
|
+
export { GetTranscript } from './nodes/MediaTranscriber/GetTranscript/GetTranscript.node';
|
|
5
|
+
export { DeleteJob } from './nodes/MediaTranscriber/DeleteJob/DeleteJob.node';
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// n8n_mediatranscriber/src/index.ts
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.DeleteJob = exports.GetTranscript = exports.Transcribe = exports.GetJob = exports.MediaTranscriberApi = void 0;
|
|
5
|
+
var MediaTranscriberApi_credentials_1 = require("./credentials/MediaTranscriberApi.credentials");
|
|
6
|
+
Object.defineProperty(exports, "MediaTranscriberApi", { enumerable: true, get: function () { return MediaTranscriberApi_credentials_1.MediaTranscriberApi; } });
|
|
7
|
+
var GetJob_node_1 = require("./nodes/MediaTranscriber/GetJob/GetJob.node");
|
|
8
|
+
Object.defineProperty(exports, "GetJob", { enumerable: true, get: function () { return GetJob_node_1.GetJob; } });
|
|
9
|
+
var Transcribe_node_1 = require("./nodes/MediaTranscriber/Transcribe/Transcribe.node");
|
|
10
|
+
Object.defineProperty(exports, "Transcribe", { enumerable: true, get: function () { return Transcribe_node_1.Transcribe; } });
|
|
11
|
+
var GetTranscript_node_1 = require("./nodes/MediaTranscriber/GetTranscript/GetTranscript.node");
|
|
12
|
+
Object.defineProperty(exports, "GetTranscript", { enumerable: true, get: function () { return GetTranscript_node_1.GetTranscript; } });
|
|
13
|
+
var DeleteJob_node_1 = require("./nodes/MediaTranscriber/DeleteJob/DeleteJob.node");
|
|
14
|
+
Object.defineProperty(exports, "DeleteJob", { enumerable: true, get: function () { return DeleteJob_node_1.DeleteJob; } });
|
|
15
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,oCAAoC;;;AAEpC,iGAAoF;AAA3E,sIAAA,mBAAmB,OAAA;AAE5B,2EAAqE;AAA5D,qGAAA,MAAM,OAAA;AACf,uFAAiF;AAAxE,6GAAA,UAAU,OAAA;AACnB,gGAA0F;AAAjF,mHAAA,aAAa,OAAA;AACtB,oFAA8E;AAArE,2GAAA,SAAS,OAAA"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { IExecuteFunctions, INodeExecutionData, INodeType, INodeTypeDescription } from 'n8n-workflow';
|
|
2
|
+
export declare class DeleteJob implements INodeType {
|
|
3
|
+
description: INodeTypeDescription;
|
|
4
|
+
execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
|
|
5
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DeleteJob = void 0;
|
|
4
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
5
|
+
const execute_1 = require("../../../utils/execute");
|
|
6
|
+
const request_1 = require("../../../utils/request");
|
|
7
|
+
const transcriptFlow_1 = require("../../../utils/transcriptFlow");
|
|
8
|
+
const jobId_1 = require("../jobId");
|
|
9
|
+
class DeleteJob {
|
|
10
|
+
constructor() {
|
|
11
|
+
this.description = {
|
|
12
|
+
displayName: '(MediaTranscriber) Delete Job',
|
|
13
|
+
name: 'mediaTranscriberDeleteJob',
|
|
14
|
+
icon: 'file:marcmeeselogo.png',
|
|
15
|
+
group: ['transform'],
|
|
16
|
+
version: 1,
|
|
17
|
+
description: 'Löscht einen Job samt Transkript und temporären Dateien auf dem Server',
|
|
18
|
+
defaults: { name: 'Delete Job' },
|
|
19
|
+
inputs: [n8n_workflow_1.NodeConnectionTypes.Main],
|
|
20
|
+
outputs: [n8n_workflow_1.NodeConnectionTypes.Main],
|
|
21
|
+
credentials: [{ name: request_1.CREDENTIAL_NAME, required: true }],
|
|
22
|
+
properties: [jobId_1.jobIdProperty],
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
async execute() {
|
|
26
|
+
return (0, execute_1.runPerItem)(this, async (i) => {
|
|
27
|
+
const jobId = this.getNodeParameter('jobId', i).trim();
|
|
28
|
+
await transcriptFlow_1.deleteJob.call(this, jobId);
|
|
29
|
+
return { json: { job_id: jobId, deleted: true } };
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
exports.DeleteJob = DeleteJob;
|
|
34
|
+
//# sourceMappingURL=DeleteJob.node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DeleteJob.node.js","sourceRoot":"","sources":["../../../../src/nodes/MediaTranscriber/DeleteJob/DeleteJob.node.ts"],"names":[],"mappings":";;;AAMA,+CAAmD;AAEnD,oDAAoD;AACpD,oDAAyD;AACzD,kEAA0D;AAC1D,oCAAyC;AAEzC,MAAa,SAAS;IAAtB;QACC,gBAAW,GAAyB;YACnC,WAAW,EAAE,+BAA+B;YAC5C,IAAI,EAAE,2BAA2B;YACjC,IAAI,EAAE,wBAAwB;YAC9B,KAAK,EAAE,CAAC,WAAW,CAAC;YACpB,OAAO,EAAE,CAAC;YACV,WAAW,EAAE,wEAAwE;YACrF,QAAQ,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;YAChC,MAAM,EAAE,CAAC,kCAAmB,CAAC,IAAI,CAAC;YAClC,OAAO,EAAE,CAAC,kCAAmB,CAAC,IAAI,CAAC;YACnC,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,yBAAe,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;YACxD,UAAU,EAAE,CAAC,qBAAa,CAAC;SAC3B,CAAC;IASH,CAAC;IAPA,KAAK,CAAC,OAAO;QACZ,OAAO,IAAA,oBAAU,EAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YACnC,MAAM,KAAK,GAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAY,CAAC,IAAI,EAAE,CAAC;YACnE,MAAM,0BAAS,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAClC,OAAO,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;QACnD,CAAC,CAAC,CAAC;IACJ,CAAC;CACD;AAtBD,8BAsBC"}
|
|
Binary file
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GetJob = void 0;
|
|
4
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
5
|
+
const execute_1 = require("../../../utils/execute");
|
|
6
|
+
const jobs_1 = require("../../../utils/jobs");
|
|
7
|
+
const request_1 = require("../../../utils/request");
|
|
8
|
+
const jobId_1 = require("../jobId");
|
|
9
|
+
class GetJob {
|
|
10
|
+
constructor() {
|
|
11
|
+
this.description = {
|
|
12
|
+
displayName: '(MediaTranscriber) Get Job',
|
|
13
|
+
name: 'mediaTranscriberGetJob',
|
|
14
|
+
icon: 'file:marcmeeselogo.png',
|
|
15
|
+
group: ['transform'],
|
|
16
|
+
version: 1,
|
|
17
|
+
description: 'Liest Status, Sprache und Dauer eines Transkriptions-Jobs',
|
|
18
|
+
defaults: { name: 'Get Job' },
|
|
19
|
+
inputs: [n8n_workflow_1.NodeConnectionTypes.Main],
|
|
20
|
+
outputs: [n8n_workflow_1.NodeConnectionTypes.Main],
|
|
21
|
+
credentials: [{ name: request_1.CREDENTIAL_NAME, required: true }],
|
|
22
|
+
properties: [jobId_1.jobIdProperty],
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
async execute() {
|
|
26
|
+
return (0, execute_1.runPerItem)(this, async (i) => ({
|
|
27
|
+
json: await jobs_1.getJob.call(this, this.getNodeParameter('jobId', i)),
|
|
28
|
+
}));
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
exports.GetJob = GetJob;
|
|
32
|
+
//# sourceMappingURL=GetJob.node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GetJob.node.js","sourceRoot":"","sources":["../../../../src/nodes/MediaTranscriber/GetJob/GetJob.node.ts"],"names":[],"mappings":";;;AAMA,+CAAmD;AAEnD,oDAAoD;AACpD,8CAA6C;AAC7C,oDAAyD;AACzD,oCAAyC;AAEzC,MAAa,MAAM;IAAnB;QACC,gBAAW,GAAyB;YACnC,WAAW,EAAE,4BAA4B;YACzC,IAAI,EAAE,wBAAwB;YAC9B,IAAI,EAAE,wBAAwB;YAC9B,KAAK,EAAE,CAAC,WAAW,CAAC;YACpB,OAAO,EAAE,CAAC;YACV,WAAW,EAAE,2DAA2D;YACxE,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;YAC7B,MAAM,EAAE,CAAC,kCAAmB,CAAC,IAAI,CAAC;YAClC,OAAO,EAAE,CAAC,kCAAmB,CAAC,IAAI,CAAC;YACnC,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,yBAAe,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;YACxD,UAAU,EAAE,CAAC,qBAAa,CAAC;SAC3B,CAAC;IAOH,CAAC;IALA,KAAK,CAAC,OAAO;QACZ,OAAO,IAAA,oBAAU,EAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YACrC,IAAI,EAAE,MAAM,aAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAW,CAAC;SAC1E,CAAC,CAAC,CAAC;IACL,CAAC;CACD;AApBD,wBAoBC"}
|
|
Binary file
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { IExecuteFunctions, INodeExecutionData, INodeType, INodeTypeDescription } from 'n8n-workflow';
|
|
2
|
+
export declare class GetTranscript implements INodeType {
|
|
3
|
+
description: INodeTypeDescription;
|
|
4
|
+
execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
|
|
5
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GetTranscript = void 0;
|
|
4
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
5
|
+
const execute_1 = require("../../../utils/execute");
|
|
6
|
+
const request_1 = require("../../../utils/request");
|
|
7
|
+
const transcriptFlow_1 = require("../../../utils/transcriptFlow");
|
|
8
|
+
const jobId_1 = require("../jobId");
|
|
9
|
+
class GetTranscript {
|
|
10
|
+
constructor() {
|
|
11
|
+
this.description = {
|
|
12
|
+
displayName: '(MediaTranscriber) Get Transcript',
|
|
13
|
+
name: 'mediaTranscriberGetTranscript',
|
|
14
|
+
icon: 'file:marcmeeselogo.png',
|
|
15
|
+
group: ['transform'],
|
|
16
|
+
version: 1,
|
|
17
|
+
description: 'Holt das Transkript eines fertigen Jobs als JSON, TXT oder SRT',
|
|
18
|
+
defaults: { name: 'Get Transcript' },
|
|
19
|
+
inputs: [n8n_workflow_1.NodeConnectionTypes.Main],
|
|
20
|
+
outputs: [n8n_workflow_1.NodeConnectionTypes.Main],
|
|
21
|
+
credentials: [{ name: request_1.CREDENTIAL_NAME, required: true }],
|
|
22
|
+
properties: [
|
|
23
|
+
jobId_1.jobIdProperty,
|
|
24
|
+
{
|
|
25
|
+
displayName: 'Format',
|
|
26
|
+
name: 'format',
|
|
27
|
+
type: 'options',
|
|
28
|
+
options: [
|
|
29
|
+
{ name: 'JSON (Im Item)', value: 'json', description: 'Text, Sprache, Dauer und Segmente mit Zeitstempeln/Sprechern' },
|
|
30
|
+
{ name: 'TXT (Binary)', value: 'txt' },
|
|
31
|
+
{ name: 'SRT (Binary)', value: 'srt' },
|
|
32
|
+
],
|
|
33
|
+
default: 'json',
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
displayName: 'Output Binary Field',
|
|
37
|
+
name: 'outputBinaryPropertyName',
|
|
38
|
+
type: 'string',
|
|
39
|
+
default: 'data',
|
|
40
|
+
displayOptions: { show: { format: ['txt', 'srt'] } },
|
|
41
|
+
description: 'Binary-Property, in die die Datei geschrieben wird',
|
|
42
|
+
},
|
|
43
|
+
],
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
async execute() {
|
|
47
|
+
return (0, execute_1.runPerItem)(this, async (i) => {
|
|
48
|
+
const jobId = this.getNodeParameter('jobId', i).trim();
|
|
49
|
+
const format = this.getNodeParameter('format', i);
|
|
50
|
+
if (format === 'json')
|
|
51
|
+
return { json: await transcriptFlow_1.fetchTranscriptJson.call(this, jobId) };
|
|
52
|
+
const outputProperty = this.getNodeParameter('outputBinaryPropertyName', i);
|
|
53
|
+
const binary = await transcriptFlow_1.fetchTranscriptFile.call(this, jobId, format, jobId);
|
|
54
|
+
return { json: { job_id: jobId, format, fileName: binary.fileName }, binary: { [outputProperty]: binary } };
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
exports.GetTranscript = GetTranscript;
|
|
59
|
+
//# sourceMappingURL=GetTranscript.node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GetTranscript.node.js","sourceRoot":"","sources":["../../../../src/nodes/MediaTranscriber/GetTranscript/GetTranscript.node.ts"],"names":[],"mappings":";;;AAMA,+CAAmD;AAEnD,oDAAoD;AAEpD,oDAAyD;AACzD,kEAAyF;AACzF,oCAAyC;AAEzC,MAAa,aAAa;IAA1B;QACC,gBAAW,GAAyB;YACnC,WAAW,EAAE,mCAAmC;YAChD,IAAI,EAAE,+BAA+B;YACrC,IAAI,EAAE,wBAAwB;YAC9B,KAAK,EAAE,CAAC,WAAW,CAAC;YACpB,OAAO,EAAE,CAAC;YACV,WAAW,EAAE,gEAAgE;YAC7E,QAAQ,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE;YACpC,MAAM,EAAE,CAAC,kCAAmB,CAAC,IAAI,CAAC;YAClC,OAAO,EAAE,CAAC,kCAAmB,CAAC,IAAI,CAAC;YACnC,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,yBAAe,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;YACxD,UAAU,EAAE;gBACX,qBAAa;gBACb;oBACC,WAAW,EAAE,QAAQ;oBACrB,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE;wBACR,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,8DAA8D,EAAE;wBACtH,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,EAAE;wBACtC,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,EAAE;qBACtC;oBACD,OAAO,EAAE,MAAM;iBACf;gBACD;oBACC,WAAW,EAAE,qBAAqB;oBAClC,IAAI,EAAE,0BAA0B;oBAChC,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,MAAM;oBACf,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE;oBACpD,WAAW,EAAE,oDAAoD;iBACjE;aACD;SACD,CAAC;IAaH,CAAC;IAXA,KAAK,CAAC,OAAO;QACZ,OAAO,IAAA,oBAAU,EAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YACnC,MAAM,KAAK,GAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAY,CAAC,IAAI,EAAE,CAAC;YACnE,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAqB,CAAC;YACtE,IAAI,MAAM,KAAK,MAAM;gBAAE,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;YAEpF,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,0BAA0B,EAAE,CAAC,CAAW,CAAC;YACtF,MAAM,MAAM,GAAG,MAAM,oCAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;YAC1E,OAAO,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC;QAC7G,CAAC,CAAC,CAAC;IACJ,CAAC;CACD;AA/CD,sCA+CC"}
|
|
Binary file
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { IExecuteFunctions, INodeExecutionData, INodeType, INodeTypeDescription } from 'n8n-workflow';
|
|
2
|
+
export declare class Transcribe implements INodeType {
|
|
3
|
+
description: INodeTypeDescription;
|
|
4
|
+
execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
|
|
5
|
+
}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Transcribe = void 0;
|
|
4
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
5
|
+
const execute_1 = require("../../../utils/execute");
|
|
6
|
+
const files_1 = require("../../../utils/files");
|
|
7
|
+
const input_1 = require("../../../utils/input");
|
|
8
|
+
const jobRequest_1 = require("../../../utils/jobRequest");
|
|
9
|
+
const multipart_1 = require("../../../utils/multipart");
|
|
10
|
+
const request_1 = require("../../../utils/request");
|
|
11
|
+
const transcriptFlow_1 = require("../../../utils/transcriptFlow");
|
|
12
|
+
class Transcribe {
|
|
13
|
+
constructor() {
|
|
14
|
+
this.description = {
|
|
15
|
+
displayName: '(MediaTranscriber) Transcribe',
|
|
16
|
+
name: 'mediaTranscriberTranscribe',
|
|
17
|
+
icon: 'file:marcmeeselogo.png',
|
|
18
|
+
group: ['transform'],
|
|
19
|
+
version: 1,
|
|
20
|
+
description: 'Transkribiert Audio/Video (Datei oder URL) mit WhisperX',
|
|
21
|
+
defaults: { name: 'Transcribe' },
|
|
22
|
+
inputs: [n8n_workflow_1.NodeConnectionTypes.Main],
|
|
23
|
+
outputs: [n8n_workflow_1.NodeConnectionTypes.Main],
|
|
24
|
+
credentials: [{ name: request_1.CREDENTIAL_NAME, required: true }],
|
|
25
|
+
properties: [
|
|
26
|
+
{
|
|
27
|
+
displayName: 'Input Mode',
|
|
28
|
+
name: 'inputMode',
|
|
29
|
+
type: 'options',
|
|
30
|
+
options: [
|
|
31
|
+
{ name: 'Binary', value: 'binary', description: 'Mediendatei aus einer Binary-Property des Items' },
|
|
32
|
+
{ name: 'Local Path', value: 'path', description: 'Mediendatei von einem Pfad im n8n-Container' },
|
|
33
|
+
{ name: 'URL', value: 'url', description: 'Medien-URL (alles, was yt-dlp unterstützt, z. B. YouTube)' },
|
|
34
|
+
],
|
|
35
|
+
default: 'binary',
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
displayName: 'Input Binary Field',
|
|
39
|
+
name: 'binaryPropertyName',
|
|
40
|
+
type: 'string',
|
|
41
|
+
default: 'data',
|
|
42
|
+
required: true,
|
|
43
|
+
displayOptions: { show: { inputMode: ['binary'] } },
|
|
44
|
+
description: 'Name der Binary-Property mit der Audio-/Videodatei',
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
displayName: 'File Path',
|
|
48
|
+
name: 'filePath',
|
|
49
|
+
type: 'string',
|
|
50
|
+
default: '',
|
|
51
|
+
required: true,
|
|
52
|
+
placeholder: '/data/input/interview.mp4',
|
|
53
|
+
displayOptions: { show: { inputMode: ['path'] } },
|
|
54
|
+
description: 'Pfad zur Mediendatei im n8n-Container',
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
displayName: 'URL',
|
|
58
|
+
name: 'url',
|
|
59
|
+
type: 'string',
|
|
60
|
+
default: '',
|
|
61
|
+
required: true,
|
|
62
|
+
placeholder: 'https://www.youtube.com/watch?v=...',
|
|
63
|
+
displayOptions: { show: { inputMode: ['url'] } },
|
|
64
|
+
description: 'Wird serverseitig mit yt-dlp heruntergeladen',
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
displayName: 'Language',
|
|
68
|
+
name: 'language',
|
|
69
|
+
type: 'string',
|
|
70
|
+
default: '',
|
|
71
|
+
placeholder: 'de',
|
|
72
|
+
description: 'Sprachcode nach ISO 639-1 (z. B. de, en). Leer = Server-Default (WHISPER_LANGUAGE).',
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
displayName: 'Wait for Result',
|
|
76
|
+
name: 'waitForResult',
|
|
77
|
+
type: 'boolean',
|
|
78
|
+
default: true,
|
|
79
|
+
description: 'Whether to wait until the transcription is finished and output the transcript. If disabled, only the job (job_id, status) is returned.',
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
displayName: 'Output Formats',
|
|
83
|
+
name: 'outputFormats',
|
|
84
|
+
type: 'multiOptions',
|
|
85
|
+
options: [
|
|
86
|
+
{ name: 'JSON (Segmente Im Item)', value: 'json', description: 'Transkript mit Zeitstempeln/Sprechern unter "transcript"' },
|
|
87
|
+
{ name: 'TXT (Binary Transcript_txt)', value: 'txt' },
|
|
88
|
+
{ name: 'SRT (Binary Transcript_srt)', value: 'srt' },
|
|
89
|
+
],
|
|
90
|
+
default: ['json', 'txt'],
|
|
91
|
+
displayOptions: { show: { waitForResult: [true] } },
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
displayName: 'Delete Job After Download',
|
|
95
|
+
name: 'deleteJobAfterDownload',
|
|
96
|
+
type: 'boolean',
|
|
97
|
+
default: false,
|
|
98
|
+
displayOptions: { show: { waitForResult: [true] } },
|
|
99
|
+
description: 'Whether to delete the job and its transcript on the server once all formats were fetched',
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
displayName: 'Poll Interval (Seconds)',
|
|
103
|
+
name: 'pollIntervalSeconds',
|
|
104
|
+
type: 'number',
|
|
105
|
+
typeOptions: { minValue: 1 },
|
|
106
|
+
default: 5,
|
|
107
|
+
displayOptions: { show: { waitForResult: [true] } },
|
|
108
|
+
description: 'Abstand der Statusabfragen',
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
displayName: 'Timeout (Seconds)',
|
|
112
|
+
name: 'timeoutSeconds',
|
|
113
|
+
type: 'number',
|
|
114
|
+
typeOptions: { minValue: 1 },
|
|
115
|
+
default: 21600,
|
|
116
|
+
displayOptions: { show: { waitForResult: [true] } },
|
|
117
|
+
description: 'Maximale Wartezeit; danach Fehler, der Job läuft serverseitig weiter',
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
displayName: 'Options',
|
|
121
|
+
name: 'options',
|
|
122
|
+
type: 'collection',
|
|
123
|
+
placeholder: 'Add Option',
|
|
124
|
+
default: {},
|
|
125
|
+
options: [
|
|
126
|
+
{
|
|
127
|
+
displayName: 'Callback URL',
|
|
128
|
+
name: 'callbackUrl',
|
|
129
|
+
type: 'string',
|
|
130
|
+
default: '',
|
|
131
|
+
description: 'Wird bei Fertigstellung/Fehler mit {job_ID, status, error_reason} per POST aufgerufen',
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
displayName: 'Diarization',
|
|
135
|
+
name: 'diarize',
|
|
136
|
+
type: 'boolean',
|
|
137
|
+
default: true,
|
|
138
|
+
description: 'Whether speakers are labelled. Only takes effect if diarization is enabled on the server; it can only be switched off per job.',
|
|
139
|
+
},
|
|
140
|
+
],
|
|
141
|
+
},
|
|
142
|
+
],
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
async execute() {
|
|
146
|
+
return (0, execute_1.runPerItem)(this, async (i) => {
|
|
147
|
+
const inputMode = this.getNodeParameter('inputMode', i);
|
|
148
|
+
const options = {
|
|
149
|
+
...this.getNodeParameter('options', i, {}),
|
|
150
|
+
language: this.getNodeParameter('language', i, ''),
|
|
151
|
+
};
|
|
152
|
+
let created;
|
|
153
|
+
let sourceName;
|
|
154
|
+
if (inputMode === 'url') {
|
|
155
|
+
const url = this.getNodeParameter('url', i);
|
|
156
|
+
sourceName = (0, files_1.baseNameFromUrl)(url);
|
|
157
|
+
created = await request_1.apiRequest.call(this, {
|
|
158
|
+
method: 'POST',
|
|
159
|
+
path: '/v1/jobs/url',
|
|
160
|
+
body: (0, jobRequest_1.buildUrlBody)(url, options),
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
const file = await input_1.getInputFile.call(this, i, inputMode);
|
|
165
|
+
sourceName = (0, files_1.baseName)(file.fileName);
|
|
166
|
+
const multipart = (0, multipart_1.buildMultipart)((0, jobRequest_1.buildUploadFields)(options), { fieldName: 'file', ...file });
|
|
167
|
+
created = await request_1.apiRequest.call(this, {
|
|
168
|
+
method: 'POST',
|
|
169
|
+
path: '/v1/jobs',
|
|
170
|
+
body: multipart.body,
|
|
171
|
+
headers: {
|
|
172
|
+
'Content-Type': multipart.contentType,
|
|
173
|
+
'Content-Length': String(multipart.contentLength),
|
|
174
|
+
},
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
if (!this.getNodeParameter('waitForResult', i))
|
|
178
|
+
return { json: created };
|
|
179
|
+
const jobId = created.job_id;
|
|
180
|
+
const job = await transcriptFlow_1.waitForJob.call(this, jobId, this.getNodeParameter('pollIntervalSeconds', i), this.getNodeParameter('timeoutSeconds', i), i);
|
|
181
|
+
const formats = this.getNodeParameter('outputFormats', i, []);
|
|
182
|
+
const { transcript, binary } = await transcriptFlow_1.fetchTranscriptOutputs.call(this, jobId, formats, sourceName);
|
|
183
|
+
if (this.getNodeParameter('deleteJobAfterDownload', i, false)) {
|
|
184
|
+
await transcriptFlow_1.deleteJob.call(this, jobId);
|
|
185
|
+
}
|
|
186
|
+
const json = transcript ? { ...job, transcript } : { ...job };
|
|
187
|
+
return Object.keys(binary).length ? { json, binary } : { json };
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
exports.Transcribe = Transcribe;
|
|
192
|
+
//# sourceMappingURL=Transcribe.node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Transcribe.node.js","sourceRoot":"","sources":["../../../../src/nodes/MediaTranscriber/Transcribe/Transcribe.node.ts"],"names":[],"mappings":"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"}
|
|
Binary file
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.jobIdProperty = void 0;
|
|
4
|
+
/** Gemeinsamer Parameter der Nodes, die mit einem bestehenden Job arbeiten. */
|
|
5
|
+
exports.jobIdProperty = {
|
|
6
|
+
displayName: 'Job ID',
|
|
7
|
+
name: 'jobId',
|
|
8
|
+
type: 'string',
|
|
9
|
+
default: '={{ $json.job_id ?? $json.id }}',
|
|
10
|
+
required: true,
|
|
11
|
+
description: 'ID des Transkriptions-Jobs (Feld "job_id" aus "Transcribe")',
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=jobId.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jobId.js","sourceRoot":"","sources":["../../../src/nodes/MediaTranscriber/jobId.ts"],"names":[],"mappings":";;;AAEA,+EAA+E;AAClE,QAAA,aAAa,GAAoB;IAC7C,WAAW,EAAE,QAAQ;IACrB,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,iCAAiC;IAC1C,QAAQ,EAAE,IAAI;IACd,WAAW,EAAE,6DAA6D;CAC1E,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Liest den Body einer Fehler-Antwort (JSON, String, Buffer oder ArrayBuffer) als Objekt oder String.
|
|
3
|
+
*/
|
|
4
|
+
export declare function decodeBody(body: unknown): unknown;
|
|
5
|
+
/**
|
|
6
|
+
* Baut eine lesbare Fehlermeldung aus einer MediaTranscriber-Fehlerantwort.
|
|
7
|
+
* FastAPI liefert {"detail": "..."} bzw. bei Validierungsfehlern {"detail": [{"loc", "msg"}]}.
|
|
8
|
+
*/
|
|
9
|
+
export declare function describeApiError(body: unknown): string | undefined;
|
|
10
|
+
/**
|
|
11
|
+
* Sucht HTTP-Status und Response-Body in den verschiedenen Fehlerformen von n8n/axios.
|
|
12
|
+
*/
|
|
13
|
+
export declare function extractHttpError(error: unknown): {
|
|
14
|
+
status?: number;
|
|
15
|
+
body?: unknown;
|
|
16
|
+
};
|