mediacript 1.0.3 ā 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/transcript/index.d.ts +1 -1
- package/dist/transcript/index.d.ts.map +1 -1
- package/dist/transcript/index.js +89 -17
- package/dist/transcript/index.js.map +1 -1
- package/dist/utils/ffmpegOperations.d.ts +13 -0
- package/dist/utils/ffmpegOperations.d.ts.map +1 -1
- package/dist/utils/ffmpegOperations.js +80 -0
- package/dist/utils/ffmpegOperations.js.map +1 -1
- package/dist/utils/fileHelpers.d.ts +8 -0
- package/dist/utils/fileHelpers.d.ts.map +1 -1
- package/dist/utils/fileHelpers.js +19 -0
- package/dist/utils/fileHelpers.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Config } from '../types/index.js';
|
|
2
2
|
/**
|
|
3
|
-
* Transcribes an audio file
|
|
3
|
+
* Transcribes an audio file, automatically splitting if larger than 10MB
|
|
4
4
|
* @param audioFilePath - Audio file path
|
|
5
5
|
* @param config - Configuration with API keys
|
|
6
6
|
* @returns Transcribed text or null
|
|
@@ -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"}
|
package/dist/transcript/index.js
CHANGED
|
@@ -2,41 +2,113 @@ import path from 'path';
|
|
|
2
2
|
import fs from 'fs';
|
|
3
3
|
import { groqTranscriptAudio } from './groq.js';
|
|
4
4
|
import { openaiTranscriptAudio } from './openai.js';
|
|
5
|
+
import { getFileSize, bytesToMB } from '../utils/fileHelpers.js';
|
|
6
|
+
import { splitAudioIntoChunks, deleteDirectory } from '../utils/ffmpegOperations.js';
|
|
7
|
+
const MAX_FILE_SIZE_MB = 10;
|
|
5
8
|
/**
|
|
6
|
-
* Transcribes
|
|
7
|
-
* @param audioFilePath - Audio file path
|
|
8
|
-
* @param config - Configuration with API keys
|
|
9
|
-
* @returns Transcribed text or null
|
|
9
|
+
* Transcribes a single audio file using Groq or OpenAI
|
|
10
10
|
*/
|
|
11
|
-
|
|
12
|
-
console.log(`\nšļø Transcribing: ${path.basename(audioFilePath)}`);
|
|
11
|
+
async function transcribeSingleAudio(audioFilePath, config) {
|
|
13
12
|
// Try Groq first (faster and cheaper)
|
|
14
13
|
if (config.groqApiKey) {
|
|
15
|
-
console.log('š” Trying Groq Whisper (fast)...');
|
|
16
14
|
const result = await groqTranscriptAudio(audioFilePath, config.groqApiKey);
|
|
17
15
|
if (result) {
|
|
18
|
-
console.log('ā Transcription completed with Groq');
|
|
19
16
|
return result;
|
|
20
17
|
}
|
|
21
|
-
console.log('ā ļø Failed with Groq, trying OpenAI...');
|
|
22
18
|
}
|
|
23
19
|
// If Groq failed or is not configured, try OpenAI
|
|
24
20
|
if (config.openaiApiKey) {
|
|
25
|
-
console.log('š” Trying OpenAI Whisper...');
|
|
26
21
|
const result = await openaiTranscriptAudio(audioFilePath, config.openaiApiKey);
|
|
27
22
|
if (result) {
|
|
28
|
-
console.log('ā Transcription completed with OpenAI');
|
|
29
23
|
return result;
|
|
30
24
|
}
|
|
31
25
|
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Transcribes an audio file, automatically splitting if larger than 10MB
|
|
30
|
+
* @param audioFilePath - Audio file path
|
|
31
|
+
* @param config - Configuration with API keys
|
|
32
|
+
* @returns Transcribed text or null
|
|
33
|
+
*/
|
|
34
|
+
export async function transcribeAudio(audioFilePath, config) {
|
|
35
|
+
console.log(`\nšļø Transcribing: ${path.basename(audioFilePath)}`);
|
|
36
|
+
const fileSize = getFileSize(audioFilePath);
|
|
37
|
+
const fileSizeMB = bytesToMB(fileSize);
|
|
38
|
+
console.log(`š¦ File size: ${fileSizeMB.toFixed(2)}MB`);
|
|
39
|
+
// If file is small enough, transcribe directly
|
|
40
|
+
if (fileSizeMB <= MAX_FILE_SIZE_MB) {
|
|
41
|
+
console.log('š” File size is within limits, transcribing directly...');
|
|
42
|
+
if (config.groqApiKey) {
|
|
43
|
+
console.log('š” Trying Groq Whisper (fast)...');
|
|
44
|
+
const result = await transcribeSingleAudio(audioFilePath, config);
|
|
45
|
+
if (result) {
|
|
46
|
+
console.log('ā Transcription completed with Groq');
|
|
47
|
+
return result;
|
|
48
|
+
}
|
|
49
|
+
console.log('ā ļø Failed with Groq, trying OpenAI...');
|
|
50
|
+
}
|
|
51
|
+
if (config.openaiApiKey) {
|
|
52
|
+
console.log('š” Trying OpenAI Whisper...');
|
|
53
|
+
const result = await transcribeSingleAudio(audioFilePath, config);
|
|
54
|
+
if (result) {
|
|
55
|
+
console.log('ā Transcription completed with OpenAI');
|
|
56
|
+
return result;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
37
59
|
console.error('ā Failed to transcribe with all available services');
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
// File is too large, split into chunks
|
|
63
|
+
console.log(`ā ļø File exceeds ${MAX_FILE_SIZE_MB}MB limit, splitting into chunks...`);
|
|
64
|
+
let chunkFiles = [];
|
|
65
|
+
let tempDir = '';
|
|
66
|
+
try {
|
|
67
|
+
chunkFiles = await splitAudioIntoChunks(audioFilePath, MAX_FILE_SIZE_MB);
|
|
68
|
+
tempDir = path.dirname(chunkFiles[0]);
|
|
69
|
+
const transcriptions = [];
|
|
70
|
+
// Transcribe each chunk
|
|
71
|
+
for (let i = 0; i < chunkFiles.length; i++) {
|
|
72
|
+
const chunkFile = chunkFiles[i];
|
|
73
|
+
const chunkSize = bytesToMB(getFileSize(chunkFile));
|
|
74
|
+
console.log(`\n[${i + 1}/${chunkFiles.length}] Transcribing chunk: ${path.basename(chunkFile)} (${chunkSize.toFixed(2)}MB)`);
|
|
75
|
+
if (config.groqApiKey) {
|
|
76
|
+
console.log('š” Trying Groq Whisper (fast)...');
|
|
77
|
+
const result = await transcribeSingleAudio(chunkFile, config);
|
|
78
|
+
if (result) {
|
|
79
|
+
console.log(`ā Chunk ${i + 1} transcribed with Groq`);
|
|
80
|
+
transcriptions.push(result);
|
|
81
|
+
continue;
|
|
82
|
+
}
|
|
83
|
+
console.log('ā ļø Failed with Groq, trying OpenAI...');
|
|
84
|
+
}
|
|
85
|
+
if (config.openaiApiKey) {
|
|
86
|
+
console.log('š” Trying OpenAI Whisper...');
|
|
87
|
+
const result = await transcribeSingleAudio(chunkFile, config);
|
|
88
|
+
if (result) {
|
|
89
|
+
console.log(`ā Chunk ${i + 1} transcribed with OpenAI`);
|
|
90
|
+
transcriptions.push(result);
|
|
91
|
+
continue;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
// If we couldn't transcribe this chunk, fail
|
|
95
|
+
console.error(`ā Failed to transcribe chunk ${i + 1}`);
|
|
96
|
+
return null;
|
|
97
|
+
}
|
|
98
|
+
// Combine all transcriptions
|
|
99
|
+
console.log('\nš Combining all transcriptions...');
|
|
100
|
+
const finalTranscription = transcriptions.join('\n\n');
|
|
101
|
+
console.log(`ā Successfully transcribed all ${chunkFiles.length} chunks`);
|
|
102
|
+
return finalTranscription;
|
|
103
|
+
}
|
|
104
|
+
finally {
|
|
105
|
+
// Clean up temp directory
|
|
106
|
+
if (tempDir) {
|
|
107
|
+
console.log('\nš§¹ Cleaning up temporary files...');
|
|
108
|
+
deleteDirectory(tempDir);
|
|
109
|
+
console.log('ā Cleanup complete');
|
|
110
|
+
}
|
|
38
111
|
}
|
|
39
|
-
return null;
|
|
40
112
|
}
|
|
41
113
|
/**
|
|
42
114
|
* Saves transcription to file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/transcript/index.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,MAAM,IAAI,CAAA;AAEnB,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAA;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/transcript/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,4 +18,17 @@ export declare function extractAudio(inputPath: string, outputDir?: string): Pro
|
|
|
18
18
|
* Converts audio to performant format
|
|
19
19
|
*/
|
|
20
20
|
export declare function convertAudio(inputPath: string, outputDir?: string): Promise<string>;
|
|
21
|
+
/**
|
|
22
|
+
* Gets the duration of an audio file in seconds
|
|
23
|
+
*/
|
|
24
|
+
export declare function getAudioDuration(inputPath: string): Promise<number>;
|
|
25
|
+
/**
|
|
26
|
+
* Splits an audio file into chunks of specified size (in MB)
|
|
27
|
+
* Returns an array of chunk file paths
|
|
28
|
+
*/
|
|
29
|
+
export declare function splitAudioIntoChunks(inputPath: string, maxSizeMB?: number): Promise<string[]>;
|
|
30
|
+
/**
|
|
31
|
+
* Deletes a directory and all its contents
|
|
32
|
+
*/
|
|
33
|
+
export declare function deleteDirectory(dirPath: string): void;
|
|
21
34
|
//# sourceMappingURL=ffmpegOperations.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ffmpegOperations.d.ts","sourceRoot":"","sources":["../../src/utils/ffmpegOperations.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAU1F;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAsChE;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,SAAS,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,CAsBjB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,SAAS,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,CAmBjB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,SAAS,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,CAkBjB"}
|
|
1
|
+
{"version":3,"file":"ffmpegOperations.d.ts","sourceRoot":"","sources":["../../src/utils/ffmpegOperations.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAU1F;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAsChE;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,SAAS,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,CAsBjB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,SAAS,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,CAmBjB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,SAAS,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,CAkBjB;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA2BzE;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,SAAS,EAAE,MAAM,EACjB,SAAS,GAAE,MAAW,GACrB,OAAO,CAAC,MAAM,EAAE,CAAC,CAkDnB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAIrD"}
|
|
@@ -114,4 +114,84 @@ export async function convertAudio(inputPath, outputDir) {
|
|
|
114
114
|
console.log(`\nā Audio converted: ${path.basename(outputPath)}`);
|
|
115
115
|
return outputPath;
|
|
116
116
|
}
|
|
117
|
+
/**
|
|
118
|
+
* Gets the duration of an audio file in seconds
|
|
119
|
+
*/
|
|
120
|
+
export async function getAudioDuration(inputPath) {
|
|
121
|
+
return new Promise((resolve, reject) => {
|
|
122
|
+
const ffprobe = spawn('ffprobe', [
|
|
123
|
+
'-v', 'error',
|
|
124
|
+
'-show_entries', 'format=duration',
|
|
125
|
+
'-of', 'default=noprint_wrappers=1:nokey=1',
|
|
126
|
+
inputPath
|
|
127
|
+
]);
|
|
128
|
+
let output = '';
|
|
129
|
+
ffprobe.stdout.on('data', (data) => {
|
|
130
|
+
output += data.toString();
|
|
131
|
+
});
|
|
132
|
+
ffprobe.on('close', (code) => {
|
|
133
|
+
if (code === 0) {
|
|
134
|
+
const duration = parseFloat(output.trim());
|
|
135
|
+
resolve(duration);
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
reject(new Error(`Failed to get audio duration, code ${code}`));
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
ffprobe.on('error', (err) => {
|
|
142
|
+
reject(err);
|
|
143
|
+
});
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Splits an audio file into chunks of specified size (in MB)
|
|
148
|
+
* Returns an array of chunk file paths
|
|
149
|
+
*/
|
|
150
|
+
export async function splitAudioIntoChunks(inputPath, maxSizeMB = 10) {
|
|
151
|
+
const dir = path.dirname(inputPath);
|
|
152
|
+
const baseName = path.basename(inputPath, path.extname(inputPath));
|
|
153
|
+
const ext = path.extname(inputPath);
|
|
154
|
+
// Create temp directory for chunks
|
|
155
|
+
const tempDir = path.join(dir, `${baseName}_chunks_temp`);
|
|
156
|
+
if (!fs.existsSync(tempDir)) {
|
|
157
|
+
fs.mkdirSync(tempDir, { recursive: true });
|
|
158
|
+
}
|
|
159
|
+
console.log(`\nāļø Splitting audio into chunks of max ${maxSizeMB}MB...`);
|
|
160
|
+
// Get total duration
|
|
161
|
+
const totalDuration = await getAudioDuration(inputPath);
|
|
162
|
+
// Get file size
|
|
163
|
+
const stats = fs.statSync(inputPath);
|
|
164
|
+
const fileSizeMB = stats.size / (1024 * 1024);
|
|
165
|
+
// Calculate approximate chunk duration to stay under maxSizeMB
|
|
166
|
+
// We use 90% of target size to have a safety margin
|
|
167
|
+
const targetSizeMB = maxSizeMB * 0.9;
|
|
168
|
+
const chunkDuration = Math.floor((totalDuration * targetSizeMB) / fileSizeMB);
|
|
169
|
+
console.log(`š Total duration: ${Math.round(totalDuration)}s, splitting into ~${Math.ceil(totalDuration / chunkDuration)} chunks`);
|
|
170
|
+
// Output pattern for chunks
|
|
171
|
+
const outputPattern = path.join(tempDir, `chunk_%03d${ext}`);
|
|
172
|
+
const args = [
|
|
173
|
+
'-i', inputPath,
|
|
174
|
+
'-f', 'segment',
|
|
175
|
+
'-segment_time', chunkDuration.toString(),
|
|
176
|
+
'-c', 'copy',
|
|
177
|
+
'-reset_timestamps', '1',
|
|
178
|
+
outputPattern
|
|
179
|
+
];
|
|
180
|
+
await runFfmpegCommand(args);
|
|
181
|
+
// Get all chunk files
|
|
182
|
+
const chunkFiles = fs.readdirSync(tempDir)
|
|
183
|
+
.filter(f => f.startsWith('chunk_') && f.endsWith(ext))
|
|
184
|
+
.sort()
|
|
185
|
+
.map(f => path.join(tempDir, f));
|
|
186
|
+
console.log(`ā Created ${chunkFiles.length} chunks`);
|
|
187
|
+
return chunkFiles;
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Deletes a directory and all its contents
|
|
191
|
+
*/
|
|
192
|
+
export function deleteDirectory(dirPath) {
|
|
193
|
+
if (fs.existsSync(dirPath)) {
|
|
194
|
+
fs.rmSync(dirPath, { recursive: true, force: true });
|
|
195
|
+
}
|
|
196
|
+
}
|
|
117
197
|
//# sourceMappingURL=ffmpegOperations.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ffmpegOperations.js","sourceRoot":"","sources":["../../src/utils/ffmpegOperations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AACrC,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,MAAM,IAAI,CAAA;AAEnB;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAW,EAAE,QAAgB,EAAE,UAAkB;IAChF,IAAI,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,GAAG,UAAU,EAAE,CAAC,CAAA;IAC1D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,SAAS,CAAA;IAE/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAChC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,IAAI,CAAC,GAAG,UAAU,EAAE,CAAC,CAAA;QAC3D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;YAAE,OAAO,SAAS,CAAA;IACjD,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAA;AAC7D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAc;IAC7C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE;YACnC,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;SAClC,CAAC,CAAA;QAEF,IAAI,MAAM,GAAG,EAAE,CAAA;QACf,IAAI,MAAM,GAAG,EAAE,CAAA;QAEf,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YAChC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAA;QAC3B,CAAC,CAAC,CAAA;QAEF,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YAChC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAA;YACzB,kCAAkC;YAClC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;YAChC,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;YAE9C,gDAAgD;YAChD,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC/B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;YAC9C,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YAC1B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;YAC1B,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,OAAO,CAAC,MAAM,CAAC,CAAA;YACjB,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,KAAK,CAAC,2BAA2B,IAAI,KAAK,MAAM,EAAE,CAAC,CAAC,CAAA;YACjE,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACzB,MAAM,CAAC,GAAG,CAAC,CAAA;QACb,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,SAAiB,EACjB,SAAkB;IAElB,MAAM,GAAG,GAAG,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAA;IAClE,MAAM,UAAU,GAAG,gBAAgB,CAAC,GAAG,EAAE,GAAG,QAAQ,YAAY,EAAE,MAAM,CAAC,CAAA;IAEzE,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAA;IAE5D,MAAM,IAAI,GAAG;QACX,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,SAAS;QACjB,SAAS,EAAE,QAAQ;QACnB,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,MAAM;QACd,WAAW,EAAE,YAAY;QACzB,IAAI;QACJ,UAAU;KACX,CAAA;IAED,MAAM,gBAAgB,CAAC,IAAI,CAAC,CAAA;IAC5B,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;IAChE,OAAO,UAAU,CAAA;AACnB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,SAAiB,EACjB,SAAkB;IAElB,MAAM,GAAG,GAAG,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAA;IAClE,MAAM,UAAU,GAAG,gBAAgB,CAAC,GAAG,EAAE,GAAG,QAAQ,QAAQ,EAAE,MAAM,CAAC,CAAA;IAErE,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAA;IAElD,MAAM,IAAI,GAAG;QACX,IAAI,EAAE,SAAS;QACf,KAAK;QACL,SAAS,EAAE,YAAY;QACvB,MAAM,EAAE,MAAM;QACd,IAAI;QACJ,UAAU;KACX,CAAA;IAED,MAAM,gBAAgB,CAAC,IAAI,CAAC,CAAA;IAC5B,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;IAChE,OAAO,UAAU,CAAA;AACnB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,SAAiB,EACjB,SAAkB;IAElB,MAAM,GAAG,GAAG,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAA;IAClE,MAAM,UAAU,GAAG,gBAAgB,CAAC,GAAG,EAAE,GAAG,QAAQ,YAAY,EAAE,MAAM,CAAC,CAAA;IAEzE,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAA;IAE9C,MAAM,IAAI,GAAG;QACX,IAAI,EAAE,SAAS;QACf,SAAS,EAAE,YAAY;QACvB,MAAM,EAAE,MAAM;QACd,IAAI;QACJ,UAAU;KACX,CAAA;IAED,MAAM,gBAAgB,CAAC,IAAI,CAAC,CAAA;IAC5B,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;IAChE,OAAO,UAAU,CAAA;AACnB,CAAC"}
|
|
1
|
+
{"version":3,"file":"ffmpegOperations.js","sourceRoot":"","sources":["../../src/utils/ffmpegOperations.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,4 +15,12 @@ export declare function listMediaFiles(dir: string): Array<{
|
|
|
15
15
|
* Checks if a file exists
|
|
16
16
|
*/
|
|
17
17
|
export declare function fileExists(filePath: string): boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Gets file size in bytes
|
|
20
|
+
*/
|
|
21
|
+
export declare function getFileSize(filePath: string): number;
|
|
22
|
+
/**
|
|
23
|
+
* Converts bytes to MB
|
|
24
|
+
*/
|
|
25
|
+
export declare function bytesToMB(bytes: number): number;
|
|
18
26
|
//# sourceMappingURL=fileHelpers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fileHelpers.d.ts","sourceRoot":"","sources":["../../src/utils/fileHelpers.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,CAAA;AAEpD;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAMzD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC,CA0BrG;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAMpD"}
|
|
1
|
+
{"version":3,"file":"fileHelpers.d.ts","sourceRoot":"","sources":["../../src/utils/fileHelpers.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,CAAA;AAEpD;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAMzD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC,CA0BrG;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAMpD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAQpD;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE/C"}
|
|
@@ -56,4 +56,23 @@ export function fileExists(filePath) {
|
|
|
56
56
|
return false;
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
|
+
/**
|
|
60
|
+
* Gets file size in bytes
|
|
61
|
+
*/
|
|
62
|
+
export function getFileSize(filePath) {
|
|
63
|
+
try {
|
|
64
|
+
const stats = fs.statSync(filePath);
|
|
65
|
+
return stats.size;
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
console.error('Error getting file size:', error);
|
|
69
|
+
return 0;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Converts bytes to MB
|
|
74
|
+
*/
|
|
75
|
+
export function bytesToMB(bytes) {
|
|
76
|
+
return bytes / (1024 * 1024);
|
|
77
|
+
}
|
|
59
78
|
//# sourceMappingURL=fileHelpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fileHelpers.js","sourceRoot":"","sources":["../../src/utils/fileHelpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAA;AACnB,OAAO,IAAI,MAAM,MAAM,CAAA;AAEvB,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;AAC7E,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAA;AAIrE;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAA;IAEhD,IAAI,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,OAAO,OAAO,CAAA;IACvC,IAAI,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,OAAO,OAAO,CAAA;IACvC,OAAO,SAAS,CAAA;AAClB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,GAAW;IACxC,IAAI,CAAC;QACH,OAAO,EAAE;aACN,WAAW,CAAC,GAAG,CAAC;aAChB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;YACf,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;YACrC,IAAI,CAAC;gBACH,OAAO,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAA;YACvC,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,KAAK,CAAA;YACd,CAAC;QACH,CAAC,CAAC;aACD,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACZ,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;YACrC,OAAO;gBACL,IAAI;gBACJ,QAAQ;gBACR,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC;aAC3B,CAAA;QACH,CAAC,CAAC;aACD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC;aACnC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;IACjD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAA;QAC5C,OAAO,EAAE,CAAA;IACX,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,QAAgB;IACzC,IAAI,CAAC;QACH,OAAO,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAA;IAClE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"fileHelpers.js","sourceRoot":"","sources":["../../src/utils/fileHelpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAA;AACnB,OAAO,IAAI,MAAM,MAAM,CAAA;AAEvB,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;AAC7E,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAA;AAIrE;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAA;IAEhD,IAAI,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,OAAO,OAAO,CAAA;IACvC,IAAI,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,OAAO,OAAO,CAAA;IACvC,OAAO,SAAS,CAAA;AAClB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,GAAW;IACxC,IAAI,CAAC;QACH,OAAO,EAAE;aACN,WAAW,CAAC,GAAG,CAAC;aAChB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;YACf,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;YACrC,IAAI,CAAC;gBACH,OAAO,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAA;YACvC,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,KAAK,CAAA;YACd,CAAC;QACH,CAAC,CAAC;aACD,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACZ,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;YACrC,OAAO;gBACL,IAAI;gBACJ,QAAQ;gBACR,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC;aAC3B,CAAA;QACH,CAAC,CAAC;aACD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC;aACnC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;IACjD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAA;QAC5C,OAAO,EAAE,CAAA;IACX,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,QAAgB;IACzC,IAAI,CAAC;QACH,OAAO,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAA;IAClE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,QAAgB;IAC1C,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;QACnC,OAAO,KAAK,CAAC,IAAI,CAAA;IACnB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAA;QAChD,OAAO,CAAC,CAAA;IACV,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,KAAa;IACrC,OAAO,KAAK,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAA;AAC9B,CAAC"}
|