mediacript 1.0.2 → 1.0.4
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/dist/config/index.d.ts +5 -5
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +43 -14
- package/dist/config/index.js.map +1 -1
- package/dist/index.js +57 -57
- package/dist/index.js.map +1 -1
- package/dist/transcript/groq.d.ts +4 -4
- package/dist/transcript/groq.js +6 -6
- package/dist/transcript/groq.js.map +1 -1
- package/dist/transcript/index.d.ts +5 -5
- package/dist/transcript/index.d.ts.map +1 -1
- package/dist/transcript/index.js +92 -20
- package/dist/transcript/index.js.map +1 -1
- package/dist/transcript/openai.d.ts +4 -4
- package/dist/transcript/openai.js +6 -6
- package/dist/transcript/openai.js.map +1 -1
- package/dist/utils/ffmpegCheck.d.ts +4 -4
- package/dist/utils/ffmpegCheck.js +15 -15
- package/dist/utils/ffmpegCheck.js.map +1 -1
- package/dist/utils/ffmpegOperations.d.ts +18 -5
- package/dist/utils/ffmpegOperations.d.ts.map +1 -1
- package/dist/utils/ffmpegOperations.js +95 -15
- package/dist/utils/ffmpegOperations.js.map +1 -1
- package/dist/utils/fileHelpers.d.ts +11 -3
- package/dist/utils/fileHelpers.d.ts.map +1 -1
- package/dist/utils/fileHelpers.js +23 -4
- package/dist/utils/fileHelpers.js.map +1 -1
- package/dist/workflow/state.d.ts +9 -9
- package/dist/workflow/state.js +12 -12
- package/dist/workflow/state.js.map +1 -1
- package/package.json +9 -1
package/dist/config/index.d.ts
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
import { Config } from '../types/index.js';
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* Loads saved configuration
|
|
4
4
|
*/
|
|
5
5
|
export declare function loadConfig(): Config;
|
|
6
6
|
/**
|
|
7
|
-
*
|
|
7
|
+
* Saves configuration
|
|
8
8
|
*/
|
|
9
9
|
export declare function saveConfig(config: Config): void;
|
|
10
10
|
/**
|
|
11
|
-
*
|
|
11
|
+
* Prompts user for API keys (interactive)
|
|
12
12
|
*/
|
|
13
13
|
export declare function promptApiKeys(): Promise<Config>;
|
|
14
14
|
/**
|
|
15
|
-
*
|
|
15
|
+
* Checks if at least one API key is configured
|
|
16
16
|
*/
|
|
17
17
|
export declare function hasApiKey(config: Config): boolean;
|
|
18
18
|
/**
|
|
19
|
-
*
|
|
19
|
+
* Gets configuration, prompting the user if necessary
|
|
20
20
|
*/
|
|
21
21
|
export declare function ensureConfig(): Promise<Config>;
|
|
22
22
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAwB1C;;GAEG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAWnC;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAe/C;AAED;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC,CA6BrD;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEjD;AAED;;GAEG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAwB1C;;GAEG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAWnC;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAe/C;AAED;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC,CA6BrD;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEjD;AAED;;GAEG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,CA2DpD"}
|
package/dist/config/index.js
CHANGED
|
@@ -3,7 +3,7 @@ import path from 'path';
|
|
|
3
3
|
import os from 'os';
|
|
4
4
|
import inquirer from 'inquirer';
|
|
5
5
|
/**
|
|
6
|
-
*
|
|
6
|
+
* Returns the configuration directory based on the operating system
|
|
7
7
|
* Linux/Mac: ~/.config/ffmpeg-simple-converter
|
|
8
8
|
* Windows: %APPDATA%/ffmpeg-simple-converter
|
|
9
9
|
*/
|
|
@@ -23,7 +23,7 @@ function getConfigFilePath() {
|
|
|
23
23
|
return path.join(getConfigDir(), 'config.json');
|
|
24
24
|
}
|
|
25
25
|
/**
|
|
26
|
-
*
|
|
26
|
+
* Loads saved configuration
|
|
27
27
|
*/
|
|
28
28
|
export function loadConfig() {
|
|
29
29
|
try {
|
|
@@ -34,33 +34,33 @@ export function loadConfig() {
|
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
36
|
catch (error) {
|
|
37
|
-
console.warn('
|
|
37
|
+
console.warn('Error loading configuration:', error);
|
|
38
38
|
}
|
|
39
39
|
return {};
|
|
40
40
|
}
|
|
41
41
|
/**
|
|
42
|
-
*
|
|
42
|
+
* Saves configuration
|
|
43
43
|
*/
|
|
44
44
|
export function saveConfig(config) {
|
|
45
45
|
try {
|
|
46
46
|
const configDir = getConfigDir();
|
|
47
47
|
const configPath = getConfigFilePath();
|
|
48
|
-
//
|
|
48
|
+
// Create directory if it doesn't exist
|
|
49
49
|
if (!fs.existsSync(configDir)) {
|
|
50
50
|
fs.mkdirSync(configDir, { recursive: true });
|
|
51
51
|
}
|
|
52
52
|
fs.writeFileSync(configPath, JSON.stringify(config, null, 2), 'utf-8');
|
|
53
|
-
console.log(`✓
|
|
53
|
+
console.log(`✓ Configuration saved in: ${configPath}`);
|
|
54
54
|
}
|
|
55
55
|
catch (error) {
|
|
56
|
-
console.error('
|
|
56
|
+
console.error('Error saving configuration:', error);
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
59
|
/**
|
|
60
|
-
*
|
|
60
|
+
* Prompts user for API keys (interactive)
|
|
61
61
|
*/
|
|
62
62
|
export async function promptApiKeys() {
|
|
63
|
-
console.log('\n🔑 Configure
|
|
63
|
+
console.log('\n🔑 Configure your API keys (optional - press Enter to skip)\n');
|
|
64
64
|
const answers = await inquirer.prompt([
|
|
65
65
|
{
|
|
66
66
|
type: 'input',
|
|
@@ -85,24 +85,28 @@ export async function promptApiKeys() {
|
|
|
85
85
|
return config;
|
|
86
86
|
}
|
|
87
87
|
/**
|
|
88
|
-
*
|
|
88
|
+
* Checks if at least one API key is configured
|
|
89
89
|
*/
|
|
90
90
|
export function hasApiKey(config) {
|
|
91
91
|
return !!(config.openaiApiKey || config.groqApiKey);
|
|
92
92
|
}
|
|
93
93
|
/**
|
|
94
|
-
*
|
|
94
|
+
* Gets configuration, prompting the user if necessary
|
|
95
95
|
*/
|
|
96
96
|
export async function ensureConfig() {
|
|
97
97
|
let config = loadConfig();
|
|
98
|
-
//
|
|
98
|
+
// Display where API keys are being loaded from
|
|
99
|
+
const configPath = getConfigFilePath();
|
|
100
|
+
console.log(`\n🔑 API Keys Configuration`);
|
|
101
|
+
console.log(`ℹ️ Loading from: ${configPath}`);
|
|
102
|
+
// If no API keys are found
|
|
99
103
|
if (!hasApiKey(config)) {
|
|
100
|
-
console.log('
|
|
104
|
+
console.log('⚠️ No API keys found.');
|
|
101
105
|
const { shouldConfigure } = await inquirer.prompt([
|
|
102
106
|
{
|
|
103
107
|
type: 'confirm',
|
|
104
108
|
name: 'shouldConfigure',
|
|
105
|
-
message: '
|
|
109
|
+
message: 'Would you like to configure your API keys now?',
|
|
106
110
|
default: true
|
|
107
111
|
}
|
|
108
112
|
]);
|
|
@@ -114,6 +118,31 @@ export async function ensureConfig() {
|
|
|
114
118
|
}
|
|
115
119
|
}
|
|
116
120
|
}
|
|
121
|
+
else {
|
|
122
|
+
// Display current API keys status
|
|
123
|
+
console.log('✓ API Keys found:');
|
|
124
|
+
if (config.groqApiKey) {
|
|
125
|
+
console.log(' • Groq API Key: Configured');
|
|
126
|
+
}
|
|
127
|
+
if (config.openaiApiKey) {
|
|
128
|
+
console.log(' • OpenAI API Key: Configured');
|
|
129
|
+
}
|
|
130
|
+
const { updateKeys } = await inquirer.prompt([
|
|
131
|
+
{
|
|
132
|
+
type: 'confirm',
|
|
133
|
+
name: 'updateKeys',
|
|
134
|
+
message: 'Would you like to update or add new API keys?',
|
|
135
|
+
default: false
|
|
136
|
+
}
|
|
137
|
+
]);
|
|
138
|
+
if (updateKeys) {
|
|
139
|
+
const newConfig = await promptApiKeys();
|
|
140
|
+
if (hasApiKey(newConfig)) {
|
|
141
|
+
config = { ...config, ...newConfig };
|
|
142
|
+
saveConfig(config);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
117
146
|
return config;
|
|
118
147
|
}
|
|
119
148
|
//# sourceMappingURL=index.js.map
|
package/dist/config/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAA;AACnB,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,MAAM,IAAI,CAAA;AACnB,OAAO,QAAQ,MAAM,UAAU,CAAA;AAG/B;;;;GAIG;AACH,SAAS,YAAY;IACnB,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,EAAE,CAAA;IAE5B,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,UAAU;QACV,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC,CAAA;QAC/E,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,yBAAyB,CAAC,CAAA;IACtD,CAAC;SAAM,CAAC;QACN,YAAY;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,yBAAyB,CAAC,CAAA;IACjE,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB;IACxB,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,aAAa,CAAC,CAAA;AACjD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU;IACxB,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAA;QACtC,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;YACjD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACzB,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -9,53 +9,53 @@ import { createWorkflowState, updateStepStatus, nextStep, printWorkflowProgress,
|
|
|
9
9
|
import path from 'path';
|
|
10
10
|
const WORKFLOW_OPTIONS = [
|
|
11
11
|
{
|
|
12
|
-
name: '🎬
|
|
12
|
+
name: '🎬 Convert video + Extract audio + Transcribe',
|
|
13
13
|
value: 'video-full',
|
|
14
|
-
steps: ['
|
|
14
|
+
steps: ['Convert video', 'Extract audio', 'Transcribe audio'],
|
|
15
15
|
requiresType: 'video'
|
|
16
16
|
},
|
|
17
17
|
{
|
|
18
|
-
name: '🎬
|
|
18
|
+
name: '🎬 Extract audio from video + Transcribe',
|
|
19
19
|
value: 'video-extract-transcribe',
|
|
20
|
-
steps: ['
|
|
20
|
+
steps: ['Extract audio', 'Transcribe audio'],
|
|
21
21
|
requiresType: 'video'
|
|
22
22
|
},
|
|
23
23
|
{
|
|
24
|
-
name: '🎵
|
|
24
|
+
name: '🎵 Convert audio + Transcribe',
|
|
25
25
|
value: 'audio-convert-transcribe',
|
|
26
|
-
steps: ['
|
|
26
|
+
steps: ['Convert audio', 'Transcribe audio'],
|
|
27
27
|
requiresType: 'audio'
|
|
28
28
|
},
|
|
29
29
|
{
|
|
30
|
-
name: '🎙️
|
|
30
|
+
name: '🎙️ Transcribe audio only',
|
|
31
31
|
value: 'audio-transcribe',
|
|
32
|
-
steps: ['
|
|
32
|
+
steps: ['Transcribe audio'],
|
|
33
33
|
requiresType: 'audio'
|
|
34
34
|
},
|
|
35
35
|
{
|
|
36
|
-
name: '🎬
|
|
36
|
+
name: '🎬 Convert video only',
|
|
37
37
|
value: 'video-convert',
|
|
38
|
-
steps: ['
|
|
38
|
+
steps: ['Convert video'],
|
|
39
39
|
requiresType: 'video'
|
|
40
40
|
},
|
|
41
41
|
{
|
|
42
|
-
name: '🎵
|
|
42
|
+
name: '🎵 Convert audio only',
|
|
43
43
|
value: 'audio-convert',
|
|
44
|
-
steps: ['
|
|
44
|
+
steps: ['Convert audio'],
|
|
45
45
|
requiresType: 'audio'
|
|
46
46
|
},
|
|
47
47
|
{
|
|
48
|
-
name: '🎵
|
|
48
|
+
name: '🎵 Extract audio from video only',
|
|
49
49
|
value: 'video-extract',
|
|
50
|
-
steps: ['
|
|
50
|
+
steps: ['Extract audio'],
|
|
51
51
|
requiresType: 'video'
|
|
52
52
|
}
|
|
53
53
|
];
|
|
54
54
|
async function executeWorkflow(workflow, inputFile, config) {
|
|
55
55
|
const state = createWorkflowState(inputFile, workflow.steps);
|
|
56
56
|
const outputDir = path.dirname(inputFile);
|
|
57
|
-
console.log(`\n🚀
|
|
58
|
-
console.log(`📁
|
|
57
|
+
console.log(`\n🚀 Starting workflow: ${workflow.name}`);
|
|
58
|
+
console.log(`📁 Input file: ${path.basename(inputFile)}\n`);
|
|
59
59
|
let currentFile = inputFile;
|
|
60
60
|
let audioFile;
|
|
61
61
|
let transcriptionFile;
|
|
@@ -67,28 +67,28 @@ async function executeWorkflow(workflow, inputFile, config) {
|
|
|
67
67
|
console.log(`\n[${i + 1}/${state.steps.length}] ${step.name}...`);
|
|
68
68
|
try {
|
|
69
69
|
switch (step.name) {
|
|
70
|
-
case '
|
|
70
|
+
case 'Convert video':
|
|
71
71
|
currentFile = await convertVideo(currentFile, outputDir);
|
|
72
72
|
state.intermediateFiles.convertedVideo = currentFile;
|
|
73
73
|
updateStepStatus(state, i, 'completed', { outputFile: currentFile });
|
|
74
74
|
break;
|
|
75
|
-
case '
|
|
75
|
+
case 'Extract audio':
|
|
76
76
|
audioFile = await extractAudio(currentFile, outputDir);
|
|
77
77
|
state.intermediateFiles.extractedAudio = audioFile;
|
|
78
78
|
currentFile = audioFile;
|
|
79
79
|
updateStepStatus(state, i, 'completed', { outputFile: audioFile });
|
|
80
80
|
break;
|
|
81
|
-
case '
|
|
81
|
+
case 'Convert audio':
|
|
82
82
|
audioFile = await convertAudio(currentFile, outputDir);
|
|
83
83
|
currentFile = audioFile;
|
|
84
84
|
updateStepStatus(state, i, 'completed', { outputFile: audioFile });
|
|
85
85
|
break;
|
|
86
|
-
case '
|
|
86
|
+
case 'Transcribe audio':
|
|
87
87
|
// Usa o arquivo de áudio atual ou o arquivo de entrada se for áudio
|
|
88
88
|
const fileToTranscribe = audioFile || currentFile;
|
|
89
|
-
//
|
|
89
|
+
// Check if API key is configured
|
|
90
90
|
if (!hasApiKey(config)) {
|
|
91
|
-
console.log('\n⚠️
|
|
91
|
+
console.log('\n⚠️ Skipping transcription - no API key configured');
|
|
92
92
|
updateStepStatus(state, i, 'skipped');
|
|
93
93
|
break;
|
|
94
94
|
}
|
|
@@ -100,64 +100,64 @@ async function executeWorkflow(workflow, inputFile, config) {
|
|
|
100
100
|
updateStepStatus(state, i, 'completed', { outputFile: transcriptionFile });
|
|
101
101
|
}
|
|
102
102
|
else {
|
|
103
|
-
throw new Error('
|
|
103
|
+
throw new Error('Failed to transcribe audio');
|
|
104
104
|
}
|
|
105
105
|
break;
|
|
106
106
|
default:
|
|
107
|
-
throw new Error(`
|
|
107
|
+
throw new Error(`Unknown step: ${step.name}`);
|
|
108
108
|
}
|
|
109
109
|
nextStep(state);
|
|
110
110
|
}
|
|
111
111
|
catch (error) {
|
|
112
|
-
console.error(`\n❌
|
|
112
|
+
console.error(`\n❌ Error in step "${step.name}":`, error.message);
|
|
113
113
|
updateStepStatus(state, i, 'failed', undefined, error.message);
|
|
114
114
|
break;
|
|
115
115
|
}
|
|
116
116
|
}
|
|
117
|
-
//
|
|
117
|
+
// Save final state
|
|
118
118
|
saveWorkflowState(state, outputDir);
|
|
119
|
-
//
|
|
119
|
+
// Display summary
|
|
120
120
|
printWorkflowProgress(state);
|
|
121
|
-
//
|
|
122
|
-
console.log('\n📦
|
|
121
|
+
// Display generated files
|
|
122
|
+
console.log('\n📦 Generated files:');
|
|
123
123
|
if (state.intermediateFiles.convertedVideo) {
|
|
124
|
-
console.log(` •
|
|
124
|
+
console.log(` • Video: ${path.basename(state.intermediateFiles.convertedVideo)}`);
|
|
125
125
|
}
|
|
126
126
|
if (state.intermediateFiles.extractedAudio) {
|
|
127
|
-
console.log(` •
|
|
127
|
+
console.log(` • Audio: ${path.basename(state.intermediateFiles.extractedAudio)}`);
|
|
128
128
|
}
|
|
129
129
|
if (state.intermediateFiles.transcriptionText) {
|
|
130
|
-
console.log(` •
|
|
130
|
+
console.log(` • Transcription: ${path.basename(state.intermediateFiles.transcriptionText)}`);
|
|
131
131
|
}
|
|
132
132
|
console.log('');
|
|
133
133
|
}
|
|
134
134
|
async function main() {
|
|
135
135
|
console.log('🎬 FFmpeg Simple Converter - Workflow Multi-Step\n');
|
|
136
|
-
//
|
|
136
|
+
// Check ffmpeg
|
|
137
137
|
const ffmpegInstalled = verifyFfmpeg();
|
|
138
138
|
if (!ffmpegInstalled) {
|
|
139
139
|
process.exit(1);
|
|
140
140
|
}
|
|
141
141
|
console.log('');
|
|
142
|
-
//
|
|
142
|
+
// Ensure configuration exists (even without API keys)
|
|
143
143
|
const config = await ensureConfig();
|
|
144
|
-
//
|
|
144
|
+
// List files
|
|
145
145
|
const currentDir = process.cwd();
|
|
146
146
|
const mediaFiles = listMediaFiles(currentDir);
|
|
147
147
|
if (mediaFiles.length === 0) {
|
|
148
|
-
console.log('\n⚠️
|
|
149
|
-
console.log('
|
|
150
|
-
console.log(' •
|
|
151
|
-
console.log(' •
|
|
148
|
+
console.log('\n⚠️ No media files found in current directory.');
|
|
149
|
+
console.log('Supported formats:');
|
|
150
|
+
console.log(' • Audio: .ogg, .wav, .mp3, .m4a, .aac, .flac');
|
|
151
|
+
console.log(' • Video: .mp4, .mov, .mkv, .webm, .avi\n');
|
|
152
152
|
process.exit(0);
|
|
153
153
|
}
|
|
154
|
-
console.log(`\n📁
|
|
155
|
-
//
|
|
154
|
+
console.log(`\n📁 Found ${mediaFiles.length} media file(s)\n`);
|
|
155
|
+
// File selection
|
|
156
156
|
const { selectedFile } = await inquirer.prompt([
|
|
157
157
|
{
|
|
158
158
|
type: 'list',
|
|
159
159
|
name: 'selectedFile',
|
|
160
|
-
message: '
|
|
160
|
+
message: 'Select the file:',
|
|
161
161
|
choices: mediaFiles.map((f) => ({
|
|
162
162
|
name: `${f.type === 'video' ? '🎬' : '🎵'} ${f.name}`,
|
|
163
163
|
value: f.fullPath
|
|
@@ -165,49 +165,49 @@ async function main() {
|
|
|
165
165
|
}
|
|
166
166
|
]);
|
|
167
167
|
const fileType = detectFileType(selectedFile);
|
|
168
|
-
//
|
|
168
|
+
// Filter workflows compatible with file type
|
|
169
169
|
const availableWorkflows = WORKFLOW_OPTIONS.filter((w) => {
|
|
170
170
|
if (w.requiresType === 'any')
|
|
171
171
|
return true;
|
|
172
172
|
return w.requiresType === fileType;
|
|
173
173
|
});
|
|
174
|
-
//
|
|
174
|
+
// Mark workflows that require API key
|
|
175
175
|
const workflowChoices = availableWorkflows.map((w) => {
|
|
176
|
-
const requiresTranscription = w.steps.some(s => s.includes('
|
|
176
|
+
const requiresTranscription = w.steps.some(s => s.includes('Transcribe'));
|
|
177
177
|
const hasKey = hasApiKey(config);
|
|
178
178
|
let name = w.name;
|
|
179
179
|
if (requiresTranscription && !hasKey) {
|
|
180
|
-
name += ' ⚠️ (
|
|
180
|
+
name += ' ⚠️ (requires API key)';
|
|
181
181
|
}
|
|
182
182
|
return {
|
|
183
183
|
name,
|
|
184
184
|
value: w.value
|
|
185
185
|
};
|
|
186
186
|
});
|
|
187
|
-
//
|
|
187
|
+
// Workflow selection
|
|
188
188
|
const { selectedWorkflow } = await inquirer.prompt([
|
|
189
189
|
{
|
|
190
190
|
type: 'list',
|
|
191
191
|
name: 'selectedWorkflow',
|
|
192
|
-
message: '
|
|
192
|
+
message: 'Select what you want to do:',
|
|
193
193
|
choices: workflowChoices
|
|
194
194
|
}
|
|
195
195
|
]);
|
|
196
196
|
const workflow = availableWorkflows.find((w) => w.value === selectedWorkflow);
|
|
197
197
|
if (!workflow) {
|
|
198
|
-
console.error('❌
|
|
198
|
+
console.error('❌ Invalid workflow');
|
|
199
199
|
process.exit(1);
|
|
200
200
|
}
|
|
201
|
-
//
|
|
202
|
-
const requiresTranscription = workflow.steps.some(s => s.includes('
|
|
201
|
+
// Warning if workflow requires transcription but no API key
|
|
202
|
+
const requiresTranscription = workflow.steps.some(s => s.includes('Transcribe'));
|
|
203
203
|
if (requiresTranscription && !hasApiKey(config)) {
|
|
204
|
-
console.log('\n⚠️
|
|
205
|
-
console.log('
|
|
204
|
+
console.log('\n⚠️ This workflow includes transcription, but no API key is configured.');
|
|
205
|
+
console.log('Transcription will be skipped. Configure an API key to enable transcription.\n');
|
|
206
206
|
const { confirm } = await inquirer.prompt([
|
|
207
207
|
{
|
|
208
208
|
type: 'confirm',
|
|
209
209
|
name: 'confirm',
|
|
210
|
-
message: '
|
|
210
|
+
message: 'Continue anyway?',
|
|
211
211
|
default: true
|
|
212
212
|
}
|
|
213
213
|
]);
|
|
@@ -215,12 +215,12 @@ async function main() {
|
|
|
215
215
|
process.exit(0);
|
|
216
216
|
}
|
|
217
217
|
}
|
|
218
|
-
//
|
|
218
|
+
// Execute workflow
|
|
219
219
|
await executeWorkflow(workflow, selectedFile, config);
|
|
220
220
|
}
|
|
221
|
-
//
|
|
221
|
+
// Execute
|
|
222
222
|
main().catch((error) => {
|
|
223
|
-
console.error('\n❌
|
|
223
|
+
console.error('\n❌ Error:', error.message);
|
|
224
224
|
process.exit(1);
|
|
225
225
|
});
|
|
226
226
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,QAAQ,MAAM,UAAU,CAAA;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AACrD,OAAO,EAAE,YAAY,EAAc,SAAS,EAAE,MAAM,mBAAmB,CAAA;AACvE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AACvE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AACtF,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAC1E,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,QAAQ,EACR,qBAAqB,EACrB,iBAAiB,EACjB,cAAc,EACf,MAAM,qBAAqB,CAAA;AAC5B,OAAO,IAAI,MAAM,MAAM,CAAA;AASvB,MAAM,gBAAgB,GAAqB;IACzC;QACE,IAAI,EAAE
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,QAAQ,MAAM,UAAU,CAAA;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AACrD,OAAO,EAAE,YAAY,EAAc,SAAS,EAAE,MAAM,mBAAmB,CAAA;AACvE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AACvE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AACtF,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAC1E,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,QAAQ,EACR,qBAAqB,EACrB,iBAAiB,EACjB,cAAc,EACf,MAAM,qBAAqB,CAAA;AAC5B,OAAO,IAAI,MAAM,MAAM,CAAA;AASvB,MAAM,gBAAgB,GAAqB;IACzC;QACE,IAAI,EAAE,+CAA+C;QACrD,KAAK,EAAE,YAAY;QACnB,KAAK,EAAE,CAAC,eAAe,EAAE,eAAe,EAAE,kBAAkB,CAAC;QAC7D,YAAY,EAAE,OAAO;KACtB;IACD;QACE,IAAI,EAAE,0CAA0C;QAChD,KAAK,EAAE,0BAA0B;QACjC,KAAK,EAAE,CAAC,eAAe,EAAE,kBAAkB,CAAC;QAC5C,YAAY,EAAE,OAAO;KACtB;IACD;QACE,IAAI,EAAE,+BAA+B;QACrC,KAAK,EAAE,0BAA0B;QACjC,KAAK,EAAE,CAAC,eAAe,EAAE,kBAAkB,CAAC;QAC5C,YAAY,EAAE,OAAO;KACtB;IACD;QACE,IAAI,EAAE,4BAA4B;QAClC,KAAK,EAAE,kBAAkB;QACzB,KAAK,EAAE,CAAC,kBAAkB,CAAC;QAC3B,YAAY,EAAE,OAAO;KACtB;IACD;QACE,IAAI,EAAE,uBAAuB;QAC7B,KAAK,EAAE,eAAe;QACtB,KAAK,EAAE,CAAC,eAAe,CAAC;QACxB,YAAY,EAAE,OAAO;KACtB;IACD;QACE,IAAI,EAAE,uBAAuB;QAC7B,KAAK,EAAE,eAAe;QACtB,KAAK,EAAE,CAAC,eAAe,CAAC;QACxB,YAAY,EAAE,OAAO;KACtB;IACD;QACE,IAAI,EAAE,kCAAkC;QACxC,KAAK,EAAE,eAAe;QACtB,KAAK,EAAE,CAAC,eAAe,CAAC;QACxB,YAAY,EAAE,OAAO;KACtB;CACF,CAAA;AAED,KAAK,UAAU,eAAe,CAC5B,QAAwB,EACxB,SAAiB,EACjB,MAAW;IAEX,MAAM,KAAK,GAAG,mBAAmB,CAAC,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC5D,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IAEzC,OAAO,CAAC,GAAG,CAAC,2BAA2B,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;IACvD,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;IAE3D,IAAI,WAAW,GAAG,SAAS,CAAA;IAC3B,IAAI,SAA6B,CAAA;IACjC,IAAI,iBAAqC,CAAA;IAEzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5C,MAAM,IAAI,GAAG,cAAc,CAAC,KAAK,CAAC,CAAA;QAClC,IAAI,CAAC,IAAI;YAAE,MAAK;QAEhB,gBAAgB,CAAC,KAAK,EAAE,CAAC,EAAE,SAAS,CAAC,CAAA;QACrC,OAAO,CAAC,GAAG,CAAC,MAAO,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,IAAI,KAAK,CAAC,CAAA;QAElE,IAAI,CAAC;YACH,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;gBAClB,KAAK,eAAe;oBAClB,WAAW,GAAG,MAAM,YAAY,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA;oBACxD,KAAK,CAAC,iBAAiB,CAAC,cAAc,GAAG,WAAW,CAAA;oBACpD,gBAAgB,CAAC,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,CAAA;oBACpE,MAAK;gBAEP,KAAK,eAAe;oBAClB,SAAS,GAAG,MAAM,YAAY,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA;oBACtD,KAAK,CAAC,iBAAiB,CAAC,cAAc,GAAG,SAAS,CAAA;oBAClD,WAAW,GAAG,SAAS,CAAA;oBACvB,gBAAgB,CAAC,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAA;oBAClE,MAAK;gBAEP,KAAK,eAAe;oBAClB,SAAS,GAAG,MAAM,YAAY,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA;oBACtD,WAAW,GAAG,SAAS,CAAA;oBACvB,gBAAgB,CAAC,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAA;oBAClE,MAAK;gBAEP,KAAK,kBAAkB;oBACrB,oEAAoE;oBACpE,MAAM,gBAAgB,GAAG,SAAS,IAAI,WAAW,CAAA;oBAEjD,iCAAiC;oBACjC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;wBACvB,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAA;wBACnE,gBAAgB,CAAC,KAAK,EAAE,CAAC,EAAE,SAAS,CAAC,CAAA;wBACrC,MAAK;oBACP,CAAC;oBAED,MAAM,aAAa,GAAG,MAAM,eAAe,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAA;oBAErE,IAAI,aAAa,EAAE,CAAC;wBAClB,iBAAiB,GAAG,iBAAiB,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAA;wBACtE,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,GAAG,iBAAiB,CAAA;wBAC7D,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAA;wBACvE,gBAAgB,CAAC,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,UAAU,EAAE,iBAAiB,EAAE,CAAC,CAAA;oBAC5E,CAAC;yBAAM,CAAC;wBACN,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;oBAC/C,CAAC;oBACD,MAAK;gBAEP;oBACE,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;YACjD,CAAC;YAED,QAAQ,CAAC,KAAK,CAAC,CAAA;QACjB,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,sBAAsB,IAAI,CAAC,IAAI,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;YACjE,gBAAgB,CAAC,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;YAC9D,MAAK;QACP,CAAC;IACH,CAAC;IAED,mBAAmB;IACnB,iBAAiB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;IAEnC,kBAAkB;IAClB,qBAAqB,CAAC,KAAK,CAAC,CAAA;IAE5B,0BAA0B;IAC1B,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAA;IACpC,IAAI,KAAK,CAAC,iBAAiB,CAAC,cAAc,EAAE,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,iBAAiB,CAAC,cAAc,CAAC,EAAE,CAAC,CAAA;IACpF,CAAC;IACD,IAAI,KAAK,CAAC,iBAAiB,CAAC,cAAc,EAAE,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,iBAAiB,CAAC,cAAc,CAAC,EAAE,CAAC,CAAA;IACpF,CAAC;IACD,IAAI,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAA;IAC/F,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;AACjB,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAA;IAEjE,eAAe;IACf,MAAM,eAAe,GAAG,YAAY,EAAE,CAAA;IACtC,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IAEf,sDAAsD;IACtD,MAAM,MAAM,GAAG,MAAM,YAAY,EAAE,CAAA;IAEnC,aAAa;IACb,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;IAChC,MAAM,UAAU,GAAG,cAAc,CAAC,UAAU,CAAC,CAAA;IAE7C,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAA;QAC/D,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAA;QACjC,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAA;QAC7D,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAA;QACzD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,cAAc,UAAU,CAAC,MAAM,kBAAkB,CAAC,CAAA;IAE9D,iBAAiB;IACjB,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;QAC7C;YACE,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE,kBAAkB;YAC3B,OAAO,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC9B,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE;gBACrD,KAAK,EAAE,CAAC,CAAC,QAAQ;aAClB,CAAC,CAAC;SACJ;KACF,CAAC,CAAA;IAEF,MAAM,QAAQ,GAAG,cAAc,CAAC,YAAY,CAAC,CAAA;IAE7C,6CAA6C;IAC7C,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;QACvD,IAAI,CAAC,CAAC,YAAY,KAAK,KAAK;YAAE,OAAO,IAAI,CAAA;QACzC,OAAO,CAAC,CAAC,YAAY,KAAK,QAAQ,CAAA;IACpC,CAAC,CAAC,CAAA;IAEF,sCAAsC;IACtC,MAAM,eAAe,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACnD,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAA;QACzE,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAA;QAEhC,IAAI,IAAI,GAAG,CAAC,CAAC,IAAI,CAAA;QACjB,IAAI,qBAAqB,IAAI,CAAC,MAAM,EAAE,CAAC;YACrC,IAAI,IAAI,yBAAyB,CAAA;QACnC,CAAC;QAED,OAAO;YACL,IAAI;YACJ,KAAK,EAAE,CAAC,CAAC,KAAK;SACf,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,qBAAqB;IACrB,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;QACjD;YACE,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,kBAAkB;YACxB,OAAO,EAAE,6BAA6B;YACtC,OAAO,EAAE,eAAe;SACzB;KACF,CAAC,CAAA;IAEF,MAAM,QAAQ,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,gBAAgB,CAAC,CAAA;IAC7E,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAA;QACnC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,4DAA4D;IAC5D,MAAM,qBAAqB,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAA;IAChF,IAAI,qBAAqB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,2EAA2E,CAAC,CAAA;QACxF,OAAO,CAAC,GAAG,CAAC,gFAAgF,CAAC,CAAA;QAE7F,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;YACxC;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,kBAAkB;gBAC3B,OAAO,EAAE,IAAI;aACd;SACF,CAAC,CAAA;QAEF,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;IACH,CAAC;IAED,mBAAmB;IACnB,MAAM,eAAe,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,CAAC,CAAA;AACvD,CAAC;AAED,UAAU;AACV,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;IAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC,CAAC,CAAA"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Transcribes an audio file using Groq Whisper
|
|
3
3
|
* https://console.groq.com/docs/speech-to-text
|
|
4
|
-
* @param audioLocalFilePath -
|
|
5
|
-
* @param apiKey - API Key
|
|
6
|
-
* @returns
|
|
4
|
+
* @param audioLocalFilePath - Local audio file path
|
|
5
|
+
* @param apiKey - Groq API Key
|
|
6
|
+
* @returns Transcribed text or null in case of error
|
|
7
7
|
*/
|
|
8
8
|
export declare const groqTranscriptAudio: (audioLocalFilePath: string, apiKey: string) => Promise<string | null>;
|
|
9
9
|
//# sourceMappingURL=groq.d.ts.map
|
package/dist/transcript/groq.js
CHANGED
|
@@ -2,15 +2,15 @@ import FormData from 'form-data';
|
|
|
2
2
|
import fs from 'fs';
|
|
3
3
|
import axios from 'axios';
|
|
4
4
|
/**
|
|
5
|
-
*
|
|
5
|
+
* Transcribes an audio file using Groq Whisper
|
|
6
6
|
* https://console.groq.com/docs/speech-to-text
|
|
7
|
-
* @param audioLocalFilePath -
|
|
8
|
-
* @param apiKey - API Key
|
|
9
|
-
* @returns
|
|
7
|
+
* @param audioLocalFilePath - Local audio file path
|
|
8
|
+
* @param apiKey - Groq API Key
|
|
9
|
+
* @returns Transcribed text or null in case of error
|
|
10
10
|
*/
|
|
11
11
|
export const groqTranscriptAudio = async (audioLocalFilePath, apiKey) => {
|
|
12
12
|
if (!apiKey) {
|
|
13
|
-
console.error('❌ Groq API Key
|
|
13
|
+
console.error('❌ Groq API Key not provided');
|
|
14
14
|
return null;
|
|
15
15
|
}
|
|
16
16
|
try {
|
|
@@ -31,7 +31,7 @@ export const groqTranscriptAudio = async (audioLocalFilePath, apiKey) => {
|
|
|
31
31
|
return data?.text?.trim() || null;
|
|
32
32
|
}
|
|
33
33
|
catch (error) {
|
|
34
|
-
console.error('
|
|
34
|
+
console.error('Error transcribing audio with Groq:', error.response?.data || error.message);
|
|
35
35
|
return null;
|
|
36
36
|
}
|
|
37
37
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"groq.js","sourceRoot":"","sources":["../../src/transcript/groq.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,MAAM,IAAI,CAAA;AACnB,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EACtC,kBAA0B,EAC1B,MAAc,EACU,EAAE;IAE1B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"groq.js","sourceRoot":"","sources":["../../src/transcript/groq.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,MAAM,IAAI,CAAA;AACnB,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EACtC,kBAA0B,EAC1B,MAAc,EACU,EAAE;IAE1B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAA;QAC5C,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAA;QAE/B,+BAA+B;QAC/B,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,CAAA;QAChE,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAA;QAC5C,QAAQ,CAAC,MAAM,CAAC,iBAAiB,EAAE,cAAc,CAAC,CAAA;QAClD,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,GAAG,CAAC,CAAA;QACnC,oCAAoC;QAEpC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,KAAK,CAAC,IAAI,CAC/B,qDAAqD,EACrD,QAAQ,EACR;YACE,OAAO,EAAE,KAAK;YACd,OAAO,EAAE;gBACP,eAAe,EAAE,UAAU,MAAM,EAAE;gBACnC,GAAG,QAAQ,CAAC,UAAU,EAAE;aACzB;SACF,CACF,CAAA;QAED,OAAO,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,CAAA;IAEnC,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,KAAK,CAAC,QAAQ,EAAE,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,CAAA;QAC3F,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC,CAAA"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { Config } from '../types/index.js';
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
* @param audioFilePath -
|
|
5
|
-
* @param config -
|
|
6
|
-
* @returns
|
|
3
|
+
* Transcribes an audio file, automatically splitting if larger than 10MB
|
|
4
|
+
* @param audioFilePath - Audio file path
|
|
5
|
+
* @param config - Configuration with API keys
|
|
6
|
+
* @returns Transcribed text or null
|
|
7
7
|
*/
|
|
8
8
|
export declare function transcribeAudio(audioFilePath: string, config: Config): Promise<string | null>;
|
|
9
9
|
/**
|
|
10
|
-
*
|
|
10
|
+
* Saves transcription to file
|
|
11
11
|
*/
|
|
12
12
|
export declare function saveTranscription(audioPath: string, transcription: string): string;
|
|
13
13
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/transcript/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/transcript/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAmC1C;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAgGxB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAMlF"}
|