@steipete/summarize-core 0.11.1 → 0.13.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.
Files changed (138) hide show
  1. package/dist/esm/content/bun.js +21 -0
  2. package/dist/esm/content/bun.js.map +1 -0
  3. package/dist/esm/content/direct-media.js +100 -0
  4. package/dist/esm/content/direct-media.js.map +1 -0
  5. package/dist/esm/content/index.js +2 -1
  6. package/dist/esm/content/index.js.map +1 -1
  7. package/dist/esm/content/link-preview/client.js +6 -0
  8. package/dist/esm/content/link-preview/client.js.map +1 -1
  9. package/dist/esm/content/link-preview/content/fetcher.js +19 -2
  10. package/dist/esm/content/link-preview/content/fetcher.js.map +1 -1
  11. package/dist/esm/content/link-preview/content/firecrawl.js.map +1 -1
  12. package/dist/esm/content/link-preview/content/html.js.map +1 -1
  13. package/dist/esm/content/link-preview/content/index.js +29 -12
  14. package/dist/esm/content/link-preview/content/index.js.map +1 -1
  15. package/dist/esm/content/link-preview/content/utils.js.map +1 -1
  16. package/dist/esm/content/link-preview/content/video.js +1 -1
  17. package/dist/esm/content/link-preview/content/video.js.map +1 -1
  18. package/dist/esm/content/local-file.js +58 -0
  19. package/dist/esm/content/local-file.js.map +1 -0
  20. package/dist/esm/content/transcript/index.js +2 -0
  21. package/dist/esm/content/transcript/index.js.map +1 -1
  22. package/dist/esm/content/transcript/providers/generic-direct-media.js +47 -0
  23. package/dist/esm/content/transcript/providers/generic-direct-media.js.map +1 -0
  24. package/dist/esm/content/transcript/providers/generic-embedded.js +126 -0
  25. package/dist/esm/content/transcript/providers/generic-embedded.js.map +1 -0
  26. package/dist/esm/content/transcript/providers/generic-twitter.js +78 -0
  27. package/dist/esm/content/transcript/providers/generic-twitter.js.map +1 -0
  28. package/dist/esm/content/transcript/providers/generic.js +12 -248
  29. package/dist/esm/content/transcript/providers/generic.js.map +1 -1
  30. package/dist/esm/content/transcript/providers/podcast/apple-flow.js.map +1 -1
  31. package/dist/esm/content/transcript/providers/podcast/media.js +9 -1
  32. package/dist/esm/content/transcript/providers/podcast/media.js.map +1 -1
  33. package/dist/esm/content/transcript/providers/podcast/provider-flow.js +157 -0
  34. package/dist/esm/content/transcript/providers/podcast/provider-flow.js.map +1 -0
  35. package/dist/esm/content/transcript/providers/podcast/rss-feed.js +123 -0
  36. package/dist/esm/content/transcript/providers/podcast/rss-feed.js.map +1 -0
  37. package/dist/esm/content/transcript/providers/podcast/rss-transcript.js +113 -0
  38. package/dist/esm/content/transcript/providers/podcast/rss-transcript.js.map +1 -0
  39. package/dist/esm/content/transcript/providers/podcast/rss.js +2 -226
  40. package/dist/esm/content/transcript/providers/podcast/rss.js.map +1 -1
  41. package/dist/esm/content/transcript/providers/podcast/spotify-flow.js.map +1 -1
  42. package/dist/esm/content/transcript/providers/podcast.js +26 -155
  43. package/dist/esm/content/transcript/providers/podcast.js.map +1 -1
  44. package/dist/esm/content/transcript/providers/transcription-capability.js +22 -0
  45. package/dist/esm/content/transcript/providers/transcription-capability.js.map +1 -0
  46. package/dist/esm/content/transcript/providers/transcription-start.js +43 -32
  47. package/dist/esm/content/transcript/providers/transcription-start.js.map +1 -1
  48. package/dist/esm/content/transcript/providers/youtube/api.js +3 -2
  49. package/dist/esm/content/transcript/providers/youtube/api.js.map +1 -1
  50. package/dist/esm/content/transcript/providers/youtube/captions-player.js +173 -0
  51. package/dist/esm/content/transcript/providers/youtube/captions-player.js.map +1 -0
  52. package/dist/esm/content/transcript/providers/youtube/captions-shared.js +8 -0
  53. package/dist/esm/content/transcript/providers/youtube/captions-shared.js.map +1 -0
  54. package/dist/esm/content/transcript/providers/youtube/captions-transcript.js +361 -0
  55. package/dist/esm/content/transcript/providers/youtube/captions-transcript.js.map +1 -0
  56. package/dist/esm/content/transcript/providers/youtube/captions.js +2 -557
  57. package/dist/esm/content/transcript/providers/youtube/captions.js.map +1 -1
  58. package/dist/esm/content/transcript/providers/youtube/provider-flow.js +217 -0
  59. package/dist/esm/content/transcript/providers/youtube/provider-flow.js.map +1 -0
  60. package/dist/esm/content/transcript/providers/youtube/yt-dlp.js +33 -9
  61. package/dist/esm/content/transcript/providers/youtube/yt-dlp.js.map +1 -1
  62. package/dist/esm/content/transcript/providers/youtube.js +42 -194
  63. package/dist/esm/content/transcript/providers/youtube.js.map +1 -1
  64. package/dist/esm/content/transcript/transcription-config.js +24 -4
  65. package/dist/esm/content/transcript/transcription-config.js.map +1 -1
  66. package/dist/esm/content/url.js +5 -33
  67. package/dist/esm/content/url.js.map +1 -1
  68. package/dist/esm/processes.js.map +1 -1
  69. package/dist/esm/prompts/format.js +6 -0
  70. package/dist/esm/prompts/format.js.map +1 -1
  71. package/dist/esm/prompts/link-summary.js +27 -3
  72. package/dist/esm/prompts/link-summary.js.map +1 -1
  73. package/dist/esm/transcription/onnx-cli.js.map +1 -1
  74. package/dist/esm/transcription/whisper/assemblyai.js +132 -0
  75. package/dist/esm/transcription/whisper/assemblyai.js.map +1 -0
  76. package/dist/esm/transcription/whisper/chunking.js +64 -0
  77. package/dist/esm/transcription/whisper/chunking.js.map +1 -0
  78. package/dist/esm/transcription/whisper/cloud-providers.js +69 -0
  79. package/dist/esm/transcription/whisper/cloud-providers.js.map +1 -0
  80. package/dist/esm/transcription/whisper/core.js +320 -390
  81. package/dist/esm/transcription/whisper/core.js.map +1 -1
  82. package/dist/esm/transcription/whisper/gemini.js +324 -0
  83. package/dist/esm/transcription/whisper/gemini.js.map +1 -0
  84. package/dist/esm/transcription/whisper/groq.js +62 -1
  85. package/dist/esm/transcription/whisper/groq.js.map +1 -1
  86. package/dist/esm/transcription/whisper/preferences.js +16 -0
  87. package/dist/esm/transcription/whisper/preferences.js.map +1 -0
  88. package/dist/esm/transcription/whisper/provider-setup.js +62 -0
  89. package/dist/esm/transcription/whisper/provider-setup.js.map +1 -0
  90. package/dist/esm/transcription/whisper/remote-provider-attempts.js +189 -0
  91. package/dist/esm/transcription/whisper/remote-provider-attempts.js.map +1 -0
  92. package/dist/esm/transcription/whisper/remote.js +220 -0
  93. package/dist/esm/transcription/whisper/remote.js.map +1 -0
  94. package/dist/esm/transcription/whisper/whisper-cpp.js +21 -18
  95. package/dist/esm/transcription/whisper/whisper-cpp.js.map +1 -1
  96. package/dist/types/content/bun.d.ts +6 -0
  97. package/dist/types/content/direct-media.d.ts +9 -0
  98. package/dist/types/content/index.d.ts +2 -1
  99. package/dist/types/content/link-preview/client.d.ts +3 -1
  100. package/dist/types/content/link-preview/content/fetcher.d.ts +1 -1
  101. package/dist/types/content/link-preview/content/html.d.ts +1 -1
  102. package/dist/types/content/link-preview/deps.d.ts +8 -2
  103. package/dist/types/content/link-preview/types.d.ts +1 -1
  104. package/dist/types/content/local-file.d.ts +16 -0
  105. package/dist/types/content/transcript/providers/generic-direct-media.d.ts +11 -0
  106. package/dist/types/content/transcript/providers/generic-embedded.d.ts +16 -0
  107. package/dist/types/content/transcript/providers/generic-twitter.d.ts +11 -0
  108. package/dist/types/content/transcript/providers/podcast/flow-context.d.ts +3 -0
  109. package/dist/types/content/transcript/providers/podcast/media.d.ts +4 -2
  110. package/dist/types/content/transcript/providers/podcast/provider-flow.d.ts +7 -0
  111. package/dist/types/content/transcript/providers/podcast/rss-feed.d.ts +15 -0
  112. package/dist/types/content/transcript/providers/podcast/rss-transcript.d.ts +12 -0
  113. package/dist/types/content/transcript/providers/podcast/rss.d.ts +2 -24
  114. package/dist/types/content/transcript/providers/transcription-capability.d.ts +18 -0
  115. package/dist/types/content/transcript/providers/transcription-start.d.ts +11 -3
  116. package/dist/types/content/transcript/providers/youtube/captions-player.d.ts +12 -0
  117. package/dist/types/content/transcript/providers/youtube/captions-shared.d.ts +42 -0
  118. package/dist/types/content/transcript/providers/youtube/captions-transcript.d.ts +4 -0
  119. package/dist/types/content/transcript/providers/youtube/captions.d.ts +2 -19
  120. package/dist/types/content/transcript/providers/youtube/provider-flow.d.ts +34 -0
  121. package/dist/types/content/transcript/providers/youtube/yt-dlp.d.ts +4 -2
  122. package/dist/types/content/transcript/transcription-config.d.ts +6 -0
  123. package/dist/types/content/transcript/types.d.ts +1 -0
  124. package/dist/types/content/url.d.ts +2 -3
  125. package/dist/types/prompts/format.d.ts +1 -0
  126. package/dist/types/prompts/link-summary.d.ts +2 -1
  127. package/dist/types/transcription/whisper/assemblyai.d.ts +17 -0
  128. package/dist/types/transcription/whisper/chunking.d.ts +11 -0
  129. package/dist/types/transcription/whisper/cloud-providers.d.ts +22 -0
  130. package/dist/types/transcription/whisper/core.d.ts +12 -14
  131. package/dist/types/transcription/whisper/gemini.d.ts +14 -0
  132. package/dist/types/transcription/whisper/preferences.d.ts +4 -0
  133. package/dist/types/transcription/whisper/provider-setup.d.ts +30 -0
  134. package/dist/types/transcription/whisper/remote-provider-attempts.d.ts +51 -0
  135. package/dist/types/transcription/whisper/remote.d.ts +51 -0
  136. package/dist/types/transcription/whisper/types.d.ts +1 -1
  137. package/dist/types/transcription/whisper/whisper-cpp.d.ts +4 -3
  138. package/package.json +14 -10
@@ -0,0 +1,217 @@
1
+ import { normalizeTranscriptText } from "../../normalize.js";
2
+ import { extractYouTubeVideoId } from "../../utils.js";
3
+ import { extractYoutubeiTranscriptConfig, fetchTranscriptFromTranscriptEndpoint } from "./api.js";
4
+ import { fetchTranscriptWithApify } from "./apify.js";
5
+ import { extractYoutubeDurationSeconds, fetchTranscriptFromCaptionTracks, fetchYoutubeDurationSecondsViaPlayer, } from "./captions.js";
6
+ import { fetchDurationSecondsWithYtDlp, fetchTranscriptWithYtDlp } from "./yt-dlp.js";
7
+ /**
8
+ * Check if a transcript is suspiciously short relative to the video duration.
9
+ * Returns true if the transcript appears truncated (less than 1 word per 3 seconds
10
+ * for videos longer than 3 minutes). This causes the provider flow to fall through
11
+ * to the next provider (e.g. yt-dlp audio transcription) instead of accepting
12
+ * a broken/truncated caption track.
13
+ */
14
+ function isTranscriptTruncated(text, durationMetadata) {
15
+ if (!durationMetadata)
16
+ return false;
17
+ const { durationSeconds } = durationMetadata;
18
+ if (durationSeconds < 180)
19
+ return false;
20
+ const wordCount = text.split(/\s+/).filter(Boolean).length;
21
+ const expectedMinWords = durationSeconds / 3;
22
+ return wordCount < expectedMinWords;
23
+ }
24
+ const YOUTUBE_BOOTSTRAP_PATTERN = /ytcfg\.set|ytInitialPlayerResponse/;
25
+ const WATCH_PAGE_HEADERS = {
26
+ "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0 Safari/537.36",
27
+ Accept: "text/html,application/xhtml+xml",
28
+ };
29
+ export async function loadYoutubeHtml(context, options) {
30
+ const { html: initialHtml, url } = context;
31
+ if (typeof initialHtml === "string" && YOUTUBE_BOOTSTRAP_PATTERN.test(initialHtml)) {
32
+ return initialHtml;
33
+ }
34
+ try {
35
+ const response = await options.fetch(url, { headers: WATCH_PAGE_HEADERS });
36
+ if (response.ok)
37
+ return await response.text();
38
+ }
39
+ catch {
40
+ // Ignore and fall back to the caller-provided HTML.
41
+ }
42
+ return initialHtml;
43
+ }
44
+ export function resolveEffectiveVideoId(context) {
45
+ const candidate = context.resourceKey ?? extractYouTubeVideoId(context.url);
46
+ return typeof candidate === "string" && candidate.trim().length > 0 ? candidate.trim() : null;
47
+ }
48
+ export async function resolveDurationMetadata(args) {
49
+ const { htmlText, effectiveVideoId, url, options } = args;
50
+ let durationSeconds = extractYoutubeDurationSeconds(htmlText);
51
+ if (!durationSeconds && effectiveVideoId) {
52
+ durationSeconds = await fetchYoutubeDurationSecondsViaPlayer(options.fetch, {
53
+ html: htmlText,
54
+ videoId: effectiveVideoId,
55
+ });
56
+ }
57
+ if (!durationSeconds && options.ytDlpPath) {
58
+ durationSeconds = await fetchDurationSecondsWithYtDlp({
59
+ ytDlpPath: options.ytDlpPath,
60
+ url,
61
+ });
62
+ }
63
+ return typeof durationSeconds === "number" &&
64
+ Number.isFinite(durationSeconds) &&
65
+ durationSeconds > 0
66
+ ? { durationSeconds }
67
+ : null;
68
+ }
69
+ export async function tryApifyTranscript(flow, hint) {
70
+ if (!flow.options.apifyApiToken)
71
+ return null;
72
+ flow.pushHint(hint);
73
+ flow.attemptedProviders.push("apify");
74
+ const transcript = await fetchTranscriptWithApify(flow.options.fetch, flow.options.apifyApiToken, flow.context.url);
75
+ if (!transcript)
76
+ return null;
77
+ return {
78
+ text: normalizeTranscriptText(transcript),
79
+ source: "apify",
80
+ metadata: { provider: "apify", ...(flow.durationMetadata ?? {}) },
81
+ attemptedProviders: flow.attemptedProviders,
82
+ };
83
+ }
84
+ export async function tryManualCaptionTranscript(flow) {
85
+ if (!flow.effectiveVideoId) {
86
+ return { text: null, source: null, attemptedProviders: flow.attemptedProviders };
87
+ }
88
+ flow.pushHint("YouTube: checking creator captions only (skipping auto-generated)");
89
+ flow.attemptedProviders.push("captionTracks");
90
+ const transcript = await fetchTranscriptFromCaptionTracks(flow.options.fetch, {
91
+ html: flow.htmlText,
92
+ originalUrl: flow.context.url,
93
+ videoId: flow.effectiveVideoId,
94
+ skipAutoGenerated: true,
95
+ });
96
+ if (!transcript?.text)
97
+ return null;
98
+ return {
99
+ text: normalizeTranscriptText(transcript.text),
100
+ source: "captionTracks",
101
+ segments: flow.options.transcriptTimestamps ? (transcript.segments ?? null) : null,
102
+ metadata: { provider: "captionTracks", manualOnly: true, ...(flow.durationMetadata ?? {}) },
103
+ attemptedProviders: flow.attemptedProviders,
104
+ };
105
+ }
106
+ export async function tryWebTranscript(flow) {
107
+ if (!flow.effectiveVideoId) {
108
+ return { text: null, source: null, attemptedProviders: flow.attemptedProviders };
109
+ }
110
+ flow.pushHint("YouTube: checking captions (youtubei)");
111
+ const config = extractYoutubeiTranscriptConfig(flow.htmlText);
112
+ if (config) {
113
+ flow.attemptedProviders.push("youtubei");
114
+ const transcript = await fetchTranscriptFromTranscriptEndpoint(flow.options.fetch, {
115
+ config,
116
+ originalUrl: flow.context.url,
117
+ });
118
+ if (transcript?.text) {
119
+ const normalized = normalizeTranscriptText(transcript.text);
120
+ if (isTranscriptTruncated(normalized, flow.durationMetadata)) {
121
+ flow.notes.push("youtubei transcript appears truncated; falling through to next provider");
122
+ }
123
+ else {
124
+ return {
125
+ text: normalized,
126
+ source: "youtubei",
127
+ segments: flow.options.transcriptTimestamps ? (transcript.segments ?? null) : null,
128
+ metadata: { provider: "youtubei", ...(flow.durationMetadata ?? {}) },
129
+ attemptedProviders: flow.attemptedProviders,
130
+ };
131
+ }
132
+ }
133
+ }
134
+ flow.pushHint(config
135
+ ? "YouTube: youtubei empty; checking caption tracks"
136
+ : "YouTube: youtubei unavailable; checking caption tracks");
137
+ flow.attemptedProviders.push("captionTracks");
138
+ const transcript = await fetchTranscriptFromCaptionTracks(flow.options.fetch, {
139
+ html: flow.htmlText,
140
+ originalUrl: flow.context.url,
141
+ videoId: flow.effectiveVideoId,
142
+ });
143
+ if (!transcript?.text)
144
+ return null;
145
+ const normalized = normalizeTranscriptText(transcript.text);
146
+ if (isTranscriptTruncated(normalized, flow.durationMetadata)) {
147
+ flow.notes.push("captionTracks transcript appears truncated; falling through to next provider");
148
+ return null;
149
+ }
150
+ return {
151
+ text: normalized,
152
+ source: "captionTracks",
153
+ segments: flow.options.transcriptTimestamps ? (transcript.segments ?? null) : null,
154
+ metadata: { provider: "captionTracks", ...(flow.durationMetadata ?? {}) },
155
+ attemptedProviders: flow.attemptedProviders,
156
+ };
157
+ }
158
+ export async function tryYtDlpTranscript(args) {
159
+ const { flow, mode } = args;
160
+ if (mode === "no-auto" && !flow.canRunYtDlp) {
161
+ throw new Error("--youtube no-auto requires yt-dlp and a transcription provider (whisper-cpp, GROQ_API_KEY, ASSEMBLYAI_API_KEY, GEMINI_API_KEY, OPENAI_API_KEY, or FAL_KEY) for fallback");
162
+ }
163
+ if (mode === "auto") {
164
+ flow.pushHint("YouTube: captions unavailable; falling back to yt-dlp audio");
165
+ }
166
+ else if (mode === "no-auto") {
167
+ flow.pushHint("YouTube: no creator captions; falling back to yt-dlp audio");
168
+ }
169
+ else {
170
+ flow.pushHint("YouTube: downloading audio (yt-dlp)");
171
+ }
172
+ flow.attemptedProviders.push("yt-dlp");
173
+ const ytdlpResult = await fetchTranscriptWithYtDlp({
174
+ ytDlpPath: flow.options.ytDlpPath,
175
+ transcription: flow.transcription,
176
+ mediaCache: flow.options.mediaCache ?? null,
177
+ url: flow.context.url,
178
+ onProgress: flow.options.onProgress ?? null,
179
+ mediaKind: "video",
180
+ });
181
+ if (ytdlpResult.notes.length > 0)
182
+ flow.notes.push(...ytdlpResult.notes);
183
+ if (ytdlpResult.text) {
184
+ return {
185
+ text: normalizeTranscriptText(ytdlpResult.text),
186
+ source: "yt-dlp",
187
+ metadata: {
188
+ provider: "yt-dlp",
189
+ transcriptionProvider: ytdlpResult.provider,
190
+ ...(flow.durationMetadata ?? {}),
191
+ },
192
+ attemptedProviders: flow.attemptedProviders,
193
+ notes: joinNotes(flow.notes),
194
+ };
195
+ }
196
+ if (mode === "yt-dlp" && ytdlpResult.error)
197
+ throw ytdlpResult.error;
198
+ return null;
199
+ }
200
+ export function buildUnavailableResult(flow) {
201
+ flow.attemptedProviders.push("unavailable");
202
+ return {
203
+ text: null,
204
+ source: "unavailable",
205
+ metadata: {
206
+ provider: "youtube",
207
+ reason: "no_transcript_available",
208
+ ...(flow.durationMetadata ?? {}),
209
+ },
210
+ attemptedProviders: flow.attemptedProviders,
211
+ notes: joinNotes(flow.notes),
212
+ };
213
+ }
214
+ function joinNotes(notes) {
215
+ return notes.length > 0 ? notes.join("; ") : null;
216
+ }
217
+ //# sourceMappingURL=provider-flow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-flow.js","sourceRoot":"","sources":["../../../../../../src/content/transcript/providers/youtube/provider-flow.ts"],"names":[],"mappings":"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"}
@@ -1,21 +1,25 @@
1
1
  import { randomUUID } from "node:crypto";
2
2
  import { promises as fs } from "node:fs";
3
3
  import { tmpdir } from "node:os";
4
- import { join } from "node:path";
4
+ import { basename, join } from "node:path";
5
5
  import { spawnTracked } from "../../../../processes.js";
6
6
  import { probeMediaDurationSecondsWithFfprobe, transcribeMediaFileWithWhisper, } from "../../../../transcription/whisper.js";
7
+ import { buildMissingTranscriptionProviderMessage } from "../../../../transcription/whisper/provider-setup.js";
7
8
  import { ProgressKind } from "../../../link-preview/deps.js";
9
+ import { resolveLocalDirectMediaSource } from "../../../local-file.js";
8
10
  import { resolveTranscriptionConfig, } from "../../transcription-config.js";
9
11
  import { resolveTranscriptionStartInfo } from "../transcription-start.js";
10
12
  const YT_DLP_TIMEOUT_MS = 300_000;
11
13
  const MAX_STDERR_BYTES = 8192;
12
14
  const DEFAULT_AUDIO_FORMAT = "bestaudio[vcodec=none]/best[height<=360]/best[height<=480]/best[height<=720]/best";
13
- export const fetchTranscriptWithYtDlp = async ({ ytDlpPath, transcription, env, groqApiKey, openaiApiKey, falApiKey, url, onProgress, service = "youtube", mediaKind = null, mediaCache = null, extraArgs, }) => {
15
+ export const fetchTranscriptWithYtDlp = async ({ ytDlpPath, transcription, env, groqApiKey, assemblyaiApiKey, geminiApiKey, openaiApiKey, falApiKey, url, onProgress, service = "youtube", mediaKind = null, mediaCache = null, extraArgs, }) => {
14
16
  const notes = [];
15
17
  const effectiveTranscription = resolveTranscriptionConfig({
16
18
  env,
17
19
  transcription,
18
20
  groqApiKey,
21
+ assemblyaiApiKey,
22
+ geminiApiKey,
19
23
  openaiApiKey,
20
24
  falApiKey,
21
25
  });
@@ -35,19 +39,28 @@ export const fetchTranscriptWithYtDlp = async ({ ytDlpPath, transcription, env,
35
39
  return {
36
40
  text: null,
37
41
  provider: null,
38
- error: new Error("No transcription providers available (install whisper-cpp or set GROQ_API_KEY, OPENAI_API_KEY, or FAL_KEY)"),
42
+ error: new Error(buildMissingTranscriptionProviderMessage()),
39
43
  notes,
40
44
  };
41
45
  }
42
46
  const progress = typeof onProgress === "function" ? onProgress : null;
43
47
  const providerHint = startInfo.providerHint;
44
48
  const modelId = startInfo.modelId;
45
- const cachedMedia = mediaCache ? await mediaCache.get({ url }) : null;
49
+ const localFileInput = resolveLocalDirectMediaSource(url, mediaKind);
50
+ const cachedMedia = localFileInput ? null : mediaCache ? await mediaCache.get({ url }) : null;
46
51
  const outputFile = join(tmpdir(), `summarize-${randomUUID()}.mp3`);
47
- let filePath = cachedMedia?.filePath ?? outputFile;
48
- let shouldCleanup = !cachedMedia?.filePath;
52
+ let filePath = localFileInput?.filePath ?? cachedMedia?.filePath ?? outputFile;
53
+ let mediaType = localFileInput?.mediaType ?? "audio/mpeg";
54
+ let filename = localFileInput?.filename ??
55
+ cachedMedia?.filename ??
56
+ (cachedMedia?.filePath ? basename(cachedMedia.filePath) : null) ??
57
+ "audio.mp3";
58
+ let shouldCleanup = !localFileInput?.filePath && !cachedMedia?.filePath;
49
59
  try {
50
- if (cachedMedia?.filePath) {
60
+ if (localFileInput) {
61
+ notes.push("local file input");
62
+ }
63
+ else if (cachedMedia?.filePath) {
51
64
  progress?.({
52
65
  kind: ProgressKind.TranscriptMediaDownloadStart,
53
66
  url,
@@ -122,9 +135,11 @@ export const fetchTranscriptWithYtDlp = async ({ ytDlpPath, transcription, env,
122
135
  });
123
136
  const result = await transcribeMediaFileWithWhisper({
124
137
  filePath,
125
- mediaType: "audio/mpeg",
126
- filename: "audio.mp3",
138
+ mediaType,
139
+ filename,
127
140
  groqApiKey: effectiveTranscription.groqApiKey,
141
+ assemblyaiApiKey: effectiveTranscription.assemblyaiApiKey,
142
+ geminiApiKey: effectiveTranscription.geminiApiKey,
128
143
  openaiApiKey: effectiveTranscription.openaiApiKey,
129
144
  falApiKey: effectiveTranscription.falApiKey,
130
145
  totalDurationSeconds: probedDurationSeconds,
@@ -146,6 +161,15 @@ export const fetchTranscriptWithYtDlp = async ({ ytDlpPath, transcription, env,
146
161
  return { text: result.text, provider: result.provider, error: result.error, notes };
147
162
  }
148
163
  catch (error) {
164
+ if (error instanceof Error &&
165
+ error.message.includes("unable to obtain file audio codec with ffprobe")) {
166
+ return {
167
+ text: "",
168
+ provider: null,
169
+ error: null,
170
+ notes: [...notes, "yt-dlp: Media has no audio stream"],
171
+ };
172
+ }
149
173
  return {
150
174
  text: null,
151
175
  provider: null,
@@ -1 +1 @@
1
- {"version":3,"file":"yt-dlp.js","sourceRoot":"","sources":["../../../../../../src/content/transcript/providers/youtube/yt-dlp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"yt-dlp.js","sourceRoot":"","sources":["../../../../../../src/content/transcript/providers/youtube/yt-dlp.ts"],"names":[],"mappings":"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"}