@thunderkiller/video-clipper 1.5.5 → 1.5.6
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/README.md +69 -349
- package/dist/config/index.d.ts +0 -1
- package/dist/config/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/pipeline/dumper.d.ts.map +1 -0
- package/dist/{utils → pipeline}/dumper.js +1 -1
- package/dist/pipeline/dumper.js.map +1 -0
- package/dist/pipeline/runner.js +1 -1
- package/dist/pipeline/runner.js.map +1 -1
- package/dist/pipeline/stages/audioProcessor.d.ts +0 -1
- package/dist/pipeline/stages/audioProcessor.d.ts.map +1 -1
- package/dist/pipeline/stages/audioProcessor.js +1 -1
- package/dist/pipeline/stages/audioProcessor.js.map +1 -1
- package/dist/pipeline/stages/clipExporter.d.ts +0 -1
- package/dist/pipeline/stages/clipExporter.d.ts.map +1 -1
- package/dist/pipeline/stages/clipExporter.js.map +1 -1
- package/dist/pipeline/stages/segmentAnalyzer.d.ts +0 -1
- package/dist/pipeline/stages/segmentAnalyzer.d.ts.map +1 -1
- package/dist/pipeline/stages/segmentAnalyzer.js.map +1 -1
- package/dist/pipeline/stages/segmentSelector.d.ts +0 -1
- package/dist/pipeline/stages/segmentSelector.d.ts.map +1 -1
- package/dist/pipeline/stages/segmentSelector.js +1 -2
- package/dist/pipeline/stages/segmentSelector.js.map +1 -1
- package/dist/pipeline/stages/videoResolver.d.ts +0 -1
- package/dist/pipeline/stages/videoResolver.d.ts.map +1 -1
- package/dist/pipeline/stages/videoResolver.js.map +1 -1
- package/dist/services/audioAnalyzers/index.d.ts +0 -4
- package/dist/services/audioAnalyzers/index.d.ts.map +1 -1
- package/dist/services/audioAnalyzers/index.js +0 -3
- package/dist/services/audioAnalyzers/index.js.map +1 -1
- package/dist/services/audioAnalyzers/whisper.d.ts +0 -1
- package/dist/services/audioAnalyzers/whisper.d.ts.map +1 -1
- package/dist/services/audioAnalyzers/whisper.js +1 -21
- package/dist/services/audioAnalyzers/whisper.js.map +1 -1
- package/dist/services/audioAnalyzers/yamnet.js +1 -1
- package/dist/services/audioAnalyzers/yamnet.js.map +1 -1
- package/dist/services/audioDownloader/index.d.ts.map +1 -1
- package/dist/services/audioDownloader/index.js +3 -14
- package/dist/services/audioDownloader/index.js.map +1 -1
- package/dist/services/audioDownloader/sliceAudio.d.ts.map +1 -0
- package/dist/{utils → services/audioDownloader}/sliceAudio.js +1 -1
- package/dist/services/audioDownloader/sliceAudio.js.map +1 -0
- package/dist/services/clipGenerator/index.js +0 -16
- package/dist/services/clipGenerator/index.js.map +1 -1
- package/dist/services/segmentRanker/index.d.ts +2 -1
- package/dist/services/segmentRanker/index.d.ts.map +1 -1
- package/dist/services/segmentRanker/index.js +36 -0
- package/dist/services/segmentRanker/index.js.map +1 -1
- package/dist/services/transcriptAnalyzers/index.d.ts +0 -4
- package/dist/services/transcriptAnalyzers/index.d.ts.map +1 -1
- package/dist/services/transcriptAnalyzers/index.js +0 -3
- package/dist/services/transcriptAnalyzers/index.js.map +1 -1
- package/dist/services/transcriptAnalyzers/whisper.js +1 -1
- package/dist/services/transcriptAnalyzers/whisper.js.map +1 -1
- package/dist/services/transcriptAnalyzers/ytdlp.d.ts +11 -0
- package/dist/services/transcriptAnalyzers/ytdlp.d.ts.map +1 -1
- package/dist/services/transcriptAnalyzers/ytdlp.js +120 -1
- package/dist/services/transcriptAnalyzers/ytdlp.js.map +1 -1
- package/dist/services/videoDownloader/index.d.ts.map +1 -1
- package/dist/services/videoDownloader/index.js +4 -19
- package/dist/services/videoDownloader/index.js.map +1 -1
- package/dist/types/analyzer.d.ts +2 -1
- package/dist/types/analyzer.d.ts.map +1 -1
- package/dist/types/config.d.ts +0 -3
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/downloader.d.ts.map +1 -1
- package/dist/types/pipeline.d.ts +3 -1
- package/dist/types/pipeline.d.ts.map +1 -1
- package/dist/utils/chunker.d.ts +0 -1
- package/dist/utils/chunker.d.ts.map +1 -1
- package/dist/utils/chunker.js.map +1 -1
- package/dist/utils/format.d.ts +6 -0
- package/dist/utils/format.d.ts.map +1 -1
- package/dist/utils/format.js +20 -0
- package/dist/utils/format.js.map +1 -1
- package/dist/utils/logger.d.ts +1 -0
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +10 -0
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/pythonBin.d.ts +2 -0
- package/dist/utils/pythonBin.d.ts.map +1 -0
- package/dist/utils/pythonBin.js +24 -0
- package/dist/utils/pythonBin.js.map +1 -0
- package/package.json +1 -1
- package/dist/services/signalMerger/index.d.ts +0 -5
- package/dist/services/signalMerger/index.d.ts.map +0 -1
- package/dist/services/signalMerger/index.js +0 -37
- package/dist/services/signalMerger/index.js.map +0 -1
- package/dist/services/transcriptFetcher/index.d.ts +0 -26
- package/dist/services/transcriptFetcher/index.d.ts.map +0 -1
- package/dist/services/transcriptFetcher/index.js +0 -121
- package/dist/services/transcriptFetcher/index.js.map +0 -1
- package/dist/utils/dumper.d.ts.map +0 -1
- package/dist/utils/dumper.js.map +0 -1
- package/dist/utils/redactConfig.d.ts +0 -7
- package/dist/utils/redactConfig.d.ts.map +0 -1
- package/dist/utils/redactConfig.js +0 -21
- package/dist/utils/redactConfig.js.map +0 -1
- package/dist/utils/sliceAudio.d.ts.map +0 -1
- package/dist/utils/sliceAudio.js.map +0 -1
- /package/dist/{utils → pipeline}/dumper.d.ts +0 -0
- /package/dist/{utils → services/audioDownloader}/sliceAudio.d.ts +0 -0
|
@@ -16,21 +16,6 @@ function formatTimestamp(seconds) {
|
|
|
16
16
|
const ms = Math.round((s - sInt) * 1000);
|
|
17
17
|
return `${String(h).padStart(2, '0')}:${String(m).padStart(2, '0')}:${String(sInt).padStart(2, '0')}.${String(ms).padStart(3, '0')}`;
|
|
18
18
|
}
|
|
19
|
-
/**
|
|
20
|
-
* Displays progress from yt-dlp stdout/stderr.
|
|
21
|
-
*/
|
|
22
|
-
function displayProgress(stream) {
|
|
23
|
-
return (data) => {
|
|
24
|
-
const text = String(data);
|
|
25
|
-
const lines = text.split('\n').filter((line) => line.trim());
|
|
26
|
-
for (const line of lines) {
|
|
27
|
-
const progressMatch = line.match(/\[download\]\s+(\d+\.?\d*%)/);
|
|
28
|
-
if (progressMatch) {
|
|
29
|
-
process.stdout.write(`\r${progressMatch[0]}`);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
19
|
/**
|
|
35
20
|
* Downloads a YouTube video using yt-dlp and returns the local file path.
|
|
36
21
|
*
|
|
@@ -75,8 +60,8 @@ export async function downloadFullVideo(videoId, customPath) {
|
|
|
75
60
|
args.splice(0, 0, '--cookies', config.YT_DLP_COOKIES_FILE);
|
|
76
61
|
}
|
|
77
62
|
const subprocess = execa('yt-dlp', args);
|
|
78
|
-
subprocess.stdout?.on('data',
|
|
79
|
-
subprocess.stderr?.on('data',
|
|
63
|
+
subprocess.stdout?.on('data', log.progress);
|
|
64
|
+
subprocess.stderr?.on('data', log.progress);
|
|
80
65
|
await subprocess;
|
|
81
66
|
process.stdout.write('\n');
|
|
82
67
|
}
|
|
@@ -141,8 +126,8 @@ async function downloadSegment(videoId, segment, index, customPath) {
|
|
|
141
126
|
args.splice(0, 0, '--cookies', config.YT_DLP_COOKIES_FILE);
|
|
142
127
|
}
|
|
143
128
|
const subprocess = execa('yt-dlp', args);
|
|
144
|
-
subprocess.stdout?.on('data',
|
|
145
|
-
subprocess.stderr?.on('data',
|
|
129
|
+
subprocess.stdout?.on('data', log.progress);
|
|
130
|
+
subprocess.stderr?.on('data', log.progress);
|
|
146
131
|
await subprocess;
|
|
147
132
|
process.stdout.write('\n');
|
|
148
133
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/videoDownloader/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,MAAM,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAG5C;;;GAGG;AACH,SAAS,eAAe,CAAC,OAAe;IACtC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IACrC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAC5C,MAAM,CAAC,GAAG,OAAO,GAAG,EAAE,CAAC;IACvB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3B,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;IACzC,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;AACvI,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/videoDownloader/index.ts"],"names":[],"mappings":"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"}
|
package/dist/types/analyzer.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type { TranscriptLine, MicroBlock, LLMChunk
|
|
1
|
+
import type { TranscriptLine, MicroBlock, LLMChunk } from './transcript.js';
|
|
2
|
+
import type { ChunkEvaluation } from './segment.js';
|
|
2
3
|
export interface LLMAnalyzerResult {
|
|
3
4
|
lines: TranscriptLine[];
|
|
4
5
|
microBlocks: MicroBlock[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyzer.d.ts","sourceRoot":"","sources":["../../src/types/analyzer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"analyzer.d.ts","sourceRoot":"","sources":["../../src/types/analyzer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,MAAM,EAAE,QAAQ,EAAE,CAAC;IACnB,UAAU,EAAE,eAAe,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,EAAE,OAAO,YAAY,EAAE,UAAU,EAAE,CAAC;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,MAAM,EAAE,QAAQ,EAAE,CAAC;CACpB"}
|
package/dist/types/config.d.ts
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
declare const LLM_PROVIDERS: readonly ["openai", "anthropic", "google", "xai", "mistral", "groq", "zai", "openrouter", "custom"];
|
|
3
|
-
export type LLMProvider = (typeof LLM_PROVIDERS)[number];
|
|
4
2
|
export declare const ConfigSchema: z.ZodObject<{
|
|
5
3
|
LLM_PROVIDER: z.ZodDefault<z.ZodEnum<{
|
|
6
4
|
openai: "openai";
|
|
@@ -86,5 +84,4 @@ export declare const ConfigSchema: z.ZodObject<{
|
|
|
86
84
|
YT_DLP_COOKIES_FILE: z.ZodOptional<z.ZodString>;
|
|
87
85
|
}, z.core.$strip>;
|
|
88
86
|
export type Config = z.infer<typeof ConfigSchema>;
|
|
89
|
-
export {};
|
|
90
87
|
//# sourceMappingURL=config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA4BxB,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAwHrB,CAAC;AAEL,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"downloader.d.ts","sourceRoot":"","sources":["../../src/types/downloader.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"downloader.d.ts","sourceRoot":"","sources":["../../src/types/downloader.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,UAAU,CAAC;AAE9C,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,KAAK,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,MAAM,cAAc,GAAG,iBAAiB,GAAG,sBAAsB,CAAC"}
|
package/dist/types/pipeline.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import type { VideoMetadata
|
|
1
|
+
import type { VideoMetadata } from './video.js';
|
|
2
|
+
import type { TranscriptLine, MicroBlock, LLMChunk } from './transcript.js';
|
|
3
|
+
import type { ChunkEvaluation } from './segment.js';
|
|
2
4
|
/** A half-open time window [start, end) in seconds. Returned by `buildWindows`. */
|
|
3
5
|
export interface ChunkWindow {
|
|
4
6
|
/** Start of the window in seconds (inclusive). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/types/pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/types/pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,mFAAmF;AACnF,MAAM,WAAW,WAAW;IAC1B,kDAAkD;IAClD,KAAK,EAAE,MAAM,CAAC;IACd,4DAA4D;IAC5D,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,aAAa,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,kFAAkF;IAClF,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,MAAM,EAAE,QAAQ,EAAE,CAAC;IACnB,UAAU,EAAE,eAAe,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,gBAAgB;IAC/B,+EAA+E;IAC/E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;OAKG;IACH,gBAAgB,EAAE,KAAK,GAAG,MAAM,GAAG,SAAS,CAAC;IAC7C,4FAA4F;IAC5F,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
|
package/dist/utils/chunker.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunker.d.ts","sourceRoot":"","sources":["../../src/utils/chunker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD
|
|
1
|
+
{"version":3,"file":"chunker.d.ts","sourceRoot":"","sources":["../../src/utils/chunker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,YAAY,CAC1B,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,UAAU,GAAE,MAAU,GACrB,WAAW,EAAE,CAgBf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunker.js","sourceRoot":"","sources":["../../src/utils/chunker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"chunker.js","sourceRoot":"","sources":["../../src/utils/chunker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,YAAY,CAC1B,aAAqB,EACrB,SAAiB,EACjB,aAAqB,CAAC;IAEtB,IAAI,aAAa,IAAI,CAAC,IAAI,SAAS,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IACpD,IAAI,UAAU,GAAG,CAAC;QAAE,UAAU,GAAG,CAAC,CAAC;IACnC,IAAI,UAAU,IAAI,SAAS;QAAE,UAAU,GAAG,CAAC,CAAC,CAAC,8BAA8B;IAE3E,MAAM,IAAI,GAAG,SAAS,GAAG,UAAU,CAAC;IACpC,MAAM,OAAO,GAAkB,EAAE,CAAC;IAElC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,aAAa,EAAE,KAAK,IAAI,IAAI,EAAE,CAAC;QACzD,OAAO,CAAC,IAAI,CAAC;YACX,KAAK;YACL,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,SAAS,EAAE,aAAa,CAAC;SAChD,CAAC,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
package/dist/utils/format.d.ts
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
import type { Config } from '../types/config.js';
|
|
2
|
+
/**
|
|
3
|
+
* Formats the resolved config as a single-line key=value string,
|
|
4
|
+
* omitting all API key fields and any undefined optional values.
|
|
5
|
+
*/
|
|
6
|
+
export declare function formatConfig(cfg: Config): string;
|
|
1
7
|
/**
|
|
2
8
|
* Converts a duration in seconds to HH:MM:SS string.
|
|
3
9
|
* e.g. 3723 → "01:02:03"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/utils/format.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAKrD"}
|
|
1
|
+
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/utils/format.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAYjD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAMhD;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAKrD"}
|
package/dist/utils/format.js
CHANGED
|
@@ -1,3 +1,23 @@
|
|
|
1
|
+
const SENSITIVE_KEYS = new Set([
|
|
2
|
+
'OPENAI_API_KEY',
|
|
3
|
+
'ANTHROPIC_API_KEY',
|
|
4
|
+
'GOOGLE_GENERATIVE_AI_API_KEY',
|
|
5
|
+
'XAI_API_KEY',
|
|
6
|
+
'MISTRAL_API_KEY',
|
|
7
|
+
'GROQ_API_KEY',
|
|
8
|
+
'ZAI_API_KEY',
|
|
9
|
+
]);
|
|
10
|
+
/**
|
|
11
|
+
* Formats the resolved config as a single-line key=value string,
|
|
12
|
+
* omitting all API key fields and any undefined optional values.
|
|
13
|
+
*/
|
|
14
|
+
export function formatConfig(cfg) {
|
|
15
|
+
return Object.entries(cfg)
|
|
16
|
+
.filter(([k]) => !SENSITIVE_KEYS.has(k))
|
|
17
|
+
.filter(([, v]) => v !== undefined)
|
|
18
|
+
.map(([k, v]) => `${k}=${String(v)}`)
|
|
19
|
+
.join(' ');
|
|
20
|
+
}
|
|
1
21
|
/**
|
|
2
22
|
* Converts a duration in seconds to HH:MM:SS string.
|
|
3
23
|
* e.g. 3723 → "01:02:03"
|
package/dist/utils/format.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/utils/format.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/utils/format.ts"],"names":[],"mappings":"AAEA,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC;IAC7B,gBAAgB;IAChB,mBAAmB;IACnB,8BAA8B;IAC9B,aAAa;IACb,iBAAiB;IACjB,cAAc;IACd,aAAa;CACd,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,OAAQ,MAAM,CAAC,OAAO,CAAC,GAAG,CAAyB;SAChD,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SACvC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC;SAClC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;SACpC,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,OAAe;IAC3C,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IACrC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAC5C,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;IACnC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACpE,CAAC"}
|
package/dist/utils/logger.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,GAAG;gBACF,MAAM,KAAG,IAAI;gBAGb,MAAM,KAAG,IAAI;iBAGZ,MAAM,KAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,GAAG;gBACF,MAAM,KAAG,IAAI;gBAGb,MAAM,KAAG,IAAI;iBAGZ,MAAM,KAAG,IAAI;qBAGT,MAAM,GAAG,MAAM,KAAG,IAAI;CAWxC,CAAC"}
|
package/dist/utils/logger.js
CHANGED
|
@@ -13,5 +13,15 @@ export const log = {
|
|
|
13
13
|
error: (msg) => {
|
|
14
14
|
console.error(`${LEVELS.error} ${msg}`);
|
|
15
15
|
},
|
|
16
|
+
progress: (data) => {
|
|
17
|
+
const text = String(data);
|
|
18
|
+
const lines = text.split('\n').filter((line) => line.trim());
|
|
19
|
+
for (const line of lines) {
|
|
20
|
+
const progressMatch = line.match(/\[download\]\s+(\d+\.?\d*%)/);
|
|
21
|
+
if (progressMatch) {
|
|
22
|
+
process.stdout.write(`\r${progressMatch[0]}`);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
},
|
|
16
26
|
};
|
|
17
27
|
//# sourceMappingURL=logger.js.map
|
package/dist/utils/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,GAAG;IACb,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,SAAS;CACR,CAAC;AAEX,MAAM,CAAC,MAAM,GAAG,GAAG;IACjB,IAAI,EAAE,CAAC,GAAW,EAAQ,EAAE;QAC1B,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC;IACvC,CAAC;IACD,IAAI,EAAE,CAAC,GAAW,EAAQ,EAAE;QAC1B,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC;IACxC,CAAC;IACD,KAAK,EAAE,CAAC,GAAW,EAAQ,EAAE;QAC3B,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,IAAI,GAAG,EAAE,CAAC,CAAC;IAC1C,CAAC;CACF,CAAC"}
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,GAAG;IACb,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,SAAS;CACR,CAAC;AAEX,MAAM,CAAC,MAAM,GAAG,GAAG;IACjB,IAAI,EAAE,CAAC,GAAW,EAAQ,EAAE;QAC1B,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC;IACvC,CAAC;IACD,IAAI,EAAE,CAAC,GAAW,EAAQ,EAAE;QAC1B,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC;IACxC,CAAC;IACD,KAAK,EAAE,CAAC,GAAW,EAAQ,EAAE;QAC3B,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,IAAI,GAAG,EAAE,CAAC,CAAC;IAC1C,CAAC;IACD,QAAQ,EAAE,CAAC,IAAqB,EAAQ,EAAE;QACxC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAE7D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;YAChE,IAAI,aAAa,EAAE,CAAC;gBAClB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;IACH,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pythonBin.d.ts","sourceRoot":"","sources":["../../src/utils/pythonBin.ts"],"names":[],"mappings":"AAUA,wBAAsB,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,CAgBpD"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { execa } from 'execa';
|
|
2
|
+
import { log } from './logger.js';
|
|
3
|
+
/**
|
|
4
|
+
* Resolves the Python interpreter binary, caching the result after the first
|
|
5
|
+
* successful lookup. Shared by both Python-based analyzers (Whisper, YAMNet)
|
|
6
|
+
* and the Whisper transcript analyzer.
|
|
7
|
+
*/
|
|
8
|
+
let _pythonBin = null;
|
|
9
|
+
export async function getPythonBin() {
|
|
10
|
+
if (_pythonBin)
|
|
11
|
+
return _pythonBin;
|
|
12
|
+
for (const bin of ['python3', 'python']) {
|
|
13
|
+
try {
|
|
14
|
+
await execa(bin, ['--version']);
|
|
15
|
+
_pythonBin = bin;
|
|
16
|
+
return bin;
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
log.warn(`${bin} not found, trying next binary...`);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
throw new Error('No Python interpreter found (tried python3, python). Install Python 3 to use YAMNet or Whisper.');
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=pythonBin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pythonBin.js","sourceRoot":"","sources":["../../src/utils/pythonBin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAElC;;;;GAIG;AACH,IAAI,UAAU,GAAkB,IAAI,CAAC;AAErC,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,IAAI,UAAU;QAAE,OAAO,UAAU,CAAC;IAElC,KAAK,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC;QACxC,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;YAChC,UAAU,GAAG,GAAG,CAAC;YACjB,OAAO,GAAG,CAAC;QACb,CAAC;QAAC,MAAM,CAAC;YACP,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,mCAAmC,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CACb,iGAAiG,CAClG,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import type { MergedCandidate } from '../../types/index.js';
|
|
2
|
-
import type { ChunkEvaluation } from '../../types/index.js';
|
|
3
|
-
import type { AudioEvent } from '../../types/index.js';
|
|
4
|
-
export declare function mergeSignals(llmSegments: ChunkEvaluation[], audioEvents: AudioEvent[], boostWindow?: number, scoreBoost?: number, preRoll?: number, postRoll?: number): MergedCandidate[];
|
|
5
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/signalMerger/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAGvD,wBAAgB,YAAY,CAC1B,WAAW,EAAE,eAAe,EAAE,EAC9B,WAAW,EAAE,UAAU,EAAE,EACzB,WAAW,CAAC,EAAE,MAAM,EACpB,UAAU,CAAC,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,MAAM,GAChB,eAAe,EAAE,CAwCnB"}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { config } from '../../config/index.js';
|
|
2
|
-
export function mergeSignals(llmSegments, audioEvents, boostWindow, scoreBoost, preRoll, postRoll) {
|
|
3
|
-
const candidates = [];
|
|
4
|
-
const windowSec = boostWindow ?? config.AUDIO_LLM_BOOST_WINDOW;
|
|
5
|
-
const boost = scoreBoost ?? config.AUDIO_LLM_SCORE_BOOST;
|
|
6
|
-
const pre = preRoll ?? config.AUDIO_CLIP_PRE_ROLL;
|
|
7
|
-
const post = postRoll ?? config.AUDIO_CLIP_POST_ROLL;
|
|
8
|
-
const successfulSegments = llmSegments.filter((s) => s.status === 'success');
|
|
9
|
-
for (const seg of successfulSegments) {
|
|
10
|
-
if (!seg.interesting)
|
|
11
|
-
continue;
|
|
12
|
-
const nearby = audioEvents.filter((e) => Math.abs(e.time - seg.clip_start) < windowSec);
|
|
13
|
-
candidates.push({
|
|
14
|
-
start: seg.clip_start,
|
|
15
|
-
end: seg.clip_end,
|
|
16
|
-
score: Math.min(10, seg.score + (nearby.length > 0 ? boost : 0)),
|
|
17
|
-
source: nearby.length > 0 ? 'both' : 'transcript',
|
|
18
|
-
reason: seg.reason,
|
|
19
|
-
audio_event: nearby.length > 0 ? nearby[0].event : undefined,
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
for (const evt of audioEvents) {
|
|
23
|
-
const hasLLM = successfulSegments.some((s) => Math.abs(s.clip_start - evt.time) < windowSec);
|
|
24
|
-
if (!hasLLM) {
|
|
25
|
-
candidates.push({
|
|
26
|
-
start: Math.max(0, evt.time - pre),
|
|
27
|
-
end: evt.time + post,
|
|
28
|
-
score: Math.round(evt.confidence * 10),
|
|
29
|
-
source: 'audio',
|
|
30
|
-
reason: `Audio event: ${evt.event} (${(evt.confidence * 100).toFixed(0)}% confidence)`,
|
|
31
|
-
audio_event: evt.event,
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
return candidates;
|
|
36
|
-
}
|
|
37
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/signalMerger/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,MAAM,UAAU,YAAY,CAC1B,WAA8B,EAC9B,WAAyB,EACzB,WAAoB,EACpB,UAAmB,EACnB,OAAgB,EAChB,QAAiB;IAEjB,MAAM,UAAU,GAAsB,EAAE,CAAC;IACzC,MAAM,SAAS,GAAG,WAAW,IAAI,MAAM,CAAC,sBAAsB,CAAC;IAC/D,MAAM,KAAK,GAAG,UAAU,IAAI,MAAM,CAAC,qBAAqB,CAAC;IACzD,MAAM,GAAG,GAAG,OAAO,IAAI,MAAM,CAAC,mBAAmB,CAAC;IAClD,MAAM,IAAI,GAAG,QAAQ,IAAI,MAAM,CAAC,oBAAoB,CAAC;IAErD,MAAM,kBAAkB,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;IAE7E,KAAK,MAAM,GAAG,IAAI,kBAAkB,EAAE,CAAC;QACrC,IAAI,CAAC,GAAG,CAAC,WAAW;YAAE,SAAS;QAE/B,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,SAAS,CAAC,CAAC;QAExF,UAAU,CAAC,IAAI,CAAC;YACd,KAAK,EAAE,GAAG,CAAC,UAAU;YACrB,GAAG,EAAE,GAAG,CAAC,QAAQ;YACjB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAChE,MAAM,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY;YACjD,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,WAAW,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;SAC7D,CAAC,CAAC;IACL,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;QAE7F,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,UAAU,CAAC,IAAI,CAAC;gBACd,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC;gBAClC,GAAG,EAAE,GAAG,CAAC,IAAI,GAAG,IAAI;gBACpB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,GAAG,EAAE,CAAC;gBACtC,MAAM,EAAE,OAAO;gBACf,MAAM,EAAE,gBAAgB,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;gBACtF,WAAW,EAAE,GAAG,CAAC,KAAK;aACvB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC"}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import type { TranscriptLine } from '../../types/index.js';
|
|
2
|
-
/**
|
|
3
|
-
* Parses a WebVTT string into TranscriptLine[].
|
|
4
|
-
*
|
|
5
|
-
* Handles:
|
|
6
|
-
* - `HH:MM:SS.mmm --> HH:MM:SS.mmm` timestamp lines
|
|
7
|
-
* - `<MM:SS.mmm><c>text</c>` inline cue tags (stripped)
|
|
8
|
-
* - Duplicate / empty cues (skipped)
|
|
9
|
-
*
|
|
10
|
-
* Exported for unit testing.
|
|
11
|
-
*/
|
|
12
|
-
export declare function parseVtt(vttContent: string): TranscriptLine[];
|
|
13
|
-
/**
|
|
14
|
-
* Fetches the transcript for a given YouTube video ID using yt-dlp
|
|
15
|
-
* auto-generated subtitles (VTT format).
|
|
16
|
-
*
|
|
17
|
-
* The VTT file is written to a temp directory, parsed into TranscriptLine[],
|
|
18
|
-
* then cleaned up. Cookie config (YT_DLP_COOKIES_FROM_BROWSER /
|
|
19
|
-
* YT_DLP_COOKIES_FILE) is forwarded to yt-dlp automatically.
|
|
20
|
-
*
|
|
21
|
-
* @throws {Error} with the yt-dlp stderr if the command fails
|
|
22
|
-
* @throws {Error} if no subtitle file is produced
|
|
23
|
-
* @throws {Error} if the subtitle file contains no parseable cues
|
|
24
|
-
*/
|
|
25
|
-
export declare function fetchTranscript(videoId: string): Promise<TranscriptLine[]>;
|
|
26
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/transcriptFetcher/index.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,cAAc,EAAE,CA+D7D;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAmDhF"}
|
|
@@ -1,121 +0,0 @@
|
|
|
1
|
-
import { execa } from 'execa';
|
|
2
|
-
import fs from 'node:fs/promises';
|
|
3
|
-
import os from 'node:os';
|
|
4
|
-
import path from 'node:path';
|
|
5
|
-
import { log } from '../../utils/logger.js';
|
|
6
|
-
import { config } from '../../config/index.js';
|
|
7
|
-
/**
|
|
8
|
-
* Parses a WebVTT string into TranscriptLine[].
|
|
9
|
-
*
|
|
10
|
-
* Handles:
|
|
11
|
-
* - `HH:MM:SS.mmm --> HH:MM:SS.mmm` timestamp lines
|
|
12
|
-
* - `<MM:SS.mmm><c>text</c>` inline cue tags (stripped)
|
|
13
|
-
* - Duplicate / empty cues (skipped)
|
|
14
|
-
*
|
|
15
|
-
* Exported for unit testing.
|
|
16
|
-
*/
|
|
17
|
-
export function parseVtt(vttContent) {
|
|
18
|
-
const lines = vttContent.split(/\r?\n/);
|
|
19
|
-
const result = [];
|
|
20
|
-
/** Regex to match HH:MM:SS.mmm --> HH:MM:SS.mmm timestamp lines */
|
|
21
|
-
const TIMESTAMP_RE = /^(\d{2}):(\d{2}):(\d{2})[.,](\d{3})\s+-->\s+(\d{2}):(\d{2}):(\d{2})[.,](\d{3})/;
|
|
22
|
-
let i = 0;
|
|
23
|
-
while (i < lines.length) {
|
|
24
|
-
const line = lines[i].trim();
|
|
25
|
-
const match = TIMESTAMP_RE.exec(line);
|
|
26
|
-
if (match) {
|
|
27
|
-
const startSec = parseInt(match[1], 10) * 3600 +
|
|
28
|
-
parseInt(match[2], 10) * 60 +
|
|
29
|
-
parseInt(match[3], 10) +
|
|
30
|
-
parseInt(match[4], 10) / 1000;
|
|
31
|
-
const endSec = parseInt(match[5], 10) * 3600 +
|
|
32
|
-
parseInt(match[6], 10) * 60 +
|
|
33
|
-
parseInt(match[7], 10) +
|
|
34
|
-
parseInt(match[8], 10) / 1000;
|
|
35
|
-
i++;
|
|
36
|
-
const textLines = [];
|
|
37
|
-
while (i < lines.length && lines[i].trim() !== '') {
|
|
38
|
-
textLines.push(lines[i].trim());
|
|
39
|
-
i++;
|
|
40
|
-
}
|
|
41
|
-
const rawText = textLines.join(' ');
|
|
42
|
-
const text = rawText
|
|
43
|
-
.replace(/<[^>]+>/g, '')
|
|
44
|
-
.replace(/&/g, '&')
|
|
45
|
-
.replace(/</g, '<')
|
|
46
|
-
.replace(/>/g, '>')
|
|
47
|
-
.replace(/ /g, ' ')
|
|
48
|
-
.replace(/\s+/g, ' ')
|
|
49
|
-
.trim();
|
|
50
|
-
if (text.length === 0) {
|
|
51
|
-
continue;
|
|
52
|
-
}
|
|
53
|
-
const duration = Math.max(0, endSec - startSec);
|
|
54
|
-
/** Skip duplicate cues - YouTube VTT often repeats same line as text scrolls */
|
|
55
|
-
if (result.length > 0 && result[result.length - 1].text === text) {
|
|
56
|
-
continue;
|
|
57
|
-
}
|
|
58
|
-
result.push({ text, start: startSec, duration });
|
|
59
|
-
continue;
|
|
60
|
-
}
|
|
61
|
-
i++;
|
|
62
|
-
}
|
|
63
|
-
return result;
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Fetches the transcript for a given YouTube video ID using yt-dlp
|
|
67
|
-
* auto-generated subtitles (VTT format).
|
|
68
|
-
*
|
|
69
|
-
* The VTT file is written to a temp directory, parsed into TranscriptLine[],
|
|
70
|
-
* then cleaned up. Cookie config (YT_DLP_COOKIES_FROM_BROWSER /
|
|
71
|
-
* YT_DLP_COOKIES_FILE) is forwarded to yt-dlp automatically.
|
|
72
|
-
*
|
|
73
|
-
* @throws {Error} with the yt-dlp stderr if the command fails
|
|
74
|
-
* @throws {Error} if no subtitle file is produced
|
|
75
|
-
* @throws {Error} if the subtitle file contains no parseable cues
|
|
76
|
-
*/
|
|
77
|
-
export async function fetchTranscript(videoId) {
|
|
78
|
-
const tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), 'vc-vtt-'));
|
|
79
|
-
try {
|
|
80
|
-
const args = [
|
|
81
|
-
'--write-auto-sub',
|
|
82
|
-
'--sub-format',
|
|
83
|
-
'vtt',
|
|
84
|
-
'--sub-lang',
|
|
85
|
-
'en.*',
|
|
86
|
-
'--skip-download',
|
|
87
|
-
'--output',
|
|
88
|
-
path.join(tmpDir, '%(id)s.%(ext)s'),
|
|
89
|
-
`https://www.youtube.com/watch?v=${videoId}`,
|
|
90
|
-
];
|
|
91
|
-
if (config.YT_DLP_COOKIES_FROM_BROWSER) {
|
|
92
|
-
args.unshift('--cookies-from-browser', config.YT_DLP_COOKIES_FROM_BROWSER);
|
|
93
|
-
}
|
|
94
|
-
else if (config.YT_DLP_COOKIES_FILE) {
|
|
95
|
-
args.unshift('--cookies', config.YT_DLP_COOKIES_FILE);
|
|
96
|
-
}
|
|
97
|
-
try {
|
|
98
|
-
await execa('yt-dlp', args);
|
|
99
|
-
}
|
|
100
|
-
catch (err) {
|
|
101
|
-
const message = err instanceof Error ? err.message : String(err);
|
|
102
|
-
throw new Error(`yt-dlp failed to fetch subtitles for "${videoId}": ${message}`);
|
|
103
|
-
}
|
|
104
|
-
const files = await fs.readdir(tmpDir);
|
|
105
|
-
const vttFile = files.find((f) => f.endsWith('.vtt'));
|
|
106
|
-
if (!vttFile) {
|
|
107
|
-
throw new Error(`No subtitles found for "${videoId}". The video may not have auto-generated captions.`);
|
|
108
|
-
}
|
|
109
|
-
const content = await fs.readFile(path.join(tmpDir, vttFile), 'utf8');
|
|
110
|
-
const lines = parseVtt(content);
|
|
111
|
-
log.info(`Parsed ${lines.length} cues from subtitle file "${vttFile}".`);
|
|
112
|
-
if (lines.length === 0) {
|
|
113
|
-
throw new Error(`Subtitle file for "${videoId}" was empty or contained no parseable cues.`);
|
|
114
|
-
}
|
|
115
|
-
return lines;
|
|
116
|
-
}
|
|
117
|
-
finally {
|
|
118
|
-
await fs.rm(tmpDir, { recursive: true, force: true });
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/transcriptFetcher/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dumper.d.ts","sourceRoot":"","sources":["../../src/utils/dumper.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExE;;;GAGG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAY5F;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAYzF"}
|
package/dist/utils/dumper.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dumper.js","sourceRoot":"","sources":["../../src/utils/dumper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAGlC;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAAe,EAAE,KAAuB;IAC3E,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QACvD,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,OAAO,CAAC,CAAC;QACnD,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QACtE,GAAG,CAAC,IAAI,CAAC,wBAAwB,QAAQ,EAAE,CAAC,CAAC;IAC/C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,IAAI,CACN,iCAAiC,OAAO,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAChG,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAAe,EAAE,MAAsB;IACxE,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QACrD,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,OAAO,CAAC,CAAC;QACnD,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QACvE,GAAG,CAAC,IAAI,CAAC,sBAAsB,QAAQ,EAAE,CAAC,CAAC;IAC7C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,IAAI,CACN,+BAA+B,OAAO,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAC9F,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import type { Config } from '../types/config.js';
|
|
2
|
-
/**
|
|
3
|
-
* Formats the resolved config as a single-line key=value string,
|
|
4
|
-
* omitting all API key fields and any undefined optional values.
|
|
5
|
-
*/
|
|
6
|
-
export declare function formatConfig(cfg: Config): string;
|
|
7
|
-
//# sourceMappingURL=redactConfig.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"redactConfig.d.ts","sourceRoot":"","sources":["../../src/utils/redactConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAYjD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAMhD"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
const SENSITIVE_KEYS = new Set([
|
|
2
|
-
'OPENAI_API_KEY',
|
|
3
|
-
'ANTHROPIC_API_KEY',
|
|
4
|
-
'GOOGLE_GENERATIVE_AI_API_KEY',
|
|
5
|
-
'XAI_API_KEY',
|
|
6
|
-
'MISTRAL_API_KEY',
|
|
7
|
-
'GROQ_API_KEY',
|
|
8
|
-
'ZAI_API_KEY',
|
|
9
|
-
]);
|
|
10
|
-
/**
|
|
11
|
-
* Formats the resolved config as a single-line key=value string,
|
|
12
|
-
* omitting all API key fields and any undefined optional values.
|
|
13
|
-
*/
|
|
14
|
-
export function formatConfig(cfg) {
|
|
15
|
-
return Object.entries(cfg)
|
|
16
|
-
.filter(([k]) => !SENSITIVE_KEYS.has(k))
|
|
17
|
-
.filter(([, v]) => v !== undefined)
|
|
18
|
-
.map(([k, v]) => `${k}=${String(v)}`)
|
|
19
|
-
.join(' ');
|
|
20
|
-
}
|
|
21
|
-
//# sourceMappingURL=redactConfig.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"redactConfig.js","sourceRoot":"","sources":["../../src/utils/redactConfig.ts"],"names":[],"mappings":"AAEA,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC;IAC7B,gBAAgB;IAChB,mBAAmB;IACnB,8BAA8B;IAC9B,aAAa;IACb,iBAAiB;IACjB,cAAc;IACd,aAAa;CACd,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,OAAQ,MAAM,CAAC,OAAO,CAAC,GAAG,CAAyB;SAChD,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SACvC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC;SAClC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;SACpC,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sliceAudio.d.ts","sourceRoot":"","sources":["../../src/utils/sliceAudio.ts"],"names":[],"mappings":"AAWA,wBAAsB,UAAU,CAC9B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC,CAkBjB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sliceAudio.js","sourceRoot":"","sources":["../../src/utils/sliceAudio.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,MAAM,MAAM,eAAe,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;IACvB,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AAC3C,CAAC;AACD,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;IACxB,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,SAAiB,EACjB,QAAgB,EAChB,WAAmB,EACnB,SAAiB;IAEjB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IACnE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,QAAQ,UAAU,QAAQ,MAAM,CAAC,CAAC;IAE7E,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC1C,MAAM,CAAC,SAAS,CAAC;aACd,YAAY,CAAC,QAAQ,CAAC;aACtB,WAAW,CAAC,WAAW,CAAC;aACxB,cAAc,CAAC,KAAK,CAAC;aACrB,aAAa,CAAC,CAAC,CAAC;aAChB,MAAM,CAAC,KAAK,CAAC;aACb,MAAM,CAAC,UAAU,CAAC;aAClB,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;aAC1B,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;aACjC,GAAG,EAAE,CAAC;IACX,CAAC,CAAC,CAAC;IAEH,OAAO,UAAU,CAAC;AACpB,CAAC"}
|
|
File without changes
|
|
File without changes
|