@thunderkiller/video-clipper 1.7.0 → 1.9.0
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 +8 -8
- package/dist/{cli.d.ts → app/cli/args.d.ts} +2 -2
- package/dist/app/cli/args.d.ts.map +1 -0
- package/dist/{cli.js → app/cli/args.js} +16 -16
- package/dist/app/cli/args.js.map +1 -0
- package/dist/{index.d.ts.map → app/cli/index.d.ts.map} +1 -1
- package/dist/app/cli/index.js +38 -0
- package/dist/app/cli/index.js.map +1 -0
- package/dist/{pipeline → app/cli/pipeline}/dumper.d.ts +1 -1
- package/dist/app/cli/pipeline/dumper.d.ts.map +1 -0
- package/dist/{pipeline → app/cli/pipeline}/dumper.js +6 -6
- package/dist/app/cli/pipeline/dumper.js.map +1 -0
- package/dist/{pipeline → app/cli/pipeline}/runner.d.ts +2 -2
- package/dist/app/cli/pipeline/runner.d.ts.map +1 -0
- package/dist/app/cli/pipeline/runner.js +249 -0
- package/dist/app/cli/pipeline/runner.js.map +1 -0
- package/dist/app/cli/pipeline/stages/audioProcessor.d.ts +4 -0
- package/dist/app/cli/pipeline/stages/audioProcessor.d.ts.map +1 -0
- package/dist/app/cli/pipeline/stages/audioProcessor.js +59 -0
- package/dist/app/cli/pipeline/stages/audioProcessor.js.map +1 -0
- package/dist/app/cli/pipeline/stages/videoResolver.d.ts +4 -0
- package/dist/app/cli/pipeline/stages/videoResolver.d.ts.map +1 -0
- package/dist/app/cli/pipeline/stages/videoResolver.js +24 -0
- package/dist/app/cli/pipeline/stages/videoResolver.js.map +1 -0
- package/dist/app/web/lib/activity/analysisActivity.d.ts +18 -0
- package/dist/app/web/lib/activity/analysisActivity.d.ts.map +1 -0
- package/dist/app/web/lib/activity/analysisActivity.js +194 -0
- package/dist/app/web/lib/activity/analysisActivity.js.map +1 -0
- package/dist/app/web/lib/activity/analysisLogging.d.ts +3 -0
- package/dist/app/web/lib/activity/analysisLogging.d.ts.map +1 -0
- package/dist/app/web/lib/activity/analysisLogging.js +17 -0
- package/dist/app/web/lib/activity/analysisLogging.js.map +1 -0
- package/dist/app/web/lib/analysisStream.d.ts +5 -0
- package/dist/app/web/lib/analysisStream.d.ts.map +1 -0
- package/dist/app/web/lib/analysisStream.js +106 -0
- package/dist/app/web/lib/analysisStream.js.map +1 -0
- package/dist/app/web/lib/api.d.ts +3 -0
- package/dist/app/web/lib/api.d.ts.map +1 -0
- package/dist/app/web/lib/api.js +21 -0
- package/dist/app/web/lib/api.js.map +1 -0
- package/dist/app/web/lib/configStore.d.ts +8 -0
- package/dist/app/web/lib/configStore.d.ts.map +1 -0
- package/dist/app/web/lib/configStore.js +67 -0
- package/dist/app/web/lib/configStore.js.map +1 -0
- package/dist/app/web/lib/format.d.ts +3 -0
- package/dist/app/web/lib/format.d.ts.map +1 -0
- package/dist/app/web/lib/format.js +17 -0
- package/dist/app/web/lib/format.js.map +1 -0
- package/dist/app/web/lib/index.d.ts +2 -0
- package/dist/app/web/lib/index.d.ts.map +1 -0
- package/dist/app/web/lib/index.js +2 -0
- package/dist/app/web/lib/index.js.map +1 -0
- package/dist/app/web/lib/services/analysis/analysisService.d.ts +5 -0
- package/dist/app/web/lib/services/analysis/analysisService.d.ts.map +1 -0
- package/dist/app/web/lib/services/analysis/analysisService.js +147 -0
- package/dist/app/web/lib/services/analysis/analysisService.js.map +1 -0
- package/dist/app/web/lib/services/analysis/streamEvents.d.ts +5 -0
- package/dist/app/web/lib/services/analysis/streamEvents.d.ts.map +1 -0
- package/dist/app/web/lib/services/analysis/streamEvents.js +69 -0
- package/dist/app/web/lib/services/analysis/streamEvents.js.map +1 -0
- package/dist/app/web/lib/services/analysis/transcriptService.d.ts +4 -0
- package/dist/app/web/lib/services/analysis/transcriptService.d.ts.map +1 -0
- package/dist/app/web/lib/services/analysis/transcriptService.js +33 -0
- package/dist/app/web/lib/services/analysis/transcriptService.js.map +1 -0
- package/dist/app/web/lib/services/artifacts/artifactStore.d.ts +14 -0
- package/dist/app/web/lib/services/artifacts/artifactStore.d.ts.map +1 -0
- package/dist/app/web/lib/services/artifacts/artifactStore.js +109 -0
- package/dist/app/web/lib/services/artifacts/artifactStore.js.map +1 -0
- package/dist/app/web/lib/services/clipping/clipService.d.ts +4 -0
- package/dist/app/web/lib/services/clipping/clipService.d.ts.map +1 -0
- package/dist/app/web/lib/services/clipping/clipService.js +73 -0
- package/dist/app/web/lib/services/clipping/clipService.js.map +1 -0
- package/dist/app/web/lib/services/config/webConfig.d.ts +4 -0
- package/dist/app/web/lib/services/config/webConfig.d.ts.map +1 -0
- package/dist/app/web/lib/services/config/webConfig.js +12 -0
- package/dist/app/web/lib/services/config/webConfig.js.map +1 -0
- package/dist/app/web/lib/services/http/responses.d.ts +8 -0
- package/dist/app/web/lib/services/http/responses.d.ts.map +1 -0
- package/dist/app/web/lib/services/http/responses.js +23 -0
- package/dist/app/web/lib/services/http/responses.js.map +1 -0
- package/dist/app/web/lib/services/publishing/draftService.d.ts +5 -0
- package/dist/app/web/lib/services/publishing/draftService.d.ts.map +1 -0
- package/dist/app/web/lib/services/publishing/draftService.js +70 -0
- package/dist/app/web/lib/services/publishing/draftService.js.map +1 -0
- package/dist/app/web/lib/services/publishing/metadataCache.d.ts +4 -0
- package/dist/app/web/lib/services/publishing/metadataCache.d.ts.map +1 -0
- package/dist/app/web/lib/services/publishing/metadataCache.js +38 -0
- package/dist/app/web/lib/services/publishing/metadataCache.js.map +1 -0
- package/dist/app/web/lib/services/publishing/metadataService.d.ts +5 -0
- package/dist/app/web/lib/services/publishing/metadataService.d.ts.map +1 -0
- package/dist/app/web/lib/services/publishing/metadataService.js +125 -0
- package/dist/app/web/lib/services/publishing/metadataService.js.map +1 -0
- package/dist/app/web/lib/services/publishing/uploadService.d.ts +6 -0
- package/dist/app/web/lib/services/publishing/uploadService.d.ts.map +1 -0
- package/dist/app/web/lib/services/publishing/uploadService.js +303 -0
- package/dist/app/web/lib/services/publishing/uploadService.js.map +1 -0
- package/dist/app/web/lib/services/publishing/uploadStreamEvents.d.ts +5 -0
- package/dist/app/web/lib/services/publishing/uploadStreamEvents.d.ts.map +1 -0
- package/dist/app/web/lib/services/publishing/uploadStreamEvents.js +45 -0
- package/dist/app/web/lib/services/publishing/uploadStreamEvents.js.map +1 -0
- package/dist/app/web/lib/services/youtube/authStore.d.ts +5 -0
- package/dist/app/web/lib/services/youtube/authStore.d.ts.map +1 -0
- package/dist/app/web/lib/services/youtube/authStore.js +46 -0
- package/dist/app/web/lib/services/youtube/authStore.js.map +1 -0
- package/dist/app/web/lib/services/youtube/catalogFactory.d.ts +3 -0
- package/dist/app/web/lib/services/youtube/catalogFactory.d.ts.map +1 -0
- package/dist/app/web/lib/services/youtube/catalogFactory.js +10 -0
- package/dist/app/web/lib/services/youtube/catalogFactory.js.map +1 -0
- package/dist/app/web/lib/services/youtube/uploadAuth.d.ts +9 -0
- package/dist/app/web/lib/services/youtube/uploadAuth.d.ts.map +1 -0
- package/dist/app/web/lib/services/youtube/uploadAuth.js +221 -0
- package/dist/app/web/lib/services/youtube/uploadAuth.js.map +1 -0
- package/dist/app/web/lib/stores/theme.d.ts +2 -0
- package/dist/app/web/lib/stores/theme.d.ts.map +1 -0
- package/dist/app/web/lib/stores/theme.js +12 -0
- package/dist/app/web/lib/stores/theme.js.map +1 -0
- package/dist/app/web/lib/toastStore.d.ts +6 -0
- package/dist/app/web/lib/toastStore.d.ts.map +1 -0
- package/dist/app/web/lib/toastStore.js +14 -0
- package/dist/app/web/lib/toastStore.js.map +1 -0
- package/dist/app/web/lib/uploadStream.d.ts +6 -0
- package/dist/app/web/lib/uploadStream.d.ts.map +1 -0
- package/dist/app/web/lib/uploadStream.js +68 -0
- package/dist/app/web/lib/uploadStream.js.map +1 -0
- package/dist/app/web/lib/videoWorkflow.d.ts +4 -0
- package/dist/app/web/lib/videoWorkflow.d.ts.map +1 -0
- package/dist/app/web/lib/videoWorkflow.js +39 -0
- package/dist/app/web/lib/videoWorkflow.js.map +1 -0
- package/dist/app/web/routes/api/analysis/transcript/+server.d.ts +3 -0
- package/dist/app/web/routes/api/analysis/transcript/+server.d.ts.map +1 -0
- package/dist/app/web/routes/api/analysis/transcript/+server.js +97 -0
- package/dist/app/web/routes/api/analysis/transcript/+server.js.map +1 -0
- package/dist/app/web/routes/api/cache/videos/[videoId]/analysis/+server.d.ts +3 -0
- package/dist/app/web/routes/api/cache/videos/[videoId]/analysis/+server.d.ts.map +1 -0
- package/dist/app/web/routes/api/cache/videos/[videoId]/analysis/+server.js +21 -0
- package/dist/app/web/routes/api/cache/videos/[videoId]/analysis/+server.js.map +1 -0
- package/dist/app/web/routes/api/cache/videos/[videoId]/transcript/+server.d.ts +3 -0
- package/dist/app/web/routes/api/cache/videos/[videoId]/transcript/+server.d.ts.map +1 -0
- package/dist/app/web/routes/api/cache/videos/[videoId]/transcript/+server.js +21 -0
- package/dist/app/web/routes/api/cache/videos/[videoId]/transcript/+server.js.map +1 -0
- package/dist/app/web/routes/api/clips/+server.d.ts +3 -0
- package/dist/app/web/routes/api/clips/+server.d.ts.map +1 -0
- package/dist/app/web/routes/api/clips/+server.js +32 -0
- package/dist/app/web/routes/api/clips/+server.js.map +1 -0
- package/dist/app/web/routes/api/config/+server.d.ts +4 -0
- package/dist/app/web/routes/api/config/+server.d.ts.map +1 -0
- package/dist/app/web/routes/api/config/+server.js +37 -0
- package/dist/app/web/routes/api/config/+server.js.map +1 -0
- package/dist/app/web/routes/api/library/analyses/+server.d.ts +3 -0
- package/dist/app/web/routes/api/library/analyses/+server.d.ts.map +1 -0
- package/dist/app/web/routes/api/library/analyses/+server.js +16 -0
- package/dist/app/web/routes/api/library/analyses/+server.js.map +1 -0
- package/dist/app/web/routes/api/library/analyses/[analysisId]/+server.d.ts +3 -0
- package/dist/app/web/routes/api/library/analyses/[analysisId]/+server.d.ts.map +1 -0
- package/dist/app/web/routes/api/library/analyses/[analysisId]/+server.js +28 -0
- package/dist/app/web/routes/api/library/analyses/[analysisId]/+server.js.map +1 -0
- package/dist/app/web/routes/api/library/clips/+server.d.ts +3 -0
- package/dist/app/web/routes/api/library/clips/+server.d.ts.map +1 -0
- package/dist/app/web/routes/api/library/clips/+server.js +26 -0
- package/dist/app/web/routes/api/library/clips/+server.js.map +1 -0
- package/dist/app/web/routes/api/publish/drafts/+server.d.ts +3 -0
- package/dist/app/web/routes/api/publish/drafts/+server.d.ts.map +1 -0
- package/dist/app/web/routes/api/publish/drafts/+server.js +23 -0
- package/dist/app/web/routes/api/publish/drafts/+server.js.map +1 -0
- package/dist/app/web/routes/api/publish/drafts/[analysisId]/+server.d.ts +3 -0
- package/dist/app/web/routes/api/publish/drafts/[analysisId]/+server.d.ts.map +1 -0
- package/dist/app/web/routes/api/publish/drafts/[analysisId]/+server.js +31 -0
- package/dist/app/web/routes/api/publish/drafts/[analysisId]/+server.js.map +1 -0
- package/dist/app/web/routes/api/publish/drafts/generate/+server.d.ts +3 -0
- package/dist/app/web/routes/api/publish/drafts/generate/+server.d.ts.map +1 -0
- package/dist/app/web/routes/api/publish/drafts/generate/+server.js +37 -0
- package/dist/app/web/routes/api/publish/drafts/generate/+server.js.map +1 -0
- package/dist/app/web/routes/api/publish/thumbnails/+server.d.ts +3 -0
- package/dist/app/web/routes/api/publish/thumbnails/+server.d.ts.map +1 -0
- package/dist/app/web/routes/api/publish/thumbnails/+server.js +57 -0
- package/dist/app/web/routes/api/publish/thumbnails/+server.js.map +1 -0
- package/dist/app/web/routes/api/youtube/auth/callback/+server.d.ts +3 -0
- package/dist/app/web/routes/api/youtube/auth/callback/+server.d.ts.map +1 -0
- package/dist/app/web/routes/api/youtube/auth/callback/+server.js +49 -0
- package/dist/app/web/routes/api/youtube/auth/callback/+server.js.map +1 -0
- package/dist/app/web/routes/api/youtube/auth/disconnect/+server.d.ts +3 -0
- package/dist/app/web/routes/api/youtube/auth/disconnect/+server.d.ts.map +1 -0
- package/dist/app/web/routes/api/youtube/auth/disconnect/+server.js +16 -0
- package/dist/app/web/routes/api/youtube/auth/disconnect/+server.js.map +1 -0
- package/dist/app/web/routes/api/youtube/auth/manual/+server.d.ts +3 -0
- package/dist/app/web/routes/api/youtube/auth/manual/+server.d.ts.map +1 -0
- package/dist/app/web/routes/api/youtube/auth/manual/+server.js +23 -0
- package/dist/app/web/routes/api/youtube/auth/manual/+server.js.map +1 -0
- package/dist/app/web/routes/api/youtube/auth/start/+server.d.ts +3 -0
- package/dist/app/web/routes/api/youtube/auth/start/+server.d.ts.map +1 -0
- package/dist/app/web/routes/api/youtube/auth/start/+server.js +43 -0
- package/dist/app/web/routes/api/youtube/auth/start/+server.js.map +1 -0
- package/dist/app/web/routes/api/youtube/auth/status/+server.d.ts +3 -0
- package/dist/app/web/routes/api/youtube/auth/status/+server.d.ts.map +1 -0
- package/dist/app/web/routes/api/youtube/auth/status/+server.js +16 -0
- package/dist/app/web/routes/api/youtube/auth/status/+server.js.map +1 -0
- package/dist/app/web/routes/api/youtube/channels/[channelId]/videos/+server.d.ts +3 -0
- package/dist/app/web/routes/api/youtube/channels/[channelId]/videos/+server.d.ts.map +1 -0
- package/dist/app/web/routes/api/youtube/channels/[channelId]/videos/+server.js +28 -0
- package/dist/app/web/routes/api/youtube/channels/[channelId]/videos/+server.js.map +1 -0
- package/dist/app/web/routes/api/youtube/channels/resolve/+server.d.ts +3 -0
- package/dist/app/web/routes/api/youtube/channels/resolve/+server.d.ts.map +1 -0
- package/dist/app/web/routes/api/youtube/channels/resolve/+server.js +24 -0
- package/dist/app/web/routes/api/youtube/channels/resolve/+server.js.map +1 -0
- package/dist/app/web/routes/api/youtube/uploads/+server.d.ts +5 -0
- package/dist/app/web/routes/api/youtube/uploads/+server.d.ts.map +1 -0
- package/dist/app/web/routes/api/youtube/uploads/+server.js +113 -0
- package/dist/app/web/routes/api/youtube/uploads/+server.js.map +1 -0
- package/dist/app/web/routes/api/youtube/videos/[videoId]/+server.d.ts +3 -0
- package/dist/app/web/routes/api/youtube/videos/[videoId]/+server.d.ts.map +1 -0
- package/dist/app/web/routes/api/youtube/videos/[videoId]/+server.js +25 -0
- package/dist/app/web/routes/api/youtube/videos/[videoId]/+server.js.map +1 -0
- package/dist/app/web/routes/api/youtube/videos/[videoId]/transcript/+server.d.ts +3 -0
- package/dist/app/web/routes/api/youtube/videos/[videoId]/transcript/+server.d.ts.map +1 -0
- package/dist/app/web/routes/api/youtube/videos/[videoId]/transcript/+server.js +24 -0
- package/dist/app/web/routes/api/youtube/videos/[videoId]/transcript/+server.js.map +1 -0
- package/dist/app/web/routes/videos/[videoId]/analysis/[analysisId]/+layout.server.d.ts +13 -0
- package/dist/app/web/routes/videos/[videoId]/analysis/[analysisId]/+layout.server.d.ts.map +1 -0
- package/dist/app/web/routes/videos/[videoId]/analysis/[analysisId]/+layout.server.js +50 -0
- package/dist/app/web/routes/videos/[videoId]/analysis/[analysisId]/+layout.server.js.map +1 -0
- package/dist/app/web/types/activity.d.ts +24 -0
- package/dist/app/web/types/activity.d.ts.map +1 -0
- package/dist/app/web/types/activity.js +2 -0
- package/dist/app/web/types/activity.js.map +1 -0
- package/dist/app/web/types/analysis.d.ts +175 -0
- package/dist/app/web/types/analysis.d.ts.map +1 -0
- package/dist/app/web/types/analysis.js +84 -0
- package/dist/app/web/types/analysis.js.map +1 -0
- package/dist/app/web/types/componentProps.d.ts +225 -0
- package/dist/app/web/types/componentProps.d.ts.map +1 -0
- package/dist/app/web/types/componentProps.js +2 -0
- package/dist/app/web/types/componentProps.js.map +1 -0
- package/dist/app/web/types/publish.d.ts +295 -0
- package/dist/app/web/types/publish.d.ts.map +1 -0
- package/dist/app/web/types/publish.js +145 -0
- package/dist/app/web/types/publish.js.map +1 -0
- package/dist/app/web/types/upload.d.ts +23 -0
- package/dist/app/web/types/upload.d.ts.map +1 -0
- package/dist/app/web/types/upload.js +2 -0
- package/dist/app/web/types/upload.js.map +1 -0
- package/dist/app/web/types/web.d.ts +47 -0
- package/dist/app/web/types/web.d.ts.map +1 -0
- package/dist/app/web/types/web.js +9 -0
- package/dist/app/web/types/web.js.map +1 -0
- package/dist/app/web/types/workflow.d.ts +9 -0
- package/dist/app/web/types/workflow.d.ts.map +1 -0
- package/dist/app/web/types/workflow.js +2 -0
- package/dist/app/web/types/workflow.js.map +1 -0
- package/dist/app/web/types/youtube.d.ts +15 -0
- package/dist/app/web/types/youtube.d.ts.map +1 -0
- package/dist/app/web/types/youtube.js +12 -0
- package/dist/app/web/types/youtube.js.map +1 -0
- package/dist/app/web/widgets/settings/groupConfig.d.ts +4 -0
- package/dist/app/web/widgets/settings/groupConfig.d.ts.map +1 -0
- package/dist/app/web/widgets/settings/groupConfig.js +219 -0
- package/dist/app/web/widgets/settings/groupConfig.js.map +1 -0
- package/dist/hooks.server.d.ts +3 -0
- package/dist/hooks.server.d.ts.map +1 -0
- package/dist/hooks.server.js +11 -0
- package/dist/hooks.server.js.map +1 -0
- package/dist/lib/config/env.d.ts +7 -0
- package/dist/lib/config/env.d.ts.map +1 -0
- package/dist/lib/config/env.js +81 -0
- package/dist/lib/config/env.js.map +1 -0
- package/dist/lib/config/fileStore.d.ts +5 -0
- package/dist/lib/config/fileStore.d.ts.map +1 -0
- package/dist/lib/config/fileStore.js +34 -0
- package/dist/lib/config/fileStore.js.map +1 -0
- package/dist/lib/config/index.d.ts +4 -0
- package/dist/lib/config/index.d.ts.map +1 -0
- package/dist/lib/config/index.js +3 -0
- package/dist/lib/config/index.js.map +1 -0
- package/dist/lib/config/registry.d.ts +4 -0
- package/dist/lib/config/registry.d.ts.map +1 -0
- package/dist/lib/config/registry.js +148 -0
- package/dist/lib/config/registry.js.map +1 -0
- package/dist/lib/index.d.ts +58 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/index.js +52 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/pipeline/stages/clipExporter.d.ts +5 -0
- package/dist/lib/pipeline/stages/clipExporter.d.ts.map +1 -0
- package/dist/lib/pipeline/stages/clipExporter.js +30 -0
- package/dist/lib/pipeline/stages/clipExporter.js.map +1 -0
- package/dist/lib/pipeline/stages/segmentAnalyzer.d.ts +5 -0
- package/dist/lib/pipeline/stages/segmentAnalyzer.d.ts.map +1 -0
- package/dist/lib/pipeline/stages/segmentAnalyzer.js +44 -0
- package/dist/lib/pipeline/stages/segmentAnalyzer.js.map +1 -0
- package/dist/lib/pipeline/stages/segmentSelector.d.ts.map +1 -0
- package/dist/{pipeline → lib/pipeline}/stages/segmentSelector.js +4 -4
- package/dist/lib/pipeline/stages/segmentSelector.js.map +1 -0
- package/dist/lib/services/analysis/index.d.ts +9 -0
- package/dist/lib/services/analysis/index.d.ts.map +1 -0
- package/dist/lib/services/analysis/index.js +7 -0
- package/dist/lib/services/analysis/index.js.map +1 -0
- package/dist/lib/services/analysis/llm/LLMAnalyzer.d.ts +18 -0
- package/dist/lib/services/analysis/llm/LLMAnalyzer.d.ts.map +1 -0
- package/dist/lib/services/analysis/llm/LLMAnalyzer.js +68 -0
- package/dist/lib/services/analysis/llm/LLMAnalyzer.js.map +1 -0
- package/dist/lib/services/analysis/llm/index.d.ts +5 -0
- package/dist/lib/services/analysis/llm/index.d.ts.map +1 -0
- package/dist/lib/services/analysis/llm/index.js +197 -0
- package/dist/lib/services/analysis/llm/index.js.map +1 -0
- package/dist/{services/segmentRanker → lib/services/analysis/ranker}/index.d.ts +2 -2
- package/dist/lib/services/analysis/ranker/index.d.ts.map +1 -0
- package/dist/{services/segmentRanker → lib/services/analysis/ranker}/index.js +4 -5
- package/dist/lib/services/analysis/ranker/index.js.map +1 -0
- package/dist/lib/services/analysis/refiner/index.d.ts +5 -0
- package/dist/lib/services/analysis/refiner/index.d.ts.map +1 -0
- package/dist/lib/services/analysis/refiner/index.js +113 -0
- package/dist/lib/services/analysis/refiner/index.js.map +1 -0
- package/dist/{services/chunkBuilder → lib/services/analysis/transcript/chunker}/index.d.ts +1 -1
- package/dist/lib/services/analysis/transcript/chunker/index.d.ts.map +1 -0
- package/dist/lib/services/analysis/transcript/chunker/index.js.map +1 -0
- package/dist/{services/transcriptDetector/index.d.ts → lib/services/analysis/transcript/detector.d.ts} +8 -5
- package/dist/lib/services/analysis/transcript/detector.d.ts.map +1 -0
- package/dist/{services/transcriptDetector/index.js → lib/services/analysis/transcript/detector.js} +16 -11
- package/dist/lib/services/analysis/transcript/detector.js.map +1 -0
- package/dist/lib/services/analysis/transcript/index.d.ts +5 -0
- package/dist/lib/services/analysis/transcript/index.d.ts.map +1 -0
- package/dist/lib/services/analysis/transcript/index.js +4 -0
- package/dist/lib/services/analysis/transcript/index.js.map +1 -0
- package/dist/{services/audioAnalyzers → lib/services/audio/analyzer}/base.d.ts +2 -2
- package/dist/lib/services/audio/analyzer/base.d.ts.map +1 -0
- package/dist/{services/audioAnalyzers → lib/services/audio/analyzer}/base.js +1 -1
- package/dist/lib/services/audio/analyzer/base.js.map +1 -0
- package/dist/{services/audioAnalyzers → lib/services/audio/analyzer}/factory.d.ts +3 -2
- package/dist/lib/services/audio/analyzer/factory.d.ts.map +1 -0
- package/dist/{services/audioAnalyzers → lib/services/audio/analyzer}/factory.js +6 -6
- package/dist/lib/services/audio/analyzer/factory.js.map +1 -0
- package/dist/{services/audioAnalyzers → lib/services/audio/analyzer}/gemini.d.ts +4 -1
- package/dist/lib/services/audio/analyzer/gemini.d.ts.map +1 -0
- package/dist/{services/audioAnalyzers → lib/services/audio/analyzer}/gemini.js +12 -19
- package/dist/lib/services/audio/analyzer/gemini.js.map +1 -0
- package/dist/{services/audioAnalyzers → lib/services/audio/analyzer}/index.d.ts +1 -0
- package/dist/lib/services/audio/analyzer/index.d.ts.map +1 -0
- package/dist/lib/services/audio/analyzer/index.js.map +1 -0
- package/dist/lib/services/audio/analyzer/whisper.d.ts +10 -0
- package/dist/lib/services/audio/analyzer/whisper.d.ts.map +1 -0
- package/dist/{services/audioAnalyzers → lib/services/audio/analyzer}/whisper.js +11 -11
- package/dist/lib/services/audio/analyzer/whisper.js.map +1 -0
- package/dist/lib/services/audio/analyzer/yamnet.d.ts +9 -0
- package/dist/lib/services/audio/analyzer/yamnet.d.ts.map +1 -0
- package/dist/{services/audioAnalyzers → lib/services/audio/analyzer}/yamnet.js +8 -10
- package/dist/lib/services/audio/analyzer/yamnet.js.map +1 -0
- package/dist/lib/services/audio/index.d.ts +9 -0
- package/dist/lib/services/audio/index.d.ts.map +1 -0
- package/dist/lib/services/audio/index.js +7 -0
- package/dist/lib/services/audio/index.js.map +1 -0
- package/dist/{services/eventDetector/index.d.ts → lib/services/audio/processor/detector.d.ts} +3 -3
- package/dist/lib/services/audio/processor/detector.d.ts.map +1 -0
- package/dist/{services/eventDetector/index.js → lib/services/audio/processor/detector.js} +15 -5
- package/dist/lib/services/audio/processor/detector.js.map +1 -0
- package/dist/lib/services/audio/processor/slicer.d.ts +4 -0
- package/dist/lib/services/audio/processor/slicer.d.ts.map +1 -0
- package/dist/{services/audioDownloader/sliceAudio.js → lib/services/audio/processor/slicer.js} +8 -9
- package/dist/lib/services/audio/processor/slicer.js.map +1 -0
- package/dist/lib/services/audio/source/index.d.ts +3 -0
- package/dist/lib/services/audio/source/index.d.ts.map +1 -0
- package/dist/lib/services/audio/source/index.js +2 -0
- package/dist/lib/services/audio/source/index.js.map +1 -0
- package/dist/lib/services/audio/source/youtube.d.ts +4 -0
- package/dist/lib/services/audio/source/youtube.d.ts.map +1 -0
- package/dist/{services/audioDownloader/index.js → lib/services/audio/source/youtube.js} +39 -35
- package/dist/lib/services/audio/source/youtube.js.map +1 -0
- package/dist/{services/transcriptAnalyzers → lib/services/audio/transcriber}/base.d.ts +2 -2
- package/dist/lib/services/audio/transcriber/base.d.ts.map +1 -0
- package/dist/{services/transcriptAnalyzers → lib/services/audio/transcriber}/base.js +1 -1
- package/dist/lib/services/audio/transcriber/base.js.map +1 -0
- package/dist/{services/transcriptAnalyzers → lib/services/audio/transcriber}/factory.d.ts +4 -2
- package/dist/lib/services/audio/transcriber/factory.d.ts.map +1 -0
- package/dist/{services/transcriptAnalyzers → lib/services/audio/transcriber}/factory.js +6 -7
- package/dist/lib/services/audio/transcriber/factory.js.map +1 -0
- package/dist/{services/transcriptAnalyzers → lib/services/audio/transcriber}/gemini.d.ts +1 -1
- package/dist/lib/services/audio/transcriber/gemini.d.ts.map +1 -0
- package/dist/lib/services/audio/transcriber/gemini.js.map +1 -0
- package/dist/{services/transcriptAnalyzers → lib/services/audio/transcriber}/index.d.ts +1 -0
- package/dist/lib/services/audio/transcriber/index.d.ts.map +1 -0
- package/dist/lib/services/audio/transcriber/index.js.map +1 -0
- package/dist/{services/transcriptAnalyzers → lib/services/audio/transcriber}/whisper.d.ts +3 -1
- package/dist/lib/services/audio/transcriber/whisper.d.ts.map +1 -0
- package/dist/{services/transcriptAnalyzers → lib/services/audio/transcriber}/whisper.js +9 -10
- package/dist/lib/services/audio/transcriber/whisper.js.map +1 -0
- package/dist/lib/services/cache/backends/disabled.d.ts +20 -0
- package/dist/lib/services/cache/backends/disabled.d.ts.map +1 -0
- package/dist/{utils/cacheBackend.js → lib/services/cache/backends/disabled.js} +1 -1
- package/dist/lib/services/cache/backends/disabled.js.map +1 -0
- package/dist/{utils/fileCacheBackend.d.ts → lib/services/cache/backends/file.d.ts} +7 -4
- package/dist/lib/services/cache/backends/file.d.ts.map +1 -0
- package/dist/{utils/fileCacheBackend.js → lib/services/cache/backends/file.js} +18 -9
- package/dist/lib/services/cache/backends/file.js.map +1 -0
- package/dist/{utils/mongoCacheBackend.d.ts → lib/services/cache/backends/mongo.d.ts} +3 -3
- package/dist/lib/services/cache/backends/mongo.d.ts.map +1 -0
- package/dist/{utils/mongoCacheBackend.js → lib/services/cache/backends/mongo.js} +8 -8
- package/dist/lib/services/cache/backends/mongo.js.map +1 -0
- package/dist/{utils → lib/services/cache}/cache.d.ts +6 -5
- package/dist/lib/services/cache/cache.d.ts.map +1 -0
- package/dist/{utils → lib/services/cache}/cache.js +25 -4
- package/dist/lib/services/cache/cache.js.map +1 -0
- package/dist/{utils/cacheFactory.d.ts → lib/services/cache/factory.d.ts} +3 -3
- package/dist/lib/services/cache/factory.d.ts.map +1 -0
- package/dist/{utils/cacheFactory.js → lib/services/cache/factory.js} +6 -6
- package/dist/lib/services/cache/factory.js.map +1 -0
- package/dist/lib/services/cache/index.d.ts +4 -0
- package/dist/lib/services/cache/index.d.ts.map +1 -0
- package/dist/lib/services/cache/index.js +3 -0
- package/dist/lib/services/cache/index.js.map +1 -0
- package/dist/lib/services/cache/manifest.d.ts +6 -0
- package/dist/lib/services/cache/manifest.d.ts.map +1 -0
- package/dist/lib/services/cache/manifest.js +101 -0
- package/dist/lib/services/cache/manifest.js.map +1 -0
- package/dist/{services/clipGenerator → lib/services/video/clipper}/index.d.ts +16 -3
- package/dist/lib/services/video/clipper/index.d.ts.map +1 -0
- package/dist/lib/services/video/clipper/index.js +215 -0
- package/dist/lib/services/video/clipper/index.js.map +1 -0
- package/dist/lib/services/video/index.d.ts +13 -0
- package/dist/lib/services/video/index.d.ts.map +1 -0
- package/dist/lib/services/video/index.js +9 -0
- package/dist/lib/services/video/index.js.map +1 -0
- package/dist/lib/services/video/source/index.d.ts +8 -0
- package/dist/lib/services/video/source/index.d.ts.map +1 -0
- package/dist/lib/services/video/source/index.js +6 -0
- package/dist/lib/services/video/source/index.js.map +1 -0
- package/dist/lib/services/video/source/youtube/catalog.d.ts +12 -0
- package/dist/lib/services/video/source/youtube/catalog.d.ts.map +1 -0
- package/dist/lib/services/video/source/youtube/catalog.js +177 -0
- package/dist/lib/services/video/source/youtube/catalog.js.map +1 -0
- package/dist/{services/videoDownloader/index.d.ts → lib/services/video/source/youtube/downloader.d.ts} +6 -4
- package/dist/lib/services/video/source/youtube/downloader.d.ts.map +1 -0
- package/dist/lib/services/video/source/youtube/downloader.js +250 -0
- package/dist/lib/services/video/source/youtube/downloader.js.map +1 -0
- package/dist/lib/services/video/source/youtube/metadata.d.ts +14 -0
- package/dist/lib/services/video/source/youtube/metadata.d.ts.map +1 -0
- package/dist/{services/metadataExtractor/index.js → lib/services/video/source/youtube/metadata.js} +14 -18
- package/dist/lib/services/video/source/youtube/metadata.js.map +1 -0
- package/dist/{services/urlParser/index.d.ts → lib/services/video/source/youtube/parser.d.ts} +1 -1
- package/dist/lib/services/video/source/youtube/parser.d.ts.map +1 -0
- package/dist/{services/urlParser/index.js → lib/services/video/source/youtube/parser.js} +1 -1
- package/dist/lib/services/video/source/youtube/parser.js.map +1 -0
- package/dist/lib/services/video/source/youtube/subtitles.d.ts +32 -0
- package/dist/lib/services/video/source/youtube/subtitles.d.ts.map +1 -0
- package/dist/lib/services/video/source/youtube/subtitles.js +340 -0
- package/dist/lib/services/video/source/youtube/subtitles.js.map +1 -0
- package/dist/lib/types/analyzer.d.ts +55 -0
- package/dist/lib/types/analyzer.d.ts.map +1 -0
- package/dist/lib/types/analyzer.js +6 -0
- package/dist/lib/types/analyzer.js.map +1 -0
- package/dist/lib/types/audio.d.ts +54 -0
- package/dist/lib/types/audio.d.ts.map +1 -0
- package/dist/{types → lib/types}/audio.js +10 -0
- package/dist/lib/types/audio.js.map +1 -0
- package/dist/lib/types/cache.d.ts +41 -0
- package/dist/lib/types/cache.d.ts.map +1 -0
- package/dist/lib/types/cache.js.map +1 -0
- package/dist/lib/types/cli.d.ts.map +1 -0
- package/dist/lib/types/cli.js.map +1 -0
- package/dist/lib/types/config.d.ts +206 -0
- package/dist/lib/types/config.d.ts.map +1 -0
- package/dist/lib/types/config.js +487 -0
- package/dist/lib/types/config.js.map +1 -0
- package/dist/lib/types/downloader.d.ts +32 -0
- package/dist/lib/types/downloader.d.ts.map +1 -0
- package/dist/{types → lib/types}/downloader.js.map +1 -1
- package/dist/lib/types/factory.d.ts.map +1 -0
- package/dist/{types → lib/types}/factory.js.map +1 -1
- package/dist/lib/types/index.d.ts +22 -0
- package/dist/lib/types/index.d.ts.map +1 -0
- package/dist/{types → lib/types}/index.js +4 -2
- package/dist/lib/types/index.js.map +1 -0
- package/dist/lib/types/pipeline.d.ts +83 -0
- package/dist/lib/types/pipeline.d.ts.map +1 -0
- package/dist/{types → lib/types}/pipeline.js.map +1 -1
- package/dist/{types → lib/types}/segment.d.ts +1 -1
- package/dist/lib/types/segment.d.ts.map +1 -0
- package/dist/lib/types/segment.js.map +1 -0
- package/dist/lib/types/transcript.d.ts.map +1 -0
- package/dist/lib/types/transcript.js.map +1 -0
- package/dist/{types → lib/types}/video.d.ts +28 -1
- package/dist/lib/types/video.d.ts.map +1 -0
- package/dist/lib/types/video.js.map +1 -0
- package/dist/lib/types/youtube.d.ts +140 -0
- package/dist/lib/types/youtube.d.ts.map +1 -0
- package/dist/lib/types/youtube.js +43 -0
- package/dist/lib/types/youtube.js.map +1 -0
- package/dist/lib/utils/chunker.d.ts.map +1 -0
- package/dist/lib/utils/chunker.js.map +1 -0
- package/dist/lib/utils/format.d.ts.map +1 -0
- package/dist/lib/utils/format.js.map +1 -0
- package/dist/lib/utils/logger.d.ts +24 -0
- package/dist/lib/utils/logger.d.ts.map +1 -0
- package/dist/lib/utils/logger.js +83 -0
- package/dist/lib/utils/logger.js.map +1 -0
- package/dist/lib/utils/modelFactory.d.ts +4 -0
- package/dist/lib/utils/modelFactory.d.ts.map +1 -0
- package/dist/lib/utils/modelFactory.js +45 -0
- package/dist/lib/utils/modelFactory.js.map +1 -0
- package/dist/lib/utils/paths.d.ts.map +1 -0
- package/dist/lib/utils/paths.js.map +1 -0
- package/dist/lib/utils/pythonBin.d.ts.map +1 -0
- package/dist/{utils → lib/utils}/pythonBin.js +1 -1
- package/dist/lib/utils/pythonBin.js.map +1 -0
- package/dist/lib/utils/retryAsync.d.ts +19 -0
- package/dist/lib/utils/retryAsync.d.ts.map +1 -0
- package/dist/lib/utils/retryAsync.js +37 -0
- package/dist/lib/utils/retryAsync.js.map +1 -0
- package/package.json +36 -15
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js.map +0 -1
- package/dist/config/env.d.ts +0 -53
- package/dist/config/env.d.ts.map +0 -1
- package/dist/config/env.js +0 -15
- package/dist/config/env.js.map +0 -1
- package/dist/config/index.d.ts +0 -2
- package/dist/config/index.d.ts.map +0 -1
- package/dist/config/index.js +0 -2
- package/dist/config/index.js.map +0 -1
- package/dist/index.js +0 -37
- package/dist/index.js.map +0 -1
- package/dist/lib.d.ts +0 -17
- package/dist/lib.d.ts.map +0 -1
- package/dist/lib.js +0 -17
- package/dist/lib.js.map +0 -1
- package/dist/pipeline/dumper.d.ts.map +0 -1
- package/dist/pipeline/dumper.js.map +0 -1
- package/dist/pipeline/runner.d.ts.map +0 -1
- package/dist/pipeline/runner.js +0 -132
- package/dist/pipeline/runner.js.map +0 -1
- package/dist/pipeline/stages/audioProcessor.d.ts +0 -19
- package/dist/pipeline/stages/audioProcessor.d.ts.map +0 -1
- package/dist/pipeline/stages/audioProcessor.js +0 -74
- package/dist/pipeline/stages/audioProcessor.js.map +0 -1
- package/dist/pipeline/stages/clipExporter.d.ts +0 -14
- package/dist/pipeline/stages/clipExporter.d.ts.map +0 -1
- package/dist/pipeline/stages/clipExporter.js +0 -41
- package/dist/pipeline/stages/clipExporter.js.map +0 -1
- package/dist/pipeline/stages/segmentAnalyzer.d.ts +0 -26
- package/dist/pipeline/stages/segmentAnalyzer.d.ts.map +0 -1
- package/dist/pipeline/stages/segmentAnalyzer.js +0 -47
- package/dist/pipeline/stages/segmentAnalyzer.js.map +0 -1
- package/dist/pipeline/stages/segmentSelector.d.ts.map +0 -1
- package/dist/pipeline/stages/segmentSelector.js.map +0 -1
- package/dist/pipeline/stages/videoResolver.d.ts +0 -11
- package/dist/pipeline/stages/videoResolver.d.ts.map +0 -1
- package/dist/pipeline/stages/videoResolver.js +0 -32
- package/dist/pipeline/stages/videoResolver.js.map +0 -1
- package/dist/services/audioAnalyzers/base.d.ts.map +0 -1
- package/dist/services/audioAnalyzers/base.js.map +0 -1
- package/dist/services/audioAnalyzers/factory.d.ts.map +0 -1
- package/dist/services/audioAnalyzers/factory.js.map +0 -1
- package/dist/services/audioAnalyzers/gemini.d.ts.map +0 -1
- package/dist/services/audioAnalyzers/gemini.js.map +0 -1
- package/dist/services/audioAnalyzers/index.d.ts.map +0 -1
- package/dist/services/audioAnalyzers/index.js.map +0 -1
- package/dist/services/audioAnalyzers/whisper.d.ts +0 -13
- package/dist/services/audioAnalyzers/whisper.d.ts.map +0 -1
- package/dist/services/audioAnalyzers/whisper.js.map +0 -1
- package/dist/services/audioAnalyzers/yamnet.d.ts +0 -13
- package/dist/services/audioAnalyzers/yamnet.d.ts.map +0 -1
- package/dist/services/audioAnalyzers/yamnet.js.map +0 -1
- package/dist/services/audioDownloader/index.d.ts +0 -2
- package/dist/services/audioDownloader/index.d.ts.map +0 -1
- package/dist/services/audioDownloader/index.js.map +0 -1
- package/dist/services/audioDownloader/sliceAudio.d.ts +0 -2
- package/dist/services/audioDownloader/sliceAudio.d.ts.map +0 -1
- package/dist/services/audioDownloader/sliceAudio.js.map +0 -1
- package/dist/services/chunkBuilder/index.d.ts.map +0 -1
- package/dist/services/chunkBuilder/index.js.map +0 -1
- package/dist/services/clipGenerator/index.d.ts.map +0 -1
- package/dist/services/clipGenerator/index.js +0 -141
- package/dist/services/clipGenerator/index.js.map +0 -1
- package/dist/services/clipRefiner/index.d.ts +0 -10
- package/dist/services/clipRefiner/index.d.ts.map +0 -1
- package/dist/services/clipRefiner/index.js +0 -102
- package/dist/services/clipRefiner/index.js.map +0 -1
- package/dist/services/eventDetector/index.d.ts.map +0 -1
- package/dist/services/eventDetector/index.js.map +0 -1
- package/dist/services/llmAnalyzer/LLMAnalyzer.d.ts +0 -41
- package/dist/services/llmAnalyzer/LLMAnalyzer.d.ts.map +0 -1
- package/dist/services/llmAnalyzer/LLMAnalyzer.js +0 -62
- package/dist/services/llmAnalyzer/LLMAnalyzer.js.map +0 -1
- package/dist/services/llmAnalyzer/index.d.ts +0 -9
- package/dist/services/llmAnalyzer/index.d.ts.map +0 -1
- package/dist/services/llmAnalyzer/index.js +0 -172
- package/dist/services/llmAnalyzer/index.js.map +0 -1
- package/dist/services/metadataExtractor/index.d.ts +0 -12
- package/dist/services/metadataExtractor/index.d.ts.map +0 -1
- package/dist/services/metadataExtractor/index.js.map +0 -1
- package/dist/services/segmentRanker/index.d.ts.map +0 -1
- package/dist/services/segmentRanker/index.js.map +0 -1
- package/dist/services/transcriptAnalyzers/base.d.ts.map +0 -1
- package/dist/services/transcriptAnalyzers/base.js.map +0 -1
- package/dist/services/transcriptAnalyzers/factory.d.ts.map +0 -1
- package/dist/services/transcriptAnalyzers/factory.js.map +0 -1
- package/dist/services/transcriptAnalyzers/gemini.d.ts.map +0 -1
- package/dist/services/transcriptAnalyzers/gemini.js.map +0 -1
- package/dist/services/transcriptAnalyzers/index.d.ts.map +0 -1
- package/dist/services/transcriptAnalyzers/index.js.map +0 -1
- package/dist/services/transcriptAnalyzers/whisper.d.ts.map +0 -1
- package/dist/services/transcriptAnalyzers/whisper.js.map +0 -1
- package/dist/services/transcriptAnalyzers/ytdlp.d.ts +0 -26
- package/dist/services/transcriptAnalyzers/ytdlp.d.ts.map +0 -1
- package/dist/services/transcriptAnalyzers/ytdlp.js +0 -136
- package/dist/services/transcriptAnalyzers/ytdlp.js.map +0 -1
- package/dist/services/transcriptDetector/index.d.ts.map +0 -1
- package/dist/services/transcriptDetector/index.js.map +0 -1
- package/dist/services/urlParser/index.d.ts.map +0 -1
- package/dist/services/urlParser/index.js.map +0 -1
- package/dist/services/videoDownloader/index.d.ts.map +0 -1
- package/dist/services/videoDownloader/index.js +0 -198
- package/dist/services/videoDownloader/index.js.map +0 -1
- package/dist/types/analyzer.d.ts +0 -22
- package/dist/types/analyzer.d.ts.map +0 -1
- package/dist/types/analyzer.js +0 -2
- package/dist/types/analyzer.js.map +0 -1
- package/dist/types/audio.d.ts +0 -26
- package/dist/types/audio.d.ts.map +0 -1
- package/dist/types/audio.js.map +0 -1
- package/dist/types/cache.d.ts +0 -7
- package/dist/types/cache.d.ts.map +0 -1
- package/dist/types/cache.js.map +0 -1
- package/dist/types/cli.d.ts.map +0 -1
- package/dist/types/cli.js.map +0 -1
- package/dist/types/config.d.ts +0 -94
- package/dist/types/config.d.ts.map +0 -1
- package/dist/types/config.js +0 -140
- package/dist/types/config.js.map +0 -1
- package/dist/types/downloader.d.ts +0 -11
- package/dist/types/downloader.d.ts.map +0 -1
- package/dist/types/factory.d.ts.map +0 -1
- package/dist/types/index.d.ts +0 -18
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js.map +0 -1
- package/dist/types/pipeline.d.ts +0 -50
- package/dist/types/pipeline.d.ts.map +0 -1
- package/dist/types/segment.d.ts.map +0 -1
- package/dist/types/segment.js.map +0 -1
- package/dist/types/transcript.d.ts.map +0 -1
- package/dist/types/transcript.js.map +0 -1
- package/dist/types/video.d.ts.map +0 -1
- package/dist/types/video.js.map +0 -1
- package/dist/utils/cache.d.ts.map +0 -1
- package/dist/utils/cache.js.map +0 -1
- package/dist/utils/cacheBackend.d.ts +0 -40
- package/dist/utils/cacheBackend.d.ts.map +0 -1
- package/dist/utils/cacheBackend.js.map +0 -1
- package/dist/utils/cacheFactory.d.ts.map +0 -1
- package/dist/utils/cacheFactory.js.map +0 -1
- package/dist/utils/chunker.d.ts.map +0 -1
- package/dist/utils/chunker.js.map +0 -1
- package/dist/utils/fileCacheBackend.d.ts.map +0 -1
- package/dist/utils/fileCacheBackend.js.map +0 -1
- package/dist/utils/format.d.ts.map +0 -1
- package/dist/utils/format.js.map +0 -1
- package/dist/utils/logger.d.ts +0 -7
- package/dist/utils/logger.d.ts.map +0 -1
- package/dist/utils/logger.js +0 -27
- package/dist/utils/logger.js.map +0 -1
- package/dist/utils/modelFactory.d.ts +0 -14
- package/dist/utils/modelFactory.d.ts.map +0 -1
- package/dist/utils/modelFactory.js +0 -61
- package/dist/utils/modelFactory.js.map +0 -1
- package/dist/utils/mongoCacheBackend.d.ts.map +0 -1
- package/dist/utils/mongoCacheBackend.js.map +0 -1
- package/dist/utils/paths.d.ts.map +0 -1
- package/dist/utils/paths.js.map +0 -1
- package/dist/utils/pythonBin.d.ts.map +0 -1
- package/dist/utils/pythonBin.js.map +0 -1
- /package/dist/{index.d.ts → app/cli/index.d.ts} +0 -0
- /package/dist/{pipeline → lib/pipeline}/stages/segmentSelector.d.ts +0 -0
- /package/dist/{services/chunkBuilder → lib/services/analysis/transcript/chunker}/index.js +0 -0
- /package/dist/{services/audioAnalyzers → lib/services/audio/analyzer}/index.js +0 -0
- /package/dist/{services/transcriptAnalyzers → lib/services/audio/transcriber}/gemini.js +0 -0
- /package/dist/{services/transcriptAnalyzers → lib/services/audio/transcriber}/index.js +0 -0
- /package/dist/{types → lib/types}/cache.js +0 -0
- /package/dist/{types → lib/types}/cli.d.ts +0 -0
- /package/dist/{types → lib/types}/cli.js +0 -0
- /package/dist/{types → lib/types}/downloader.js +0 -0
- /package/dist/{types → lib/types}/factory.d.ts +0 -0
- /package/dist/{types → lib/types}/factory.js +0 -0
- /package/dist/{types → lib/types}/pipeline.js +0 -0
- /package/dist/{types → lib/types}/segment.js +0 -0
- /package/dist/{types → lib/types}/transcript.d.ts +0 -0
- /package/dist/{types → lib/types}/transcript.js +0 -0
- /package/dist/{types → lib/types}/video.js +0 -0
- /package/dist/{utils → lib/utils}/chunker.d.ts +0 -0
- /package/dist/{utils → lib/utils}/chunker.js +0 -0
- /package/dist/{utils → lib/utils}/format.d.ts +0 -0
- /package/dist/{utils → lib/utils}/format.js +0 -0
- /package/dist/{utils → lib/utils}/paths.d.ts +0 -0
- /package/dist/{utils → lib/utils}/paths.js +0 -0
- /package/dist/{utils → lib/utils}/pythonBin.d.ts +0 -0
package/README.md
CHANGED
|
@@ -152,11 +152,11 @@ Pre-commit hooks run automatically: formatting (Prettier), type-check, and tests
|
|
|
152
152
|
|
|
153
153
|
## Documentation
|
|
154
154
|
|
|
155
|
-
| Doc | Description
|
|
156
|
-
| ------------------------------------------------ |
|
|
157
|
-
| [docs/configuration.md](docs/configuration.md) | Full environment variable reference, provider setup, FFmpeg presets
|
|
158
|
-
| [docs/advanced-usage.md](docs/advanced-usage.md) | Advanced CLI examples, caching, pre-downloaded videos
|
|
159
|
-
| [docs/audio-sync.md](docs/audio-sync.md) | Audio/video sync troubleshooting and `TIMESTAMP_OFFSET_SECONDS` guide
|
|
160
|
-
| [docs/yt-downloader.md](docs/yt-downloader.md) | yt-dlp download modes
|
|
161
|
-
| [docs/free-models.md](docs/free-models.md) | Free models that work well with this tool
|
|
162
|
-
| [docs/plan.md](docs/plan.md) | Full architecture and pipeline design
|
|
155
|
+
| Doc | Description |
|
|
156
|
+
| ------------------------------------------------ | --------------------------------------------------------------------------------------------- |
|
|
157
|
+
| [docs/configuration.md](docs/configuration.md) | Full environment variable reference, provider setup, FFmpeg presets, yt-dlp cookie auth guide |
|
|
158
|
+
| [docs/advanced-usage.md](docs/advanced-usage.md) | Advanced CLI examples, caching, pre-downloaded videos |
|
|
159
|
+
| [docs/audio-sync.md](docs/audio-sync.md) | Audio/video sync troubleshooting and `TIMESTAMP_OFFSET_SECONDS` guide |
|
|
160
|
+
| [docs/yt-downloader.md](docs/yt-downloader.md) | yt-dlp download modes, transcript bot-detection errors, and cookie troubleshooting |
|
|
161
|
+
| [docs/free-models.md](docs/free-models.md) | Free models that work well with this tool |
|
|
162
|
+
| [docs/plan.md](docs/plan.md) | Full architecture and pipeline design |
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { CliArgs } from '
|
|
1
|
+
import type { CliArgs } from '../../lib/types/index.js';
|
|
2
2
|
export type { CliArgs };
|
|
3
3
|
export declare function parseArgs(argv: string[]): CliArgs;
|
|
4
4
|
export declare function printUsage(): void;
|
|
5
|
-
//# sourceMappingURL=
|
|
5
|
+
//# sourceMappingURL=args.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../../src/app/cli/args.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAEnD,YAAY,EAAE,OAAO,EAAE,CAAC;AAMxB,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAyIjD;AAMD,wBAAgB,UAAU,IAAI,IAAI,CA0CjC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { config } from '
|
|
2
|
-
import { log } from '
|
|
1
|
+
import { config } from '../../lib/config/index.js';
|
|
2
|
+
import { log } from '../../lib/utils/logger.js';
|
|
3
3
|
// ---------------------------------------------------------------------------
|
|
4
4
|
// Argument parser
|
|
5
5
|
// ---------------------------------------------------------------------------
|
|
@@ -32,20 +32,20 @@ export function parseArgs(argv) {
|
|
|
32
32
|
else if (arg === '--download-sections') {
|
|
33
33
|
const val = args[++i];
|
|
34
34
|
if (!val) {
|
|
35
|
-
log.error(`--download-sections requires a value: 'all' or a number (1, 2, 3, ...)`);
|
|
35
|
+
log.error('parseArgs', `--download-sections requires a value: 'all' or a number (1, 2, 3, ...)`);
|
|
36
36
|
process.exit(1);
|
|
37
37
|
}
|
|
38
38
|
if (val === 'all') {
|
|
39
39
|
result.downloadSections = 'all';
|
|
40
40
|
}
|
|
41
41
|
else if (val === 'segments') {
|
|
42
|
-
log.warn(`--download-sections segments is deprecated. Use a number like --download-sections 5 to download top 5 segments, or --download-sections all for full video.`);
|
|
42
|
+
log.warn('parseArgs', `--download-sections segments is deprecated. Use a number like --download-sections 5 to download top 5 segments, or --download-sections all for full video.`);
|
|
43
43
|
result.downloadSections = 'all';
|
|
44
44
|
}
|
|
45
45
|
else {
|
|
46
46
|
const num = Number(val);
|
|
47
47
|
if (isNaN(num) || !Number.isInteger(num) || num < 1) {
|
|
48
|
-
log.error(`--download-sections requires 'all' or a positive integer (1, 2, 3, ...)`);
|
|
48
|
+
log.error('parseArgs', `--download-sections requires 'all' or a positive integer (1, 2, 3, ...)`);
|
|
49
49
|
process.exit(1);
|
|
50
50
|
}
|
|
51
51
|
result.downloadSections = num;
|
|
@@ -55,7 +55,7 @@ export function parseArgs(argv) {
|
|
|
55
55
|
else if (arg === '--video-path') {
|
|
56
56
|
const val = args[++i];
|
|
57
57
|
if (!val) {
|
|
58
|
-
log.error(`--video-path requires a directory path`);
|
|
58
|
+
log.error('parseArgs', `--video-path requires a directory path`);
|
|
59
59
|
process.exit(1);
|
|
60
60
|
}
|
|
61
61
|
result.videoPath = val;
|
|
@@ -63,7 +63,7 @@ export function parseArgs(argv) {
|
|
|
63
63
|
else if (arg === '--local-video') {
|
|
64
64
|
const val = args[++i];
|
|
65
65
|
if (!val) {
|
|
66
|
-
log.error(`--local-video requires a file path`);
|
|
66
|
+
log.error('parseArgs', `--local-video requires a file path`);
|
|
67
67
|
process.exit(1);
|
|
68
68
|
}
|
|
69
69
|
result.localVideo = val;
|
|
@@ -75,7 +75,7 @@ export function parseArgs(argv) {
|
|
|
75
75
|
else if (arg === '--threshold') {
|
|
76
76
|
const val = Number(args[++i]);
|
|
77
77
|
if (isNaN(val)) {
|
|
78
|
-
log.error(`--threshold requires a numeric value`);
|
|
78
|
+
log.error('parseArgs', `--threshold requires a numeric value`);
|
|
79
79
|
process.exit(1);
|
|
80
80
|
}
|
|
81
81
|
result.threshold = val;
|
|
@@ -83,7 +83,7 @@ export function parseArgs(argv) {
|
|
|
83
83
|
else if (arg === '--top-n') {
|
|
84
84
|
const val = Number(args[++i]);
|
|
85
85
|
if (isNaN(val)) {
|
|
86
|
-
log.error(`--top-n requires a numeric value`);
|
|
86
|
+
log.error('parseArgs', `--top-n requires a numeric value`);
|
|
87
87
|
process.exit(1);
|
|
88
88
|
}
|
|
89
89
|
result.topN = val;
|
|
@@ -91,7 +91,7 @@ export function parseArgs(argv) {
|
|
|
91
91
|
else if (arg === '--max-duration') {
|
|
92
92
|
const val = Number(args[++i]);
|
|
93
93
|
if (isNaN(val)) {
|
|
94
|
-
log.error(`--max-duration requires a numeric value`);
|
|
94
|
+
log.error('parseArgs', `--max-duration requires a numeric value`);
|
|
95
95
|
process.exit(1);
|
|
96
96
|
}
|
|
97
97
|
result.maxDuration = val;
|
|
@@ -99,7 +99,7 @@ export function parseArgs(argv) {
|
|
|
99
99
|
else if (arg === '--max-chunks') {
|
|
100
100
|
const val = Number(args[++i]);
|
|
101
101
|
if (isNaN(val) || !Number.isInteger(val) || val < 1) {
|
|
102
|
-
log.error(`--max-chunks requires a positive integer`);
|
|
102
|
+
log.error('parseArgs', `--max-chunks requires a positive integer`);
|
|
103
103
|
process.exit(1);
|
|
104
104
|
}
|
|
105
105
|
result.maxChunks = val;
|
|
@@ -107,7 +107,7 @@ export function parseArgs(argv) {
|
|
|
107
107
|
else if (arg === '--max-parallel') {
|
|
108
108
|
const val = Number(args[++i]);
|
|
109
109
|
if (isNaN(val) || !Number.isInteger(val) || val < 1) {
|
|
110
|
-
log.error(`--max-parallel requires a positive integer`);
|
|
110
|
+
log.error('parseArgs', `--max-parallel requires a positive integer`);
|
|
111
111
|
process.exit(1);
|
|
112
112
|
}
|
|
113
113
|
result.maxParallel = val;
|
|
@@ -118,7 +118,7 @@ export function parseArgs(argv) {
|
|
|
118
118
|
else if (arg === '--game-profile') {
|
|
119
119
|
const val = args[++i];
|
|
120
120
|
if (!val) {
|
|
121
|
-
log.error(`--game-profile requires a value (valorant, fps, boss_fight, general)`);
|
|
121
|
+
log.error('parseArgs', `--game-profile requires a value (valorant, fps, boss_fight, general)`);
|
|
122
122
|
process.exit(1);
|
|
123
123
|
}
|
|
124
124
|
result.gameProfile = val;
|
|
@@ -126,7 +126,7 @@ export function parseArgs(argv) {
|
|
|
126
126
|
else if (arg === '--output-json') {
|
|
127
127
|
result.outputJson = args[++i];
|
|
128
128
|
if (!result.outputJson) {
|
|
129
|
-
log.error(`--output-json requires a file path`);
|
|
129
|
+
log.error('parseArgs', `--output-json requires a file path`);
|
|
130
130
|
process.exit(1);
|
|
131
131
|
}
|
|
132
132
|
}
|
|
@@ -134,7 +134,7 @@ export function parseArgs(argv) {
|
|
|
134
134
|
result.url = arg;
|
|
135
135
|
}
|
|
136
136
|
else {
|
|
137
|
-
log.error(`Unknown flag: ${arg}`);
|
|
137
|
+
log.error('parseArgs', `Unknown flag: ${arg}`);
|
|
138
138
|
printUsage();
|
|
139
139
|
process.exit(1);
|
|
140
140
|
}
|
|
@@ -185,4 +185,4 @@ Examples:
|
|
|
185
185
|
npm run start -- https://youtube.com/watch?v=dQw4w9WgXcQ --max-parallel 5
|
|
186
186
|
`.trim());
|
|
187
187
|
}
|
|
188
|
-
//# sourceMappingURL=
|
|
188
|
+
//# sourceMappingURL=args.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"args.js","sourceRoot":"","sources":["../../../src/app/cli/args.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/app/cli/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { log, generateRequestId } from '../../lib/utils/logger.js';
|
|
3
|
+
import { formatConfig } from '../../lib/utils/format.js';
|
|
4
|
+
import { config } from '../../lib/config/index.js';
|
|
5
|
+
import { parseArgs, printUsage } from './args.js';
|
|
6
|
+
import { runPipeline } from './pipeline/runner.js';
|
|
7
|
+
const cliRequestId = generateRequestId();
|
|
8
|
+
const args = parseArgs(process.argv);
|
|
9
|
+
if (args.help) {
|
|
10
|
+
printUsage();
|
|
11
|
+
process.exit(0);
|
|
12
|
+
}
|
|
13
|
+
if (!args.url) {
|
|
14
|
+
log.error('main', 'No YouTube URL provided.', cliRequestId);
|
|
15
|
+
printUsage();
|
|
16
|
+
process.exit(1);
|
|
17
|
+
}
|
|
18
|
+
if (args.localVideo && !args.clip) {
|
|
19
|
+
log.error('main', '--local-video requires --clip flag', cliRequestId);
|
|
20
|
+
printUsage();
|
|
21
|
+
process.exit(1);
|
|
22
|
+
}
|
|
23
|
+
if (args.localVideo && args.downloadSections) {
|
|
24
|
+
log.warn('main', '--download-sections is ignored when using --local-video (clipping all segments from --top-n)', cliRequestId);
|
|
25
|
+
}
|
|
26
|
+
log.info('main', `Starting video-clipper (model: ${config.LLM_MODEL})` +
|
|
27
|
+
(args.clip ? ' [--clip enabled]' : '') +
|
|
28
|
+
(args.localVideo ? ` [--local-video: ${args.localVideo}]` : '') +
|
|
29
|
+
(args.downloadSections !== undefined && args.downloadSections !== 'all'
|
|
30
|
+
? ` [--download-sections: ${args.downloadSections}]`
|
|
31
|
+
: '') +
|
|
32
|
+
(args.videoPath ? ` [--video-path: ${args.videoPath}]` : ''), cliRequestId);
|
|
33
|
+
log.info('main', `Config: ${formatConfig(config)}`, cliRequestId);
|
|
34
|
+
runPipeline(args, cliRequestId).catch((err) => {
|
|
35
|
+
log.error('main', err instanceof Error ? err.message : String(err), cliRequestId);
|
|
36
|
+
process.exit(1);
|
|
37
|
+
});
|
|
38
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/app/cli/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,MAAM,YAAY,GAAG,iBAAiB,EAAE,CAAC;AACzC,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAErC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,UAAU,EAAE,CAAC;IACb,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;IACd,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,0BAA0B,EAAE,YAAY,CAAC,CAAC;IAC5D,UAAU,EAAE,CAAC;IACb,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAClC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,oCAAoC,EAAE,YAAY,CAAC,CAAC;IACtE,UAAU,EAAE,CAAC;IACb,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC7C,GAAG,CAAC,IAAI,CACN,MAAM,EACN,8FAA8F,EAC9F,YAAY,CACb,CAAC;AACJ,CAAC;AAED,GAAG,CAAC,IAAI,CACN,MAAM,EACN,kCAAkC,MAAM,CAAC,SAAS,GAAG;IACnD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC;IACtC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,oBAAoB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/D,CAAC,IAAI,CAAC,gBAAgB,KAAK,SAAS,IAAI,IAAI,CAAC,gBAAgB,KAAK,KAAK;QACrE,CAAC,CAAC,0BAA0B,IAAI,CAAC,gBAAgB,GAAG;QACpD,CAAC,CAAC,EAAE,CAAC;IACP,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,mBAAmB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAC9D,YAAY,CACb,CAAC;AACF,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;AAElE,WAAW,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IAC5C,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC,CAAC;IAClF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dumper.d.ts","sourceRoot":"","sources":["../../../../src/app/cli/pipeline/dumper.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1E;;;GAGG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAa5F;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAazF"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { promises as fs } from 'fs';
|
|
2
2
|
import path from 'path';
|
|
3
|
-
import { config } from '
|
|
4
|
-
import { log } from '
|
|
3
|
+
import { config } from '../../../lib/config/index.js';
|
|
4
|
+
import { log } from '../../../lib/utils/logger.js';
|
|
5
5
|
/**
|
|
6
6
|
* Writes the raw normalized transcript lines to
|
|
7
7
|
* `{OUTPUT_DIR}/transcript/{videoId}.json`.
|
|
@@ -12,10 +12,10 @@ export async function dumpTranscript(videoId, lines) {
|
|
|
12
12
|
await fs.mkdir(dir, { recursive: true });
|
|
13
13
|
const filePath = path.join(dir, `${videoId}.json`);
|
|
14
14
|
await fs.writeFile(filePath, JSON.stringify(lines, null, 2), 'utf-8');
|
|
15
|
-
log.info(`Transcript dumped to ${filePath}`);
|
|
15
|
+
log.info('dumpTranscript', `Transcript dumped to ${filePath}`);
|
|
16
16
|
}
|
|
17
17
|
catch (err) {
|
|
18
|
-
log.warn(`Failed to dump transcript for ${videoId}: ${err instanceof Error ? err.message : String(err)}`);
|
|
18
|
+
log.warn('dumpTranscript', `Failed to dump transcript for ${videoId}: ${err instanceof Error ? err.message : String(err)}`);
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
21
|
/**
|
|
@@ -28,10 +28,10 @@ export async function dumpAnalysis(videoId, result) {
|
|
|
28
28
|
await fs.mkdir(dir, { recursive: true });
|
|
29
29
|
const filePath = path.join(dir, `${videoId}.json`);
|
|
30
30
|
await fs.writeFile(filePath, JSON.stringify(result, null, 2), 'utf-8');
|
|
31
|
-
log.info(`Analysis dumped to ${filePath}`);
|
|
31
|
+
log.info('dumpAnalysis', `Analysis dumped to ${filePath}`);
|
|
32
32
|
}
|
|
33
33
|
catch (err) {
|
|
34
|
-
log.warn(`Failed to dump analysis for ${videoId}: ${err instanceof Error ? err.message : String(err)}`);
|
|
34
|
+
log.warn('dumpAnalysis', `Failed to dump analysis for ${videoId}: ${err instanceof Error ? err.message : String(err)}`);
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
37
|
//# sourceMappingURL=dumper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dumper.js","sourceRoot":"","sources":["../../../../src/app/cli/pipeline/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,sBAAsB,CAAC;AAC9C,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAG3C;;;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,gBAAgB,EAAE,wBAAwB,QAAQ,EAAE,CAAC,CAAC;IACjE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,IAAI,CACN,gBAAgB,EAChB,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,cAAc,EAAE,sBAAsB,QAAQ,EAAE,CAAC,CAAC;IAC7D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,IAAI,CACN,cAAc,EACd,+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,4 +1,4 @@
|
|
|
1
|
-
import type { CliArgs } from '
|
|
1
|
+
import type { CliArgs } from '../../../lib/types/index.js';
|
|
2
2
|
/**
|
|
3
3
|
* Runs the full video-clipper pipeline for the given CLI arguments.
|
|
4
4
|
*
|
|
@@ -19,5 +19,5 @@ import type { CliArgs } from '../types/index.js';
|
|
|
19
19
|
* detection, individual clip failures) are logged as warnings and the pipeline
|
|
20
20
|
* continues.
|
|
21
21
|
*/
|
|
22
|
-
export declare function runPipeline(args: CliArgs): Promise<void>;
|
|
22
|
+
export declare function runPipeline(args: CliArgs, requestId: string): Promise<void>;
|
|
23
23
|
//# sourceMappingURL=runner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../../../src/app/cli/pipeline/runner.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,OAAO,EAAkB,MAAM,qBAAqB,CAAC;AAgBnE;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAyPjF"}
|
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
import { promises as fs } from 'fs';
|
|
2
|
+
import { config } from '../../../lib/config/index.js';
|
|
3
|
+
import { Cache, createCacheBackend } from '../../../lib/services/cache/index.js';
|
|
4
|
+
import { log } from '../../../lib/utils/logger.js';
|
|
5
|
+
import { getModel } from '../../../lib/utils/modelFactory.js';
|
|
6
|
+
import { dumpAnalysis, dumpTranscript } from './dumper.js';
|
|
7
|
+
import { resolveVideo } from './stages/videoResolver.js';
|
|
8
|
+
import { processAudio } from './stages/audioProcessor.js';
|
|
9
|
+
import { analyzeSegments, refineRankedSegments } from '../../../lib/pipeline/stages/segmentAnalyzer.js';
|
|
10
|
+
import { selectSegments } from '../../../lib/pipeline/stages/segmentSelector.js';
|
|
11
|
+
import { exportClips } from '../../../lib/pipeline/stages/clipExporter.js';
|
|
12
|
+
import { downloadAudio } from '../../../lib/services/audio/source/youtube.js';
|
|
13
|
+
async function outputResult(result, outputJsonPath, requestId) {
|
|
14
|
+
const json = JSON.stringify(result, null, 2);
|
|
15
|
+
if (outputJsonPath) {
|
|
16
|
+
await fs.writeFile(outputJsonPath, json, 'utf-8');
|
|
17
|
+
log.info('runPipeline', `Output written to ${outputJsonPath}`, requestId);
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
console.log('\n' + json);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Runs the full video-clipper pipeline for the given CLI arguments.
|
|
25
|
+
*
|
|
26
|
+
* Stage ordering:
|
|
27
|
+
* 1. resolveVideo — parse URL, extract video ID + metadata
|
|
28
|
+
* 2. downloadAudio — download WAV so Whisper/Gemini transcript providers can use it
|
|
29
|
+
* 3. processAudio — detect audio events per window (reuses downloaded WAV)
|
|
30
|
+
* 4a. analyzeSegments — fetch transcript + LLM pass 1 (informed by audio events)
|
|
31
|
+
* 5. selectSegments — merge signals, rank, threshold filter
|
|
32
|
+
* 4b. refineRankedSegments — LLM pass 2 to tighten clip boundaries
|
|
33
|
+
* 6. exportClips — download video + run ffmpeg (only if --clip)
|
|
34
|
+
*
|
|
35
|
+
* downloadAudio runs before analyzeSegments so that `audioPath` is available
|
|
36
|
+
* for Whisper/Gemini transcript providers. processAudio reuses the same WAV.
|
|
37
|
+
*
|
|
38
|
+
* Hard errors (invalid URL, transcript failure, all LLM chunks failed) are
|
|
39
|
+
* thrown so the caller can catch, log, and exit(1). Soft failures (audio
|
|
40
|
+
* detection, individual clip failures) are logged as warnings and the pipeline
|
|
41
|
+
* continues.
|
|
42
|
+
*/
|
|
43
|
+
export async function runPipeline(args, requestId) {
|
|
44
|
+
const threshold = args.threshold ?? config.SCORE_THRESHOLD;
|
|
45
|
+
const topN = args.topN ?? config.TOP_N_SEGMENTS;
|
|
46
|
+
const gameProfile = args.gameProfile ?? config.GAME_PROFILE;
|
|
47
|
+
const maxParallel = args.maxParallel ?? config.LLM_CONCURRENCY;
|
|
48
|
+
const cookies = {
|
|
49
|
+
cookiesFromBrowser: config.YT_DLP_COOKIES_FROM_BROWSER,
|
|
50
|
+
cookiesFile: config.YT_DLP_COOKIES_FILE,
|
|
51
|
+
quiet: config.YT_DLP_QUIET,
|
|
52
|
+
retryCount: config.YT_DLP_RETRY_COUNT,
|
|
53
|
+
segmentCookiesEnabled: config.YT_DLP_SEGMENT_COOKIES_ENABLED,
|
|
54
|
+
playerClient: config.YT_DLP_PLAYER_CLIENT,
|
|
55
|
+
noCheckCertificates: config.YT_DLP_NO_CHECK_CERTIFICATES,
|
|
56
|
+
forceIpv4: config.YT_DLP_FORCE_IPV4,
|
|
57
|
+
geoBypass: config.YT_DLP_GEO_BYPASS,
|
|
58
|
+
sleepRequests: config.YT_DLP_SLEEP_REQUESTS,
|
|
59
|
+
};
|
|
60
|
+
const audioDownloadConfig = {
|
|
61
|
+
...cookies,
|
|
62
|
+
ffmpegPath: config.FFMPEG_PATH,
|
|
63
|
+
};
|
|
64
|
+
const slicerConfig = {
|
|
65
|
+
ffmpegPath: config.FFMPEG_PATH,
|
|
66
|
+
ffprobePath: config.FFPROBE_PATH,
|
|
67
|
+
};
|
|
68
|
+
const clipperConfig = {
|
|
69
|
+
ffmpegPath: config.FFMPEG_PATH,
|
|
70
|
+
ffprobePath: config.FFPROBE_PATH,
|
|
71
|
+
timestampOffset: config.TIMESTAMP_OFFSET_SECONDS,
|
|
72
|
+
ffmpegPreset: config.FFMPEG_PRESET,
|
|
73
|
+
outputDir: config.OUTPUT_DIR,
|
|
74
|
+
};
|
|
75
|
+
const downloaderConfig = {
|
|
76
|
+
...cookies,
|
|
77
|
+
downloadDir: config.DOWNLOAD_DIR,
|
|
78
|
+
timestampOffset: config.TIMESTAMP_OFFSET_SECONDS,
|
|
79
|
+
llmConcurrency: config.LLM_CONCURRENCY,
|
|
80
|
+
};
|
|
81
|
+
const analyzerChainConfig = {
|
|
82
|
+
confidenceThreshold: config.AUDIO_CONFIDENCE_THRESHOLD,
|
|
83
|
+
whisperModel: config.AUDIO_WHISPER_MODEL,
|
|
84
|
+
gemini: {
|
|
85
|
+
apiKey: config.GOOGLE_GENERATIVE_AI_API_KEY,
|
|
86
|
+
model: config.AUDIO_GEMINI_MODEL,
|
|
87
|
+
extraInstructions: config.AUDIO_EXTRA_INSTRUCTIONS,
|
|
88
|
+
},
|
|
89
|
+
};
|
|
90
|
+
const transcriptChainConfig = {
|
|
91
|
+
...cookies,
|
|
92
|
+
whisperModel: config.AUDIO_WHISPER_MODEL,
|
|
93
|
+
};
|
|
94
|
+
const model = getModel(config.LLM_PROVIDER, config.LLM_MODEL, {
|
|
95
|
+
ZAI_API_KEY: config.ZAI_API_KEY,
|
|
96
|
+
OPENROUTER_API_KEY: config.OPENROUTER_API_KEY,
|
|
97
|
+
CUSTOM_OPENAI_BASE_URL: config.CUSTOM_OPENAI_BASE_URL,
|
|
98
|
+
CUSTOM_OPENAI_API_KEY: config.CUSTOM_OPENAI_API_KEY,
|
|
99
|
+
});
|
|
100
|
+
const backend = await createCacheBackend(config, args.noCache);
|
|
101
|
+
const cache = new Cache(backend);
|
|
102
|
+
try {
|
|
103
|
+
const { videoId, metadata } = await resolveVideo(args.url, args.maxDuration, cookies);
|
|
104
|
+
let audioPath = null;
|
|
105
|
+
const audioEnabled = config.AUDIO_DETECTION_ENABLED && !args.noAudio;
|
|
106
|
+
if (audioEnabled) {
|
|
107
|
+
try {
|
|
108
|
+
audioPath = await downloadAudio(videoId, `${config.OUTPUT_DIR}/audio`, audioDownloadConfig);
|
|
109
|
+
}
|
|
110
|
+
catch (err) {
|
|
111
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
112
|
+
log.warn('runPipeline', `Audio download failed — continuing without audio: ${message}`, requestId);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
const audioProcConfig = {
|
|
116
|
+
audioEnabled: config.AUDIO_DETECTION_ENABLED,
|
|
117
|
+
audioProvider: config.AUDIO_PROVIDER,
|
|
118
|
+
chunkLengthSec: config.CHUNK_LENGTH_SEC,
|
|
119
|
+
chunkOverlapSec: config.CHUNK_OVERLAP_SEC,
|
|
120
|
+
outputDir: config.OUTPUT_DIR,
|
|
121
|
+
audioDownloadConfig,
|
|
122
|
+
slicerConfig,
|
|
123
|
+
analyzerChainConfig,
|
|
124
|
+
};
|
|
125
|
+
const audioEvents = await processAudio(videoId, metadata.duration, cache, {
|
|
126
|
+
noAudio: args.noAudio,
|
|
127
|
+
gameProfile,
|
|
128
|
+
maxParallel,
|
|
129
|
+
audioPath,
|
|
130
|
+
}, audioProcConfig);
|
|
131
|
+
const callbacks = {
|
|
132
|
+
onChunkTextDelta: (chunkIndex, text) => {
|
|
133
|
+
process.stdout.write(text);
|
|
134
|
+
},
|
|
135
|
+
onChunkAnalyzed: (chunkIndex, evaluation) => {
|
|
136
|
+
if (evaluation.status === 'success') {
|
|
137
|
+
log.info('runPipeline', ` ✓ chunk ${chunkIndex}: interesting=${evaluation.interesting}, score=${evaluation.score}`, requestId);
|
|
138
|
+
}
|
|
139
|
+
},
|
|
140
|
+
onSegmentTextDelta: (rank, text) => {
|
|
141
|
+
process.stdout.write(text);
|
|
142
|
+
},
|
|
143
|
+
onSegmentRefined: (rank, segment) => {
|
|
144
|
+
log.info('runPipeline', ` ✓ segment rank=${rank}: ${segment.start.toFixed(1)}s–${segment.end.toFixed(1)}s`, requestId);
|
|
145
|
+
},
|
|
146
|
+
};
|
|
147
|
+
const { lines, microBlocks, chunkEvals } = await analyzeSegments(videoId, audioPath, audioEvents, cache, {
|
|
148
|
+
maxChunks: args.maxChunks,
|
|
149
|
+
maxParallel,
|
|
150
|
+
noCache: args.noCache,
|
|
151
|
+
transcriptProvider: config.TRANSCRIPT_PROVIDER,
|
|
152
|
+
transcriptChainConfig,
|
|
153
|
+
microBlockSec: config.MICRO_BLOCK_SEC,
|
|
154
|
+
chunkLengthSec: config.CHUNK_LENGTH_SEC,
|
|
155
|
+
chunkOverlapSec: config.CHUNK_OVERLAP_SEC,
|
|
156
|
+
model,
|
|
157
|
+
maxRetries: config.LLM_MAX_RETRIES,
|
|
158
|
+
systemPrompt: config.LLM_SYSTEM_PROMPT ?? DEFAULT_SYSTEM_PROMPT,
|
|
159
|
+
llmModel: config.LLM_MODEL,
|
|
160
|
+
requestId,
|
|
161
|
+
callbacks,
|
|
162
|
+
});
|
|
163
|
+
if (config.DUMP_OUTPUTS) {
|
|
164
|
+
await dumpTranscript(videoId, lines);
|
|
165
|
+
}
|
|
166
|
+
const rankedSegments = selectSegments(chunkEvals, audioEvents, {
|
|
167
|
+
threshold,
|
|
168
|
+
topN,
|
|
169
|
+
boostWindow: config.AUDIO_LLM_BOOST_WINDOW,
|
|
170
|
+
scoreBoost: config.AUDIO_LLM_SCORE_BOOST,
|
|
171
|
+
preRoll: config.AUDIO_CLIP_PRE_ROLL,
|
|
172
|
+
postRoll: config.AUDIO_CLIP_POST_ROLL,
|
|
173
|
+
});
|
|
174
|
+
const partialResult = {
|
|
175
|
+
video_id: videoId,
|
|
176
|
+
title: metadata.title,
|
|
177
|
+
duration: metadata.duration,
|
|
178
|
+
chunk_evaluations: chunkEvals,
|
|
179
|
+
segments: rankedSegments,
|
|
180
|
+
};
|
|
181
|
+
if (rankedSegments.length === 0) {
|
|
182
|
+
await outputResult(partialResult, args.outputJson, requestId);
|
|
183
|
+
if (config.DUMP_OUTPUTS)
|
|
184
|
+
await dumpAnalysis(videoId, partialResult);
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
187
|
+
const refinedSegments = await refineRankedSegments(rankedSegments, microBlocks, cache, {
|
|
188
|
+
maxParallel,
|
|
189
|
+
noCache: args.noCache,
|
|
190
|
+
maxRetries: config.LLM_MAX_RETRIES,
|
|
191
|
+
model,
|
|
192
|
+
requestId,
|
|
193
|
+
callbacks,
|
|
194
|
+
});
|
|
195
|
+
const result = {
|
|
196
|
+
video_id: videoId,
|
|
197
|
+
title: metadata.title,
|
|
198
|
+
duration: metadata.duration,
|
|
199
|
+
chunk_evaluations: chunkEvals,
|
|
200
|
+
segments: refinedSegments,
|
|
201
|
+
};
|
|
202
|
+
await outputResult(result, args.outputJson, requestId);
|
|
203
|
+
if (config.DUMP_OUTPUTS)
|
|
204
|
+
await dumpAnalysis(videoId, result);
|
|
205
|
+
log.info('runPipeline', 'Done.', requestId);
|
|
206
|
+
if (!args.clip) {
|
|
207
|
+
log.info('runPipeline', 'Tip: run with --clip to download the video and generate mp4 clips.', requestId);
|
|
208
|
+
return;
|
|
209
|
+
}
|
|
210
|
+
const exporterConfig = {
|
|
211
|
+
downloader: downloaderConfig,
|
|
212
|
+
clipper: clipperConfig,
|
|
213
|
+
downloadSectionsMode: config.DOWNLOAD_SECTIONS_MODE,
|
|
214
|
+
};
|
|
215
|
+
const clipPaths = await exportClips(videoId, refinedSegments, {
|
|
216
|
+
localVideo: args.localVideo,
|
|
217
|
+
downloadSections: args.downloadSections,
|
|
218
|
+
videoPath: args.videoPath,
|
|
219
|
+
clipConcurrency: config.CLIP_CONCURRENCY,
|
|
220
|
+
}, exporterConfig);
|
|
221
|
+
if (clipPaths.length === 0) {
|
|
222
|
+
log.warn('runPipeline', 'No clips were generated successfully.', requestId);
|
|
223
|
+
}
|
|
224
|
+
else {
|
|
225
|
+
log.info('runPipeline', `Done — ${clipPaths.length} clip${clipPaths.length !== 1 ? 's' : ''} saved:`, requestId);
|
|
226
|
+
for (const p of clipPaths) {
|
|
227
|
+
log.info('runPipeline', ` ${p}`, requestId);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
finally {
|
|
232
|
+
await cache.close();
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
const DEFAULT_SYSTEM_PROMPT = `You are an expert video editor analyzing a YouTube transcript segment.
|
|
236
|
+
|
|
237
|
+
Identify if this segment contains a potentially interesting moment worth clipping.
|
|
238
|
+
|
|
239
|
+
Interesting moments include:
|
|
240
|
+
- surprising insights or revelations
|
|
241
|
+
- strong or controversial opinions
|
|
242
|
+
- humor or entertaining storytelling
|
|
243
|
+
- emotional moments
|
|
244
|
+
- key explanations of important concepts
|
|
245
|
+
- "aha" moments or turning points
|
|
246
|
+
|
|
247
|
+
If audio events are listed in the segment, treat them as strong positive signals —
|
|
248
|
+
they indicate high-action or high-energy moments that are often clip-worthy.`;
|
|
249
|
+
//# sourceMappingURL=runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../../../src/app/cli/pipeline/runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Cache } from '../../../../lib/services/cache/index.js';
|
|
2
|
+
import type { AudioEvent, AudioProcessorOpts, AudioProcessorConfig } from '../../../../lib/types/index.js';
|
|
3
|
+
export declare function processAudio(videoId: string, duration: number, cache: Cache, opts: AudioProcessorOpts, procConfig: AudioProcessorConfig): Promise<AudioEvent[]>;
|
|
4
|
+
//# sourceMappingURL=audioProcessor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audioProcessor.d.ts","sourceRoot":"","sources":["../../../../../src/app/cli/pipeline/stages/audioProcessor.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAEhG,wBAAsB,YAAY,CAChC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,kBAAkB,EACxB,UAAU,EAAE,oBAAoB,GAC/B,OAAO,CAAC,UAAU,EAAE,CAAC,CAwGvB"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { promises as fs } from 'fs';
|
|
2
|
+
import pLimit from 'p-limit';
|
|
3
|
+
import { downloadAudio } from '../../../../lib/services/audio/source/youtube.js';
|
|
4
|
+
import { createAnalyzerChain } from '../../../../lib/services/audio/analyzer/index.js';
|
|
5
|
+
import { EventDetector } from '../../../../lib/services/audio/processor/detector.js';
|
|
6
|
+
import { sliceAudio } from '../../../../lib/services/audio/processor/slicer.js';
|
|
7
|
+
import { buildWindows } from '../../../../lib/utils/chunker.js';
|
|
8
|
+
import { log } from '../../../../lib/utils/logger.js';
|
|
9
|
+
export async function processAudio(videoId, duration, cache, opts, procConfig) {
|
|
10
|
+
const audioEnabled = procConfig.audioEnabled && !opts.noAudio;
|
|
11
|
+
if (!audioEnabled)
|
|
12
|
+
return [];
|
|
13
|
+
const cached = await cache.readAudioEvents(videoId, opts.gameProfile, procConfig.audioProvider);
|
|
14
|
+
if (cached) {
|
|
15
|
+
log.info('processAudio', `[cache hit] Audio events loaded from cache (${cached.length} events)`);
|
|
16
|
+
return cached;
|
|
17
|
+
}
|
|
18
|
+
try {
|
|
19
|
+
const audioPath = opts.audioPath ??
|
|
20
|
+
(await downloadAudio(videoId, `${procConfig.outputDir}/audio`, procConfig.audioDownloadConfig));
|
|
21
|
+
const chain = createAnalyzerChain(procConfig.audioProvider, procConfig.analyzerChainConfig);
|
|
22
|
+
const detector = new EventDetector(chain);
|
|
23
|
+
const providerNames = chain.map((a) => a.source).join(' → ');
|
|
24
|
+
log.info('processAudio', `Detecting audio events (chain: ${providerNames}, profile: ${opts.gameProfile}, max ${opts.maxParallel} parallel)...`);
|
|
25
|
+
const windows = buildWindows(duration, procConfig.chunkLengthSec, procConfig.chunkOverlapSec);
|
|
26
|
+
const limit = pLimit(opts.maxParallel);
|
|
27
|
+
const results = await Promise.allSettled(windows.map((window) => limit(async () => {
|
|
28
|
+
log.info('processAudio', ` Processing audio chunk ${window.start}s - ${window.end}s...`);
|
|
29
|
+
const cachedChunk = await cache.readAudioChunk(videoId, opts.gameProfile, procConfig.audioProvider, window.start, window.end);
|
|
30
|
+
if (cachedChunk) {
|
|
31
|
+
log.info('processAudio', ` [cache hit] Audio chunk ${window.start}s - ${window.end}s (${cachedChunk.length} events)`);
|
|
32
|
+
return cachedChunk;
|
|
33
|
+
}
|
|
34
|
+
const slicePath = await sliceAudio(audioPath, window.start, window.end - window.start, procConfig.outputDir, procConfig.slicerConfig);
|
|
35
|
+
const events = await detector.detect(slicePath, opts.gameProfile, window.start, window.end - window.start);
|
|
36
|
+
await fs.unlink(slicePath);
|
|
37
|
+
await cache.writeAudioChunk(videoId, opts.gameProfile, procConfig.audioProvider, window.start, window.end, events);
|
|
38
|
+
return events;
|
|
39
|
+
})));
|
|
40
|
+
const audioEvents = results
|
|
41
|
+
.flatMap((r, i) => {
|
|
42
|
+
if (r.status === 'fulfilled')
|
|
43
|
+
return r.value;
|
|
44
|
+
const w = windows[i];
|
|
45
|
+
log.warn('processAudio', ` Audio event detection failed for chunk ${w.start}s - ${w.end}s: ${String(r.reason)}`);
|
|
46
|
+
return [];
|
|
47
|
+
})
|
|
48
|
+
.sort((a, b) => a.time - b.time);
|
|
49
|
+
log.info('processAudio', `Audio event detection complete: ${audioEvents.length} events found`);
|
|
50
|
+
await cache.writeAudioEvents(videoId, opts.gameProfile, procConfig.audioProvider, audioEvents);
|
|
51
|
+
return audioEvents;
|
|
52
|
+
}
|
|
53
|
+
catch (err) {
|
|
54
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
55
|
+
log.warn('processAudio', `Audio event detection disabled due to error: ${message}`);
|
|
56
|
+
return [];
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=audioProcessor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audioProcessor.js","sourceRoot":"","sources":["../../../../../src/app/cli/pipeline/stages/audioProcessor.ts"],"names":[],"mappings":"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"}
|