@thunderkiller/video-clipper 1.5.3 → 1.5.5
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/cli.d.ts +5 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +1 -0
- package/dist/cli.js.map +1 -0
- package/dist/config/env.d.ts +49 -0
- package/dist/config/env.d.ts.map +1 -0
- package/dist/config/env.js +1 -0
- package/dist/config/env.js.map +1 -0
- package/dist/config/index.d.ts +3 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +1 -0
- package/dist/config/index.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/lib.d.ts +17 -0
- package/dist/lib.d.ts.map +1 -0
- package/dist/lib.js +17 -0
- package/dist/lib.js.map +1 -0
- package/dist/pipeline/runner.d.ts +23 -0
- package/dist/pipeline/runner.d.ts.map +1 -0
- package/dist/pipeline/runner.js +1 -0
- package/dist/pipeline/runner.js.map +1 -0
- package/dist/pipeline/stages/audioProcessor.d.ts +20 -0
- package/dist/pipeline/stages/audioProcessor.d.ts.map +1 -0
- package/dist/pipeline/stages/audioProcessor.js +1 -0
- package/dist/pipeline/stages/audioProcessor.js.map +1 -0
- package/dist/pipeline/stages/clipExporter.d.ts +15 -0
- package/dist/pipeline/stages/clipExporter.d.ts.map +1 -0
- package/dist/pipeline/stages/clipExporter.js +1 -0
- package/dist/pipeline/stages/clipExporter.js.map +1 -0
- package/dist/pipeline/stages/segmentAnalyzer.d.ts +27 -0
- package/dist/pipeline/stages/segmentAnalyzer.d.ts.map +1 -0
- package/dist/pipeline/stages/segmentAnalyzer.js +1 -0
- package/dist/pipeline/stages/segmentAnalyzer.js.map +1 -0
- package/dist/pipeline/stages/segmentSelector.d.ts +13 -0
- package/dist/pipeline/stages/segmentSelector.d.ts.map +1 -0
- package/dist/pipeline/stages/segmentSelector.js +1 -0
- package/dist/pipeline/stages/segmentSelector.js.map +1 -0
- package/dist/pipeline/stages/videoResolver.d.ts +12 -0
- package/dist/pipeline/stages/videoResolver.d.ts.map +1 -0
- package/dist/pipeline/stages/videoResolver.js +1 -0
- package/dist/pipeline/stages/videoResolver.js.map +1 -0
- package/dist/services/audioAnalyzers/base.d.ts +26 -0
- package/dist/services/audioAnalyzers/base.d.ts.map +1 -0
- package/dist/services/audioAnalyzers/base.js +1 -0
- package/dist/services/audioAnalyzers/base.js.map +1 -0
- package/dist/services/audioAnalyzers/factory.d.ts +23 -0
- package/dist/services/audioAnalyzers/factory.d.ts.map +1 -0
- package/dist/services/audioAnalyzers/factory.js +1 -0
- package/dist/services/audioAnalyzers/factory.js.map +1 -0
- package/dist/services/audioAnalyzers/gemini.d.ts +29 -0
- package/dist/services/audioAnalyzers/gemini.d.ts.map +1 -0
- package/dist/services/audioAnalyzers/gemini.js +1 -0
- package/dist/services/audioAnalyzers/gemini.js.map +1 -0
- package/dist/services/audioAnalyzers/index.d.ts +7 -0
- package/dist/services/audioAnalyzers/index.d.ts.map +1 -0
- package/dist/services/audioAnalyzers/index.js +1 -0
- package/dist/services/audioAnalyzers/index.js.map +1 -0
- package/dist/services/audioAnalyzers/whisper.d.ts +14 -0
- package/dist/services/audioAnalyzers/whisper.d.ts.map +1 -0
- package/dist/services/audioAnalyzers/whisper.js +3 -1
- package/dist/services/audioAnalyzers/whisper.js.map +1 -0
- package/dist/services/audioAnalyzers/yamnet.d.ts +13 -0
- package/dist/services/audioAnalyzers/yamnet.d.ts.map +1 -0
- package/dist/services/audioAnalyzers/yamnet.js +3 -1
- package/dist/services/audioAnalyzers/yamnet.js.map +1 -0
- package/dist/services/audioDownloader/index.d.ts +2 -0
- package/dist/services/audioDownloader/index.d.ts.map +1 -0
- package/dist/services/audioDownloader/index.js +1 -0
- package/dist/services/audioDownloader/index.js.map +1 -0
- package/dist/services/chunkBuilder/index.d.ts +20 -0
- package/dist/services/chunkBuilder/index.d.ts.map +1 -0
- package/dist/services/chunkBuilder/index.js +1 -0
- package/dist/services/chunkBuilder/index.js.map +1 -0
- package/dist/services/clipGenerator/index.d.ts +30 -0
- package/dist/services/clipGenerator/index.d.ts.map +1 -0
- package/dist/services/clipGenerator/index.js +1 -0
- package/dist/services/clipGenerator/index.js.map +1 -0
- package/dist/services/clipRefiner/index.d.ts +9 -0
- package/dist/services/clipRefiner/index.d.ts.map +1 -0
- package/dist/services/clipRefiner/index.js +1 -0
- package/dist/services/clipRefiner/index.js.map +1 -0
- package/dist/services/eventDetector/index.d.ts +28 -0
- package/dist/services/eventDetector/index.d.ts.map +1 -0
- package/dist/services/eventDetector/index.js +1 -0
- package/dist/services/eventDetector/index.js.map +1 -0
- package/dist/services/llmAnalyzer/LLMAnalyzer.d.ts +41 -0
- package/dist/services/llmAnalyzer/LLMAnalyzer.d.ts.map +1 -0
- package/dist/services/llmAnalyzer/LLMAnalyzer.js +1 -0
- package/dist/services/llmAnalyzer/LLMAnalyzer.js.map +1 -0
- package/dist/services/llmAnalyzer/index.d.ts +8 -0
- package/dist/services/llmAnalyzer/index.d.ts.map +1 -0
- package/dist/services/llmAnalyzer/index.js +1 -0
- package/dist/services/llmAnalyzer/index.js.map +1 -0
- package/dist/services/metadataExtractor/index.d.ts +12 -0
- package/dist/services/metadataExtractor/index.d.ts.map +1 -0
- package/dist/services/metadataExtractor/index.js +1 -0
- package/dist/services/metadataExtractor/index.js.map +1 -0
- package/dist/services/segmentRanker/index.d.ts +3 -0
- package/dist/services/segmentRanker/index.d.ts.map +1 -0
- package/dist/services/segmentRanker/index.js +1 -0
- package/dist/services/segmentRanker/index.js.map +1 -0
- package/dist/services/signalMerger/index.d.ts +5 -0
- package/dist/services/signalMerger/index.d.ts.map +1 -0
- package/dist/services/signalMerger/index.js +1 -0
- package/dist/services/signalMerger/index.js.map +1 -0
- package/dist/services/transcriptAnalyzers/base.d.ts +25 -0
- package/dist/services/transcriptAnalyzers/base.d.ts.map +1 -0
- package/dist/services/transcriptAnalyzers/base.js +1 -0
- package/dist/services/transcriptAnalyzers/base.js.map +1 -0
- package/dist/services/transcriptAnalyzers/factory.d.ts +21 -0
- package/dist/services/transcriptAnalyzers/factory.d.ts.map +1 -0
- package/dist/services/transcriptAnalyzers/factory.js +1 -0
- package/dist/services/transcriptAnalyzers/factory.js.map +1 -0
- package/dist/services/transcriptAnalyzers/gemini.d.ts +18 -0
- package/dist/services/transcriptAnalyzers/gemini.d.ts.map +1 -0
- package/dist/services/transcriptAnalyzers/gemini.js +1 -0
- package/dist/services/transcriptAnalyzers/gemini.js.map +1 -0
- package/dist/services/transcriptAnalyzers/index.d.ts +7 -0
- package/dist/services/transcriptAnalyzers/index.d.ts.map +1 -0
- package/dist/services/transcriptAnalyzers/index.js +1 -0
- package/dist/services/transcriptAnalyzers/index.js.map +1 -0
- package/dist/services/transcriptAnalyzers/whisper.d.ts +18 -0
- package/dist/services/transcriptAnalyzers/whisper.d.ts.map +1 -0
- package/dist/services/transcriptAnalyzers/whisper.js +3 -1
- package/dist/services/transcriptAnalyzers/whisper.js.map +1 -0
- package/dist/services/transcriptAnalyzers/ytdlp.d.ts +15 -0
- package/dist/services/transcriptAnalyzers/ytdlp.d.ts.map +1 -0
- package/dist/services/transcriptAnalyzers/ytdlp.js +1 -0
- package/dist/services/transcriptAnalyzers/ytdlp.js.map +1 -0
- package/dist/services/transcriptDetector/index.d.ts +53 -0
- package/dist/services/transcriptDetector/index.d.ts.map +1 -0
- package/dist/services/transcriptDetector/index.js +1 -0
- package/dist/services/transcriptDetector/index.js.map +1 -0
- package/dist/services/transcriptFetcher/index.d.ts +26 -0
- package/dist/services/transcriptFetcher/index.d.ts.map +1 -0
- package/dist/services/transcriptFetcher/index.js +1 -0
- package/dist/services/transcriptFetcher/index.js.map +1 -0
- package/dist/services/urlParser/index.d.ts +12 -0
- package/dist/services/urlParser/index.d.ts.map +1 -0
- package/dist/services/urlParser/index.js +1 -0
- package/dist/services/urlParser/index.js.map +1 -0
- package/dist/services/videoDownloader/index.d.ts +27 -0
- package/dist/services/videoDownloader/index.d.ts.map +1 -0
- package/dist/services/videoDownloader/index.js +1 -0
- package/dist/services/videoDownloader/index.js.map +1 -0
- package/dist/types/analyzer.d.ts +21 -0
- package/dist/types/analyzer.d.ts.map +1 -0
- package/dist/types/analyzer.js +1 -0
- package/dist/types/analyzer.js.map +1 -0
- package/dist/types/audio.d.ts +26 -0
- package/dist/types/audio.d.ts.map +1 -0
- package/dist/types/audio.js +1 -0
- package/dist/types/audio.js.map +1 -0
- package/dist/types/cache.d.ts +7 -0
- package/dist/types/cache.d.ts.map +1 -0
- package/dist/types/cache.js +1 -0
- package/dist/types/cache.js.map +1 -0
- package/dist/types/cli.d.ts +23 -0
- package/dist/types/cli.d.ts.map +1 -0
- package/dist/types/cli.js +1 -0
- package/dist/types/cli.js.map +1 -0
- package/dist/types/config.d.ts +90 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +1 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/downloader.d.ts +11 -0
- package/dist/types/downloader.d.ts.map +1 -0
- package/dist/types/downloader.js +1 -0
- package/dist/types/downloader.js.map +1 -0
- package/dist/types/factory.d.ts +3 -0
- package/dist/types/factory.d.ts.map +1 -0
- package/dist/types/factory.js +1 -0
- package/dist/types/factory.js.map +1 -0
- package/dist/types/index.d.ts +18 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +1 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/pipeline.d.ts +48 -0
- package/dist/types/pipeline.d.ts.map +1 -0
- package/dist/types/pipeline.js +1 -0
- package/dist/types/pipeline.js.map +1 -0
- package/dist/types/segment.d.ts +42 -0
- package/dist/types/segment.d.ts.map +1 -0
- package/dist/types/segment.js +1 -0
- package/dist/types/segment.js.map +1 -0
- package/dist/types/transcript.d.ts +20 -0
- package/dist/types/transcript.d.ts.map +1 -0
- package/dist/types/transcript.js +1 -0
- package/dist/types/transcript.js.map +1 -0
- package/dist/types/video.d.ts +44 -0
- package/dist/types/video.d.ts.map +1 -0
- package/dist/types/video.js +1 -0
- package/dist/types/video.js.map +1 -0
- package/dist/utils/cache.d.ts +34 -0
- package/dist/utils/cache.d.ts.map +1 -0
- package/dist/utils/cache.js +1 -0
- package/dist/utils/cache.js.map +1 -0
- package/dist/utils/chunker.d.ts +38 -0
- package/dist/utils/chunker.d.ts.map +1 -0
- package/dist/utils/chunker.js +1 -0
- package/dist/utils/chunker.js.map +1 -0
- package/dist/utils/dumper.d.ts +12 -0
- package/dist/utils/dumper.d.ts.map +1 -0
- package/dist/utils/dumper.js +1 -0
- package/dist/utils/dumper.js.map +1 -0
- package/dist/utils/format.d.ts +6 -0
- package/dist/utils/format.d.ts.map +1 -0
- package/dist/utils/format.js +1 -0
- package/dist/utils/format.js.map +1 -0
- package/dist/utils/logger.d.ts +6 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +1 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/modelFactory.d.ts +14 -0
- package/dist/utils/modelFactory.d.ts.map +1 -0
- package/dist/utils/modelFactory.js +1 -0
- package/dist/utils/modelFactory.js.map +1 -0
- package/dist/utils/paths.d.ts +16 -0
- package/dist/utils/paths.d.ts.map +1 -0
- package/dist/utils/paths.js +20 -0
- package/dist/utils/paths.js.map +1 -0
- package/dist/utils/redactConfig.d.ts +7 -0
- package/dist/utils/redactConfig.d.ts.map +1 -0
- package/dist/utils/redactConfig.js +1 -0
- package/dist/utils/redactConfig.js.map +1 -0
- package/dist/utils/sliceAudio.d.ts +2 -0
- package/dist/utils/sliceAudio.d.ts.map +1 -0
- package/dist/utils/sliceAudio.js +1 -0
- package/dist/utils/sliceAudio.js.map +1 -0
- package/package.json +26 -2
- package/requirements.txt +5 -0
- package/scripts/detect_events.py +81 -0
- package/scripts/detect_events_whisper.py +101 -0
- package/scripts/transcribe_whisper.py +70 -0
- package/.env.example +0 -130
- package/CHANGELOG.md +0 -102
- package/CONTRIBUTING.md +0 -100
- package/commitlint.config.js +0 -25
|
@@ -2,6 +2,7 @@ import { execa } from 'execa';
|
|
|
2
2
|
import { config } from '../../config/index.js';
|
|
3
3
|
import { log } from '../../utils/logger.js';
|
|
4
4
|
import { AudioAnalyzer } from './base.js';
|
|
5
|
+
import { scriptPath } from '../../utils/paths.js';
|
|
5
6
|
/**
|
|
6
7
|
* Resolves the Python interpreter binary, caching the result after the first
|
|
7
8
|
* successful lookup. Shared by both Python-based analyzers (Whisper, YAMNet).
|
|
@@ -35,7 +36,7 @@ export class WhisperAudioAnalyzer extends AudioAnalyzer {
|
|
|
35
36
|
let stdout;
|
|
36
37
|
try {
|
|
37
38
|
const result = await execa(python, [
|
|
38
|
-
'
|
|
39
|
+
scriptPath('detect_events_whisper.py'),
|
|
39
40
|
audioPath,
|
|
40
41
|
String(config.AUDIO_CONFIDENCE_THRESHOLD),
|
|
41
42
|
gameProfile,
|
|
@@ -60,3 +61,4 @@ export class WhisperAudioAnalyzer extends AudioAnalyzer {
|
|
|
60
61
|
}));
|
|
61
62
|
}
|
|
62
63
|
}
|
|
64
|
+
//# sourceMappingURL=whisper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"whisper.js","sourceRoot":"","sources":["../../../src/services/audioAnalyzers/whisper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAE5C,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD;;;GAGG;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,WAAW,GAAG,mCAAmC,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CACb,iGAAiG,CAClG,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,OAAO,oBAAqB,SAAQ,aAAa;IAC5C,MAAM,GAAG,SAAkB,CAAC;IAErC,KAAK,CAAC,MAAM,CACV,SAAiB,EACjB,WAAmB,EACnB,cAAsB,EACtB,iBAAyB;QAEzB,MAAM,MAAM,GAAG,MAAM,YAAY,EAAE,CAAC;QAEpC,IAAI,MAAc,CAAC;QACnB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,MAAM,EAAE;gBACjC,UAAU,CAAC,0BAA0B,CAAC;gBACtC,SAAS;gBACT,MAAM,CAAC,MAAM,CAAC,0BAA0B,CAAC;gBACzC,WAAW;gBACX,MAAM,CAAC,mBAAmB;aAC3B,CAAC,CAAC;YACH,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QACzB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAEjE,IAAI,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;gBACnF,MAAM,IAAI,KAAK,CACb,iEAAiE;oBAC/D,kFAAkF,CACrF,CAAC;YACJ,CAAC;YAED,MAAM,IAAI,KAAK,CAAC,6BAA6B,OAAO,EAAE,CAAC,CAAC;QAC1D,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAA+D,CAAC;QAEhG,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACxB,IAAI,EAAE,CAAC,CAAC,IAAI,GAAG,cAAc;YAC7B,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,UAAU,EAAE,CAAC,CAAC,UAAU;YACxB,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC,CAAC,CAAC;IACN,CAAC;CACF"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { AudioEvent } from '../../types/index.js';
|
|
2
|
+
import { AudioAnalyzer } from './base.js';
|
|
3
|
+
/**
|
|
4
|
+
* Uses YAMNet (TensorFlow Hub) via a Python script to classify audio frames
|
|
5
|
+
* against a fixed set of game-relevant sound classes (gunshot, explosion, etc.).
|
|
6
|
+
*
|
|
7
|
+
* Requires: pip install tensorflow-hub soundfile numpy
|
|
8
|
+
*/
|
|
9
|
+
export declare class YAMNetAudioAnalyzer extends AudioAnalyzer {
|
|
10
|
+
readonly source: "yamnet";
|
|
11
|
+
detect(audioPath: string, _gameProfile: string, chunkOffsetSec: number, _chunkDurationSec: number): Promise<AudioEvent[]>;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=yamnet.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"yamnet.d.ts","sourceRoot":"","sources":["../../../src/services/audioAnalyzers/yamnet.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAI1C;;;;;GAKG;AACH,qBAAa,mBAAoB,SAAQ,aAAa;IACpD,QAAQ,CAAC,MAAM,EAAG,QAAQ,CAAU;IAE9B,MAAM,CACV,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,cAAc,EAAE,MAAM,EACtB,iBAAiB,EAAE,MAAM,GACxB,OAAO,CAAC,UAAU,EAAE,CAAC;CAiCzB"}
|
|
@@ -2,6 +2,7 @@ import { execa } from 'execa';
|
|
|
2
2
|
import { config } from '../../config/index.js';
|
|
3
3
|
import { AudioAnalyzer } from './base.js';
|
|
4
4
|
import { getPythonBin } from './whisper.js';
|
|
5
|
+
import { scriptPath } from '../../utils/paths.js';
|
|
5
6
|
/**
|
|
6
7
|
* Uses YAMNet (TensorFlow Hub) via a Python script to classify audio frames
|
|
7
8
|
* against a fixed set of game-relevant sound classes (gunshot, explosion, etc.).
|
|
@@ -15,7 +16,7 @@ export class YAMNetAudioAnalyzer extends AudioAnalyzer {
|
|
|
15
16
|
let stdout;
|
|
16
17
|
try {
|
|
17
18
|
const result = await execa(python, [
|
|
18
|
-
'
|
|
19
|
+
scriptPath('detect_events.py'),
|
|
19
20
|
audioPath,
|
|
20
21
|
String(config.AUDIO_CONFIDENCE_THRESHOLD),
|
|
21
22
|
]);
|
|
@@ -38,3 +39,4 @@ export class YAMNetAudioAnalyzer extends AudioAnalyzer {
|
|
|
38
39
|
}));
|
|
39
40
|
}
|
|
40
41
|
}
|
|
42
|
+
//# sourceMappingURL=yamnet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"yamnet.js","sourceRoot":"","sources":["../../../src/services/audioAnalyzers/yamnet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD;;;;;GAKG;AACH,MAAM,OAAO,mBAAoB,SAAQ,aAAa;IAC3C,MAAM,GAAG,QAAiB,CAAC;IAEpC,KAAK,CAAC,MAAM,CACV,SAAiB,EACjB,YAAoB,EACpB,cAAsB,EACtB,iBAAyB;QAEzB,MAAM,MAAM,GAAG,MAAM,YAAY,EAAE,CAAC;QAEpC,IAAI,MAAc,CAAC;QACnB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,MAAM,EAAE;gBACjC,UAAU,CAAC,kBAAkB,CAAC;gBAC9B,SAAS;gBACT,MAAM,CAAC,MAAM,CAAC,0BAA0B,CAAC;aAC1C,CAAC,CAAC;YACH,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QACzB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAEjE,IAAI,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;gBACnF,MAAM,IAAI,KAAK,CACb,iFAAiF;oBAC/E,kFAAkF,CACrF,CAAC;YACJ,CAAC;YAED,MAAM,IAAI,KAAK,CAAC,4BAA4B,OAAO,EAAE,CAAC,CAAC;QACzD,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAA+D,CAAC;QAEhG,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACxB,IAAI,EAAE,CAAC,CAAC,IAAI,GAAG,cAAc;YAC7B,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,UAAU,EAAE,CAAC,CAAC,UAAU;YACxB,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC,CAAC,CAAC;IACN,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/audioDownloader/index.ts"],"names":[],"mappings":"AAmBA,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAkFvF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/audioDownloader/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { TranscriptLine, MicroBlock, LLMChunk } from '../../types/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Groups raw transcript lines into micro-blocks of approximately `windowSec` seconds.
|
|
4
|
+
*
|
|
5
|
+
* A new block starts whenever the next line's `start` falls outside the current window.
|
|
6
|
+
* Empty input returns an empty array.
|
|
7
|
+
*/
|
|
8
|
+
export declare function buildMicroBlocks(lines: TranscriptLine[], windowSec: number): MicroBlock[];
|
|
9
|
+
/**
|
|
10
|
+
* Groups micro-blocks into larger LLM analysis chunks using a sliding window
|
|
11
|
+
* of `chunkLen` seconds with `overlap` seconds of overlap between consecutive chunks.
|
|
12
|
+
*
|
|
13
|
+
* Each chunk spans from the first block whose `start >= chunkStart` to the last block
|
|
14
|
+
* whose `start < chunkStart + chunkLen`. The next chunk starts at
|
|
15
|
+
* `chunkStart + chunkLen - overlap`.
|
|
16
|
+
*
|
|
17
|
+
* Empty input returns an empty array.
|
|
18
|
+
*/
|
|
19
|
+
export declare function buildLLMChunks(blocks: MicroBlock[], chunkLen: number, overlap: number): LLMChunk[];
|
|
20
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/chunkBuilder/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEjF;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,cAAc,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,UAAU,EAAE,CA8BzF;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,UAAU,EAAE,EACpB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,QAAQ,EAAE,CA2BZ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/chunkBuilder/index.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAuB,EAAE,SAAiB;IACzE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAElC,MAAM,MAAM,GAAiB,EAAE,CAAC;IAChC,IAAI,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACjC,IAAI,KAAK,GAAa,EAAE,CAAC;IAEzB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,KAAK,IAAI,WAAW,GAAG,SAAS,EAAE,CAAC;YAC1C,MAAM,CAAC,IAAI,CAAC;gBACV,KAAK,EAAE,WAAW;gBAClB,GAAG,EAAE,IAAI,CAAC,KAAK;gBACf,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;aACtB,CAAC,CAAC;YACH,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC;YACzB,KAAK,GAAG,EAAE,CAAC;QACb,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,IAAI,CAAC;YACV,KAAK,EAAE,WAAW;YAClB,GAAG,EAAE,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,QAAQ;YACvC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;SACtB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,cAAc,CAC5B,MAAoB,EACpB,QAAgB,EAChB,OAAe;IAEf,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEnC,MAAM,MAAM,GAAe,EAAE,CAAC;IAC9B,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IAC/C,IAAI,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAEjC,OAAO,UAAU,GAAG,QAAQ,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,UAAU,GAAG,QAAQ,CAAC;QAEvC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,UAAU,IAAI,CAAC,CAAC,KAAK,GAAG,QAAQ,CAAC,CAAC;QAEjF,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,CAAC,IAAI,CAAC;gBACV,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK;gBACtB,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG;gBAClC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;aAC1C,CAAC,CAAC;QACL,CAAC;QAED,MAAM,IAAI,GAAG,QAAQ,GAAG,OAAO,CAAC;QAChC,UAAU,IAAI,IAAI,CAAC;QAEnB,IAAI,IAAI,IAAI,CAAC;YAAE,MAAM;IACvB,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { RankedSegment } from '../../types/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Generates video clips for each ranked segment using fluent-ffmpeg.
|
|
4
|
+
*
|
|
5
|
+
* - Auto-creates the output directory if it doesn't exist.
|
|
6
|
+
* - Runs clips with controlled concurrency via p-limit.
|
|
7
|
+
* - Logs a warning per failed clip; never aborts the entire run.
|
|
8
|
+
* - Re-encodes with libx264/aac for accurate audio/video sync.
|
|
9
|
+
*
|
|
10
|
+
* @param videoPath - Local path to the downloaded mp4
|
|
11
|
+
* @param segments - Ranked segments to cut
|
|
12
|
+
* @param videoId - Used to name output files
|
|
13
|
+
* @param customPath - Custom output directory (optional, overrides OUTPUT_DIR)
|
|
14
|
+
* @param concurrency - Maximum number of parallel clip operations (default: 1)
|
|
15
|
+
* @returns Array of successfully written clip file paths
|
|
16
|
+
* @throws {Error} if ffmpeg is not installed
|
|
17
|
+
*/
|
|
18
|
+
export declare function generateClips(videoPath: string, segments: RankedSegment[], videoId: string, customPath?: string, concurrency?: number): Promise<string[]>;
|
|
19
|
+
/**
|
|
20
|
+
* Organizes pre-downloaded segment files from downloads/ to outputs/.
|
|
21
|
+
* Used when videos are downloaded via --download-sections segments mode.
|
|
22
|
+
*
|
|
23
|
+
* @param sourcePaths - Paths to the pre-downloaded segment files in downloads/
|
|
24
|
+
* @param videoId - Used to verify file naming
|
|
25
|
+
* @param customPath - Custom output directory (optional, overrides OUTPUT_DIR)
|
|
26
|
+
* @param concurrency - Maximum number of parallel copy operations (default: 1)
|
|
27
|
+
* @returns Array of organized clip file paths in outputs/
|
|
28
|
+
*/
|
|
29
|
+
export declare function organizeClips(sourcePaths: string[], videoId: string, customPath?: string, concurrency?: number): Promise<string[]>;
|
|
30
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/clipGenerator/index.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AA8D1D;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,aAAa,CACjC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,aAAa,EAAE,EACzB,OAAO,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,MAAM,EACnB,WAAW,GAAE,MAAU,GACtB,OAAO,CAAC,MAAM,EAAE,CAAC,CA6CnB;AAED;;;;;;;;;GASG;AACH,wBAAsB,aAAa,CACjC,WAAW,EAAE,MAAM,EAAE,EACrB,OAAO,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,MAAM,EACnB,WAAW,GAAE,MAAU,GACtB,OAAO,CAAC,MAAM,EAAE,CAAC,CAwCnB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/clipGenerator/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { RankedSegment, MicroBlock } from '../../types/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Runs a second LLM pass on all ranked segments in parallel to tighten clip boundaries.
|
|
4
|
+
* Segments that fail refinement retain their original boundaries.
|
|
5
|
+
*
|
|
6
|
+
* @returns RankedSegment[] with refined (or original) start/end values
|
|
7
|
+
*/
|
|
8
|
+
export declare function refineSegments(segments: RankedSegment[], allBlocks: MicroBlock[], concurrency: number, noCache?: boolean): Promise<RankedSegment[]>;
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/clipRefiner/index.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAqGtE;;;;;GAKG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,aAAa,EAAE,EACzB,SAAS,EAAE,UAAU,EAAE,EACvB,WAAW,EAAE,MAAM,EACnB,OAAO,UAAQ,GACd,OAAO,CAAC,aAAa,EAAE,CAAC,CAqB1B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/clipRefiner/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { AudioAnalyzer } from '../audioAnalyzers/index.js';
|
|
2
|
+
import type { AudioEvent } from '../../types/index.js';
|
|
3
|
+
/**
|
|
4
|
+
* Top-level audio event detector.
|
|
5
|
+
*
|
|
6
|
+
* Holds an ordered chain of AudioAnalyzer instances and walks the chain on each
|
|
7
|
+
* `detect()` call: the first analyzer that succeeds wins. If an analyzer throws,
|
|
8
|
+
* the error is logged and the next analyzer in the chain is tried. If the entire
|
|
9
|
+
* chain is exhausted without success the error from the last analyzer is re-thrown.
|
|
10
|
+
*
|
|
11
|
+
* The chain is built once at startup via `createAnalyzerChain(config.AUDIO_PROVIDER)`
|
|
12
|
+
* and injected here, keeping provider-selection logic out of this class.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* const chain = createAnalyzerChain('gemini,whisper');
|
|
16
|
+
* const detector = new EventDetector(chain);
|
|
17
|
+
* const events = await detector.detect(audioPath, 'valorant', 0, 120);
|
|
18
|
+
*/
|
|
19
|
+
export declare class EventDetector {
|
|
20
|
+
private readonly chain;
|
|
21
|
+
constructor(chain: AudioAnalyzer[]);
|
|
22
|
+
/**
|
|
23
|
+
* Detect audio events by walking the analyzer chain in order.
|
|
24
|
+
* Falls back to the next analyzer whenever one throws.
|
|
25
|
+
*/
|
|
26
|
+
detect(audioPath: string, gameProfile: string, chunkOffsetSec: number, chunkDurationSec: number): Promise<AudioEvent[]>;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/eventDetector/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,aAAa;IACZ,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,EAAE,aAAa,EAAE;IAMnD;;;OAGG;IACG,MAAM,CACV,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,EACtB,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAAC,UAAU,EAAE,CAAC;CA+BzB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/eventDetector/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAI5C;;;;;;;;;;;;;;;GAeG;AACH,MAAM,OAAO,aAAa;IACK;IAA7B,YAA6B,KAAsB;QAAtB,UAAK,GAAL,KAAK,CAAiB;QACjD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;QACrF,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,MAAM,CACV,SAAiB,EACjB,WAAmB,EACnB,cAAsB,EACtB,gBAAwB;QAExB,IAAI,SAAkB,CAAC;QAEvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,MAAM,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;YAE3C,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,CAClC,SAAS,EACT,WAAW,EACX,cAAc,EACd,gBAAgB,CACjB,CAAC;gBACF,GAAG,CAAC,IAAI,CAAC,UAAU,QAAQ,CAAC,MAAM,cAAc,MAAM,CAAC,MAAM,SAAS,CAAC,CAAC;gBACxE,OAAO,MAAM,CAAC;YAChB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,SAAS,GAAG,GAAG,CAAC;gBAChB,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAEjE,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;oBAC5C,GAAG,CAAC,IAAI,CAAC,UAAU,QAAQ,CAAC,MAAM,6BAA6B,UAAU,KAAK,OAAO,EAAE,CAAC,CAAC;gBAC3F,CAAC;qBAAM,CAAC;oBACN,GAAG,CAAC,KAAK,CAAC,UAAU,QAAQ,CAAC,MAAM,iCAAiC,OAAO,EAAE,CAAC,CAAC;gBACjF,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,SAAS,CAAC;IAClB,CAAC;CACF"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { TranscriptDetector } from '../transcriptDetector/index.js';
|
|
2
|
+
import type { Cache } from '../../utils/cache.js';
|
|
3
|
+
import type { MicroBlock, RankedSegment, LLMAnalyzerResult, LLMAnalyzerOpts } from '../../types/index.js';
|
|
4
|
+
/**
|
|
5
|
+
* LLMAnalyzer — orchestrates transcript fetching + LLM-based segment analysis.
|
|
6
|
+
*
|
|
7
|
+
* Owns a TranscriptDetector (which encapsulates the provider chain) and the
|
|
8
|
+
* Cache. Audio events are provided externally — they are pre-computed by the
|
|
9
|
+
* AudioProcessor stage so that the full per-chunk caching logic stays in
|
|
10
|
+
* audioProcessor.ts and is not duplicated here.
|
|
11
|
+
*
|
|
12
|
+
* LLM pass 1 (`analyze`) — fetches transcript, runs chunk analysis.
|
|
13
|
+
* LLM pass 2 (`refine`) — tightens clip boundaries on ranked segments.
|
|
14
|
+
*
|
|
15
|
+
* The free functions in `llmAnalyzer/index.ts` and `clipRefiner/index.ts` are
|
|
16
|
+
* NOT modified — this class wraps them.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* const analyzer = new LLMAnalyzer(transcriptDetector, cache);
|
|
20
|
+
* const result = await analyzer.analyze({ videoId, audioPath, audioEvents, ... });
|
|
21
|
+
* // ... ranking step ...
|
|
22
|
+
* const refined = await analyzer.refine(rankedSegments, result.microBlocks, opts);
|
|
23
|
+
*/
|
|
24
|
+
export declare class LLMAnalyzer {
|
|
25
|
+
private readonly transcriptDetector;
|
|
26
|
+
private readonly cache;
|
|
27
|
+
constructor(transcriptDetector: TranscriptDetector, cache: Cache);
|
|
28
|
+
/**
|
|
29
|
+
* LLM pass 1 — fetch transcript then run chunk analysis.
|
|
30
|
+
*
|
|
31
|
+
* Returns lines, microBlocks, chunks, and chunkEvals so the caller has
|
|
32
|
+
* everything needed for the ranking step.
|
|
33
|
+
*/
|
|
34
|
+
analyze(opts: LLMAnalyzerOpts): Promise<LLMAnalyzerResult>;
|
|
35
|
+
/**
|
|
36
|
+
* LLM pass 2 — tighten clip boundaries on already-ranked segments.
|
|
37
|
+
* Must be called after ranking, since it takes `RankedSegment[]` as input.
|
|
38
|
+
*/
|
|
39
|
+
refine(rankedSegments: RankedSegment[], microBlocks: MicroBlock[], opts: Pick<LLMAnalyzerOpts, 'maxParallel' | 'noCache'>): Promise<RankedSegment[]>;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=LLMAnalyzer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LLMAnalyzer.d.ts","sourceRoot":"","sources":["../../../src/services/llmAnalyzer/LLMAnalyzer.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,EAEV,UAAU,EAIV,aAAa,EACb,iBAAiB,EACjB,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAE9B;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,WAAW;IAEpB,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,KAAK;gBADL,kBAAkB,EAAE,kBAAkB,EACtC,KAAK,EAAE,KAAK;IAG/B;;;;;OAKG;IACG,OAAO,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAoChE;;;OAGG;IACG,MAAM,CACV,cAAc,EAAE,aAAa,EAAE,EAC/B,WAAW,EAAE,UAAU,EAAE,EACzB,IAAI,EAAE,IAAI,CAAC,eAAe,EAAE,aAAa,GAAG,SAAS,CAAC,GACrD,OAAO,CAAC,aAAa,EAAE,CAAC;CAI5B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LLMAnalyzer.js","sourceRoot":"","sources":["../../../src/services/llmAnalyzer/LLMAnalyzer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAc/C;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,OAAO,WAAW;IAEH;IACA;IAFnB,YACmB,kBAAsC,EACtC,KAAY;QADZ,uBAAkB,GAAlB,kBAAkB,CAAoB;QACtC,UAAK,GAAL,KAAK,CAAO;IAC5B,CAAC;IAEJ;;;;;OAKG;IACH,KAAK,CAAC,OAAO,CAAC,IAAqB;QACjC,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,CACzE,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,KAAK,CACX,CAAC;QAEF,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,UAAU,CAAC;QACvD,MAAM,eAAe,GAAG,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAExF,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,GAAG,CAAC,IAAI,CACN,0BAA0B,eAAe,CAAC,MAAM,OAAO,MAAM,CAAC,MAAM,yBAAyB,UAAU,GAAG,CAC3G,CAAC;QACJ,CAAC;QAED,GAAG,CAAC,IAAI,CACN,yBAAyB,MAAM,CAAC,SAAS,KAAK,eAAe,CAAC,MAAM,gBAAgB,IAAI,CAAC,WAAW,eAAe,CACpH,CAAC;QAEF,MAAM,UAAU,GAAG,MAAM,aAAa,CACpC,eAAe,EACf,KAAK,EACL,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,OAAO,CACb,CAAC;QAEF,MAAM,cAAc,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC;QAC/E,IAAI,cAAc,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;QAC1F,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;IACpD,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,MAAM,CACV,cAA+B,EAC/B,WAAyB,EACzB,IAAsD;QAEtD,GAAG,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QACxC,OAAO,cAAc,CAAC,cAAc,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACrF,CAAC;CACF"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { LLMChunk, TranscriptLine, ChunkEvaluation, AudioEvent } from '../../types/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Analyzes all LLM chunks via Promise.allSettled — one failure never aborts the rest.
|
|
4
|
+
* Each chunk receives only the transcript lines and audio events within its window.
|
|
5
|
+
* Pass noCache=true to bypass the on-disk chunk cache.
|
|
6
|
+
*/
|
|
7
|
+
export declare function analyzeChunks(chunks: LLMChunk[], lines: TranscriptLine[], audioEvents: AudioEvent[], concurrency: number, noCache?: boolean): Promise<ChunkEvaluation[]>;
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/llmAnalyzer/index.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,QAAQ,EACR,cAAc,EAEd,eAAe,EACf,UAAU,EACX,MAAM,sBAAsB,CAAC;AAyJ9B;;;;GAIG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,QAAQ,EAAE,EAClB,KAAK,EAAE,cAAc,EAAE,EACvB,WAAW,EAAE,UAAU,EAAE,EACzB,WAAW,EAAE,MAAM,EACnB,OAAO,UAAQ,GACd,OAAO,CAAC,eAAe,EAAE,CAAC,CAoD5B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/llmAnalyzer/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { VideoMetadata } from '../../types/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Extracts video metadata (title, duration) for a given YouTube video ID.
|
|
4
|
+
*
|
|
5
|
+
* Strategy:
|
|
6
|
+
* 1. Try yt-dlp --dump-json (full metadata, requires yt-dlp installed)
|
|
7
|
+
* 2. Fall back to YouTube oEmbed API (title only, duration = 0)
|
|
8
|
+
*
|
|
9
|
+
* @throws {Error} if both strategies fail
|
|
10
|
+
*/
|
|
11
|
+
export declare function extractMetadata(videoId: string): Promise<VideoMetadata>;
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/metadataExtractor/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AA8D1D;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAQ7E"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/metadataExtractor/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAG5C,MAAM,UAAU,GAAG,gCAAgC,CAAC;AAWpD;;;GAGG;AACH,KAAK,UAAU,eAAe,CAAC,OAAe;IAC5C,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,CAAC,aAAa,EAAE,eAAe,EAAE,mCAAmC,OAAO,EAAE,CAAC,CAAC;QAE5F,IAAI,MAAM,CAAC,2BAA2B,EAAE,CAAC;YACvC,IAAI,CAAC,OAAO,CAAC,wBAAwB,EAAE,MAAM,CAAC,2BAA2B,CAAC,CAAC;QAC7E,CAAC;aAAM,IAAI,MAAM,CAAC,mBAAmB,EAAE,CAAC;YACtC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,mBAAmB,CAAC,CAAC;QACxD,CAAC;QAED,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAc,CAAC;QAC7C,OAAO;YACL,OAAO;YACP,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,GAAG,CAAC,IAAI,CAAC,sBAAsB,OAAO,MAAM,OAAO,EAAE,CAAC,CAAC;QACvD,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,gBAAgB,CAAC,OAAe;IAC7C,MAAM,GAAG,GAAG,GAAG,UAAU,wCAAwC,OAAO,cAAc,CAAC;IACvF,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,8BAA8B,OAAO,WAAW,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IAChF,CAAC;IACD,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAmB,CAAC;IAClD,GAAG,CAAC,IAAI,CACN,8CAA8C,OAAO,sCAAsC,CAC5F,CAAC;IACF,OAAO;QACL,OAAO;QACP,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,QAAQ,EAAE,CAAC;KACZ,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAAe;IACnD,MAAM,WAAW,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;IACnD,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,GAAG,CAAC,IAAI,CAAC,sBAAsB,OAAO,8BAA8B,CAAC,CAAC;IACtE,OAAO,gBAAgB,CAAC,OAAO,CAAC,CAAC;AACnC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/segmentRanker/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAqE3E,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,eAAe,EAAE,EAC3B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,GACX,aAAa,EAAE,CAcjB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/segmentRanker/index.ts"],"names":[],"mappings":"AAEA,SAAS,cAAc,CAAC,MAAc,EAAE,IAAY,EAAE,MAAc,EAAE,IAAY;IAChF,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACjC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,KAAK,CAAC,CAAC;AAClC,CAAC;AAED,SAAS,qBAAqB,CAC5B,MAAc,EACd,IAAY,EACZ,MAAc,EACd,IAAY,EACZ,OAAe,EACf,OAAe;IAEf,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IAC3D,IAAI,OAAO,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAEhC,MAAM,SAAS,GAAG,IAAI,GAAG,MAAM,CAAC;IAChC,MAAM,SAAS,GAAG,IAAI,GAAG,MAAM,CAAC;IAEhC,MAAM,aAAa,GAAG,OAAO,KAAK,OAAO,IAAI,OAAO,KAAK,OAAO,CAAC;IAEjE,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,OAAO,GAAG,CAAC,CAAC;IACrB,CAAC;IAED,OAAO,OAAO,GAAG,SAAS,GAAG,GAAG,IAAI,OAAO,GAAG,SAAS,GAAG,GAAG,CAAC;AAChE,CAAC;AAED,SAAS,mBAAmB,CAC1B,QAOE;IASF,MAAM,IAAI,GAAoB,EAAE,CAAC;IAEjC,KAAK,MAAM,SAAS,IAAI,QAAQ,EAAE,CAAC;QACjC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CACvC,qBAAqB,CACnB,QAAQ,CAAC,KAAK,EACd,QAAQ,CAAC,GAAG,EACZ,SAAS,CAAC,KAAK,EACf,SAAS,CAAC,GAAG,EACb,QAAQ,CAAC,MAAM,EACf,SAAS,CAAC,MAAM,CACjB,CACF,CAAC;QACF,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,YAAY,CAC1B,QAA2B,EAC3B,SAAiB,EACjB,IAAY;IAEZ,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IAEhG,MAAM,OAAO,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAE9C,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3C,IAAI,EAAE,CAAC,GAAG,CAAC;QACX,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,GAAG,EAAE,CAAC,CAAC,GAAG;QACV,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,MAAM,EAAE,CAAC,CAAC,MAAyC;QACnD,WAAW,EAAE,CAAC,CAAC,WAAW;KAC3B,CAAC,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { TranscriptLine } from '../../types/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Contract every transcript analyzer implementation must satisfy.
|
|
4
|
+
*
|
|
5
|
+
* Each concrete analyzer (YtDlp, Whisper, Gemini) extends this class and
|
|
6
|
+
* implements `detect()`. The `source` property tags the lines it returns so
|
|
7
|
+
* downstream logging knows which backend produced them.
|
|
8
|
+
*
|
|
9
|
+
* Usage:
|
|
10
|
+
* const analyzer = new YtDlpTranscriptAnalyzer();
|
|
11
|
+
* const lines = await analyzer.detect(videoId, null);
|
|
12
|
+
*/
|
|
13
|
+
export declare abstract class TranscriptAnalyzer {
|
|
14
|
+
abstract readonly source: string;
|
|
15
|
+
/**
|
|
16
|
+
* Fetch transcript lines for the given video.
|
|
17
|
+
*
|
|
18
|
+
* @param videoId - YouTube video ID (no URL)
|
|
19
|
+
* @param audioPath - Path to the downloaded WAV on disk, or null if audio
|
|
20
|
+
* is not yet available (e.g. ytdlp path has no audio dep)
|
|
21
|
+
* @returns Array of transcript lines sorted by start time
|
|
22
|
+
*/
|
|
23
|
+
abstract detect(videoId: string, audioPath: string | null): Promise<TranscriptLine[]>;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=base.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/services/transcriptAnalyzers/base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D;;;;;;;;;;GAUG;AACH,8BAAsB,kBAAkB;IACtC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAEjC;;;;;;;OAOG;IACH,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;CACtF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/services/transcriptAnalyzers/base.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,MAAM,OAAgB,kBAAkB;CAYvC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { TranscriptAnalyzer } from './base.js';
|
|
2
|
+
import type { TranscriptProviderName } from '../../types/index.js';
|
|
3
|
+
/**
|
|
4
|
+
* Parses the TRANSCRIPT_PROVIDER config string into an ordered list of provider names.
|
|
5
|
+
*
|
|
6
|
+
* Accepts a comma-separated list: "ytdlp,whisper" → ['ytdlp', 'whisper']
|
|
7
|
+
* Single values still work: "ytdlp" → ['ytdlp']
|
|
8
|
+
*/
|
|
9
|
+
export declare function parseTranscriptProviderChain(providerString: string): TranscriptProviderName[];
|
|
10
|
+
/**
|
|
11
|
+
* Builds an ordered array of TranscriptAnalyzer instances from a provider chain string.
|
|
12
|
+
*
|
|
13
|
+
* The TranscriptDetector will walk this array in order — if the first analyzer
|
|
14
|
+
* fails, it falls back to the next, and so on.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* // TRANSCRIPT_PROVIDER=ytdlp,whisper → [YtDlpTranscriptAnalyzer, WhisperTranscriptAnalyzer]
|
|
18
|
+
* const chain = createTranscriptChain(config.TRANSCRIPT_PROVIDER);
|
|
19
|
+
*/
|
|
20
|
+
export declare function createTranscriptChain(providerString: string): TranscriptAnalyzer[];
|
|
21
|
+
//# sourceMappingURL=factory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/services/transcriptAnalyzers/factory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAI/C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAInE;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,cAAc,EAAE,MAAM,GAAG,sBAAsB,EAAE,CAqB7F;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,cAAc,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAiBlF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../src/services/transcriptAnalyzers/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAE5C,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAGvD,MAAM,eAAe,GAAG,IAAI,GAAG,CAAyB,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;AAExF;;;;;GAKG;AACH,MAAM,UAAU,4BAA4B,CAAC,cAAsB;IACjE,MAAM,KAAK,GAAG,cAAc;SACzB,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;SAClC,MAAM,CAAC,OAAO,CAAC,CAAC;IAEnB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CACb,+EAA+E,CAChF,CAAC;IACJ,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAA8B,CAAC,EAAE,CAAC;YACzD,MAAM,IAAI,KAAK,CACb,gCAAgC,IAAI,sEAAsE,CAC3G,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,KAAiC,CAAC;AAC3C,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,qBAAqB,CAAC,cAAsB;IAC1D,MAAM,KAAK,GAAG,4BAA4B,CAAC,cAAc,CAAC,CAAC;IAE3D,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACxB,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,OAAO;gBACV,OAAO,IAAI,uBAAuB,EAAE,CAAC;YACvC,KAAK,SAAS;gBACZ,OAAO,IAAI,yBAAyB,EAAE,CAAC;YACzC,KAAK,QAAQ;gBACX,GAAG,CAAC,IAAI,CACN,iEAAiE;oBAC/D,wCAAwC,CAC3C,CAAC;gBACF,OAAO,IAAI,wBAAwB,EAAE,CAAC;QAC1C,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { TranscriptLine } from '../../types/index.js';
|
|
2
|
+
import { TranscriptAnalyzer } from './base.js';
|
|
3
|
+
/**
|
|
4
|
+
* Transcribes a video using Google Gemini's multimodal audio understanding.
|
|
5
|
+
*
|
|
6
|
+
* @stub This implementation is not yet complete. It will:
|
|
7
|
+
* 1. Split the audio file into overlapping chunks
|
|
8
|
+
* 2. Send each chunk to the Gemini audio API for transcription
|
|
9
|
+
* 3. Stitch the returned text segments back into TranscriptLine[]
|
|
10
|
+
*
|
|
11
|
+
* Set TRANSCRIPT_PROVIDER=ytdlp or TRANSCRIPT_PROVIDER=whisper to use a
|
|
12
|
+
* working provider in the meantime.
|
|
13
|
+
*/
|
|
14
|
+
export declare class GeminiTranscriptAnalyzer extends TranscriptAnalyzer {
|
|
15
|
+
readonly source: "gemini";
|
|
16
|
+
detect(_videoId: string, _audioPath: string | null): Promise<TranscriptLine[]>;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=gemini.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../../src/services/transcriptAnalyzers/gemini.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAE/C;;;;;;;;;;GAUG;AACH,qBAAa,wBAAyB,SAAQ,kBAAkB;IAC9D,QAAQ,CAAC,MAAM,EAAG,QAAQ,CAAU;IAE9B,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;CAMrF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../../src/services/transcriptAnalyzers/gemini.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAE/C;;;;;;;;;;GAUG;AACH,MAAM,OAAO,wBAAyB,SAAQ,kBAAkB;IACrD,MAAM,GAAG,QAAiB,CAAC;IAEpC,KAAK,CAAC,MAAM,CAAC,QAAgB,EAAE,UAAyB;QACtD,MAAM,IAAI,KAAK,CACb,mDAAmD;YACjD,uEAAuE,CAC1E,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { TranscriptAnalyzer } from './base.js';
|
|
2
|
+
export { YtDlpTranscriptAnalyzer } from './ytdlp.js';
|
|
3
|
+
export { WhisperTranscriptAnalyzer } from './whisper.js';
|
|
4
|
+
export { GeminiTranscriptAnalyzer } from './gemini.js';
|
|
5
|
+
export { createTranscriptChain, parseTranscriptProviderChain } from './factory.js';
|
|
6
|
+
export type { TranscriptProviderName } from '../../types/index.js';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/transcriptAnalyzers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,4BAA4B,EAAE,MAAM,cAAc,CAAC;AACnF,YAAY,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -3,3 +3,4 @@ export { YtDlpTranscriptAnalyzer } from './ytdlp.js';
|
|
|
3
3
|
export { WhisperTranscriptAnalyzer } from './whisper.js';
|
|
4
4
|
export { GeminiTranscriptAnalyzer } from './gemini.js';
|
|
5
5
|
export { createTranscriptChain, parseTranscriptProviderChain } from './factory.js';
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/transcriptAnalyzers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,4BAA4B,EAAE,MAAM,cAAc,CAAC"}
|