yt-dlp-bridge 0.1.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 (56) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +19 -0
  3. package/dist/argv.d.ts +18 -0
  4. package/dist/argv.d.ts.map +1 -0
  5. package/dist/argv.js +276 -0
  6. package/dist/argv.js.map +1 -0
  7. package/dist/config.d.ts +20 -0
  8. package/dist/config.d.ts.map +1 -0
  9. package/dist/config.js +36 -0
  10. package/dist/config.js.map +1 -0
  11. package/dist/environment.d.ts +27 -0
  12. package/dist/environment.d.ts.map +1 -0
  13. package/dist/environment.js +80 -0
  14. package/dist/environment.js.map +1 -0
  15. package/dist/errors.d.ts +3 -0
  16. package/dist/errors.d.ts.map +1 -0
  17. package/dist/errors.js +73 -0
  18. package/dist/errors.js.map +1 -0
  19. package/dist/filesystem.d.ts +23 -0
  20. package/dist/filesystem.d.ts.map +1 -0
  21. package/dist/filesystem.js +57 -0
  22. package/dist/filesystem.js.map +1 -0
  23. package/dist/generated/ytdlp-options.json +5513 -0
  24. package/dist/index.d.ts +13 -0
  25. package/dist/index.d.ts.map +1 -0
  26. package/dist/index.js +13 -0
  27. package/dist/index.js.map +1 -0
  28. package/dist/option-catalog.d.ts +34 -0
  29. package/dist/option-catalog.d.ts.map +1 -0
  30. package/dist/option-catalog.js +89 -0
  31. package/dist/option-catalog.js.map +1 -0
  32. package/dist/parsers.d.ts +11 -0
  33. package/dist/parsers.d.ts.map +1 -0
  34. package/dist/parsers.js +268 -0
  35. package/dist/parsers.js.map +1 -0
  36. package/dist/planner.d.ts +10 -0
  37. package/dist/planner.d.ts.map +1 -0
  38. package/dist/planner.js +233 -0
  39. package/dist/planner.js.map +1 -0
  40. package/dist/redaction.d.ts +4 -0
  41. package/dist/redaction.d.ts.map +1 -0
  42. package/dist/redaction.js +52 -0
  43. package/dist/redaction.js.map +1 -0
  44. package/dist/runner.d.ts +14 -0
  45. package/dist/runner.d.ts.map +1 -0
  46. package/dist/runner.js +78 -0
  47. package/dist/runner.js.map +1 -0
  48. package/dist/schemas.d.ts +818 -0
  49. package/dist/schemas.d.ts.map +1 -0
  50. package/dist/schemas.js +179 -0
  51. package/dist/schemas.js.map +1 -0
  52. package/dist/types.d.ts +163 -0
  53. package/dist/types.d.ts.map +1 -0
  54. package/dist/types.js +2 -0
  55. package/dist/types.js.map +1 -0
  56. package/package.json +65 -0
@@ -0,0 +1,13 @@
1
+ export * from "./argv.js";
2
+ export * from "./config.js";
3
+ export * from "./environment.js";
4
+ export * from "./errors.js";
5
+ export * from "./filesystem.js";
6
+ export * from "./option-catalog.js";
7
+ export * from "./parsers.js";
8
+ export * from "./planner.js";
9
+ export * from "./redaction.js";
10
+ export * from "./runner.js";
11
+ export * from "./schemas.js";
12
+ export * from "./types.js";
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,13 @@
1
+ export * from "./argv.js";
2
+ export * from "./config.js";
3
+ export * from "./environment.js";
4
+ export * from "./errors.js";
5
+ export * from "./filesystem.js";
6
+ export * from "./option-catalog.js";
7
+ export * from "./parsers.js";
8
+ export * from "./planner.js";
9
+ export * from "./redaction.js";
10
+ export * from "./runner.js";
11
+ export * from "./schemas.js";
12
+ export * from "./types.js";
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC"}
@@ -0,0 +1,34 @@
1
+ export interface UpstreamOptionDescriptor {
2
+ group: string;
3
+ shortOptions: string[];
4
+ longOptions: string[];
5
+ dest: string | null;
6
+ action: string | null;
7
+ type: string | null;
8
+ metavar: string | null;
9
+ default: unknown;
10
+ choices: string[];
11
+ takesValue: boolean;
12
+ help: string;
13
+ }
14
+ export interface UpstreamOptionCatalog {
15
+ source: string;
16
+ ytDlpVersion: string;
17
+ optionCount: number;
18
+ groups: {
19
+ title: string;
20
+ optionCount: number;
21
+ }[];
22
+ options: UpstreamOptionDescriptor[];
23
+ }
24
+ export interface OptionRiskMetadata {
25
+ phase: "inspect" | "plan" | "download" | "postprocess" | "expert";
26
+ dependencies: string[];
27
+ risk: "low" | "medium" | "high";
28
+ policy: "safe" | "path-gated" | "expert-only" | "blocked-in-expert";
29
+ }
30
+ export declare const UPSTREAM_OPTION_CATALOG: UpstreamOptionCatalog;
31
+ export declare function findOptionByFlag(flag: string): UpstreamOptionDescriptor | undefined;
32
+ export declare function listLongFlags(): string[];
33
+ export declare function optionMetadata(option: UpstreamOptionDescriptor): OptionRiskMetadata;
34
+ //# sourceMappingURL=option-catalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"option-catalog.d.ts","sourceRoot":"","sources":["../src/option-catalog.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACjD,OAAO,EAAE,wBAAwB,EAAE,CAAC;CACrC;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,SAAS,GAAG,MAAM,GAAG,UAAU,GAAG,aAAa,GAAG,QAAQ,CAAC;IAClE,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,IAAI,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IAChC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,aAAa,GAAG,mBAAmB,CAAC;CACrE;AAED,eAAO,MAAM,uBAAuB,EAAc,qBAAqB,CAAC;AAqBxE,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,wBAAwB,GAAG,SAAS,CAEnF;AAED,wBAAgB,aAAa,IAAI,MAAM,EAAE,CAExC;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,wBAAwB,GAAG,kBAAkB,CAWnF"}
@@ -0,0 +1,89 @@
1
+ import catalog from "./generated/ytdlp-options.json" with { type: "json" };
2
+ export const UPSTREAM_OPTION_CATALOG = catalog;
3
+ const HIGH_RISK_FLAGS = new Set([
4
+ "--exec",
5
+ "--downloader-args",
6
+ "--postprocessor-args",
7
+ "--use-postprocessor",
8
+ "--config-locations",
9
+ "--plugin-dirs",
10
+ "--enable-file-urls",
11
+ "--netrc-cmd",
12
+ "--print-traffic",
13
+ "--dump-pages",
14
+ "--write-pages",
15
+ "--force-overwrites",
16
+ "--rm-cache-dir"
17
+ ]);
18
+ const BLOCKED_FLAGS = new Set(["-U", "--update", "--update-to"]);
19
+ const PATH_GATED_FLAGS = new Set(["--paths", "-P", "--output", "-o", "--batch-file", "-a", "--download-archive", "--cookies", "--netrc-location", "--cache-dir", "--load-info-json", "--ffmpeg-location", "--client-certificate", "--client-certificate-key"]);
20
+ export function findOptionByFlag(flag) {
21
+ return UPSTREAM_OPTION_CATALOG.options.find((option) => option.shortOptions.includes(flag) || option.longOptions.includes(flag));
22
+ }
23
+ export function listLongFlags() {
24
+ return UPSTREAM_OPTION_CATALOG.options.flatMap((option) => option.longOptions).sort();
25
+ }
26
+ export function optionMetadata(option) {
27
+ const flags = [...option.shortOptions, ...option.longOptions];
28
+ const blocked = flags.some((flag) => BLOCKED_FLAGS.has(flag));
29
+ const highRisk = flags.some((flag) => HIGH_RISK_FLAGS.has(flag));
30
+ const pathGated = flags.some((flag) => PATH_GATED_FLAGS.has(flag));
31
+ return {
32
+ phase: phaseForGroup(option.group),
33
+ dependencies: dependenciesForFlags(flags),
34
+ risk: highRisk || blocked ? "high" : pathGated ? "medium" : "low",
35
+ policy: blocked ? "blocked-in-expert" : highRisk ? "expert-only" : pathGated ? "path-gated" : "safe"
36
+ };
37
+ }
38
+ function phaseForGroup(group) {
39
+ if (group === "Post-Processing Options" || group === "SponsorBlock Options")
40
+ return "postprocess";
41
+ if (group === "Download Options" || group === "Filesystem Options" || group === "Authentication Options")
42
+ return "download";
43
+ if (group === "Verbosity and Simulation Options" || group === "Thumbnail Options" || group === "Subtitle Options" || group === "Video Format Options")
44
+ return "inspect";
45
+ if (group === "General Options" && /config|plugin/i.test(group))
46
+ return "expert";
47
+ return "plan";
48
+ }
49
+ function dependenciesForFlags(flags) {
50
+ const deps = new Set();
51
+ for (const flag of flags) {
52
+ if (["--extract-audio", "--audio-format", "--audio-quality"].includes(flag)) {
53
+ deps.add("ffmpeg");
54
+ deps.add("ffprobe");
55
+ }
56
+ if ([
57
+ "--remux-video",
58
+ "--recode-video",
59
+ "--embed-subs",
60
+ "--embed-thumbnail",
61
+ "--embed-metadata",
62
+ "--embed-chapters",
63
+ "--embed-info-json",
64
+ "--concat-playlist",
65
+ "--fixup",
66
+ "--ffmpeg-location",
67
+ "--convert-subs",
68
+ "--convert-thumbnails",
69
+ "--split-chapters",
70
+ "--remove-chapters",
71
+ "--force-keyframes-at-cuts",
72
+ "--sponsorblock-remove",
73
+ "--merge-output-format",
74
+ "--download-sections"
75
+ ].includes(flag)) {
76
+ deps.add("ffmpeg");
77
+ }
78
+ if (flag === "--js-runtimes")
79
+ deps.add("deno|node|bun|quickjs");
80
+ if (flag === "--impersonate")
81
+ deps.add("curl_cffi");
82
+ if (flag === "--downloader")
83
+ deps.add("external-downloader");
84
+ if (flag === "--cookies-from-browser")
85
+ deps.add("browser");
86
+ }
87
+ return [...deps];
88
+ }
89
+ //# sourceMappingURL=option-catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"option-catalog.js","sourceRoot":"","sources":["../src/option-catalog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { FinalPathResult, FormatSummary, PaginationResult, ParsedJsonLines, ProgressEvent, SanitizedMetadataItem, SubtitleSummary, ThumbnailSummary } from "./types.js";
2
+ export declare function parseJsonLines<T = unknown>(output: string): ParsedJsonLines<T>;
3
+ export declare function sanitizeMetadataItems(items: unknown[], maxFormats?: number): SanitizedMetadataItem[];
4
+ export declare function sanitizeMetadataItem(item: unknown, maxFormats?: number): SanitizedMetadataItem;
5
+ export declare function paginate<T>(items: T[], offset: number, limit: number): PaginationResult<T>;
6
+ export declare function parseFormats(output: string): FormatSummary[];
7
+ export declare function parseSubtitles(output: string): SubtitleSummary[];
8
+ export declare function parseThumbnails(output: string): ThumbnailSummary[];
9
+ export declare function parseProgress(output: string): ProgressEvent[];
10
+ export declare function parseFinalPaths(stdout: string): FinalPathResult;
11
+ //# sourceMappingURL=parsers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parsers.d.ts","sourceRoot":"","sources":["../src/parsers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,aAAa,EAEb,qBAAqB,EACrB,eAAe,EACf,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAEpB,wBAAgB,cAAc,CAAC,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC,CAc9E;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,UAAU,SAAK,GAAG,qBAAqB,EAAE,CAEhG;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,SAAK,GAAG,qBAAqB,CA6C1F;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAe1F;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,EAAE,CAkB5D;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,EAAE,CAoChE;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAelE;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,EAAE,CAwB7D;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,CAkB/D"}
@@ -0,0 +1,268 @@
1
+ export function parseJsonLines(output) {
2
+ const rawLines = output.split(/\r?\n/).map((line) => line.trim()).filter(Boolean);
3
+ const items = [];
4
+ const parseErrors = [];
5
+ for (const line of rawLines) {
6
+ try {
7
+ items.push(JSON.parse(line));
8
+ }
9
+ catch (error) {
10
+ parseErrors.push({ line, message: error instanceof Error ? error.message : String(error) });
11
+ }
12
+ }
13
+ return { items, rawLines, parseErrors };
14
+ }
15
+ export function sanitizeMetadataItems(items, maxFormats = 25) {
16
+ return items.map((item) => sanitizeMetadataItem(item, maxFormats));
17
+ }
18
+ export function sanitizeMetadataItem(item, maxFormats = 25) {
19
+ const source = isRecord(item) ? item : {};
20
+ const formats = Array.isArray(source.formats) ? source.formats : [];
21
+ const thumbnails = Array.isArray(source.thumbnails) ? source.thumbnails : [];
22
+ const sanitized = {};
23
+ copyString(source, sanitized, "id", "id");
24
+ copyString(source, sanitized, "title", "title");
25
+ copyString(source, sanitized, "fulltitle", "fulltitle");
26
+ copyString(source, sanitized, "description", "description");
27
+ copyNumber(source, sanitized, "duration", "duration");
28
+ copyString(source, sanitized, "duration_string", "durationString");
29
+ copyString(source, sanitized, "uploader", "uploader");
30
+ copyString(source, sanitized, "uploader_id", "uploaderId");
31
+ copyString(source, sanitized, "channel", "channel");
32
+ copyString(source, sanitized, "channel_id", "channelId");
33
+ copyString(source, sanitized, "channel_url", "channelUrl");
34
+ copyString(source, sanitized, "webpage_url", "webpageUrl");
35
+ copyString(source, sanitized, "extractor", "extractor");
36
+ copyString(source, sanitized, "extractor_key", "extractorKey");
37
+ copyString(source, sanitized, "upload_date", "uploadDate");
38
+ copyNumber(source, sanitized, "timestamp", "timestamp");
39
+ copyString(source, sanitized, "availability", "availability");
40
+ copyString(source, sanitized, "live_status", "liveStatus");
41
+ copyNumber(source, sanitized, "age_limit", "ageLimit");
42
+ if (Array.isArray(source.categories))
43
+ sanitized.categories = source.categories.filter(isString);
44
+ if (Array.isArray(source.tags))
45
+ sanitized.tags = source.tags.filter(isString);
46
+ if (Array.isArray(source.chapters))
47
+ sanitized.chapters = source.chapters;
48
+ if (isRecord(source.subtitles)) {
49
+ sanitized.subtitleLanguages = Object.keys(source.subtitles).sort();
50
+ sanitized.subtitleCount = sanitized.subtitleLanguages.length;
51
+ }
52
+ if (isRecord(source.automatic_captions)) {
53
+ sanitized.automaticCaptionLanguages = Object.keys(source.automatic_captions).sort();
54
+ sanitized.automaticCaptionCount = sanitized.automaticCaptionLanguages.length;
55
+ }
56
+ if (thumbnails.length > 0)
57
+ sanitized.thumbnailCount = thumbnails.length;
58
+ if (formats.length > 0) {
59
+ sanitized.formatCount = formats.length;
60
+ sanitized.formats = formats.slice(0, maxFormats).map(sanitizeFormatSummary);
61
+ }
62
+ const selectedFormat = sanitizeFormatSummary(source);
63
+ if (Object.keys(selectedFormat).length > 0)
64
+ sanitized.selectedFormat = selectedFormat;
65
+ return sanitized;
66
+ }
67
+ export function paginate(items, offset, limit) {
68
+ const safeOffset = Math.max(0, offset);
69
+ const safeLimit = Math.max(1, limit);
70
+ const sliced = items.slice(safeOffset, safeOffset + safeLimit);
71
+ const nextOffset = safeOffset + sliced.length;
72
+ const result = {
73
+ total: items.length,
74
+ count: sliced.length,
75
+ offset: safeOffset,
76
+ limit: safeLimit,
77
+ hasMore: nextOffset < items.length,
78
+ items: sliced
79
+ };
80
+ if (result.hasMore)
81
+ result.nextOffset = nextOffset;
82
+ return result;
83
+ }
84
+ export function parseFormats(output) {
85
+ const lines = dataLines(output);
86
+ return lines.map((raw) => {
87
+ const columns = raw.trim().split(/\s+/);
88
+ const format = {
89
+ formatId: columns[0] ?? raw.trim(),
90
+ raw
91
+ };
92
+ if (columns[1])
93
+ format.extension = columns[1];
94
+ if (columns[2])
95
+ format.resolution = columns[2];
96
+ const fpsToken = columns.find((token) => /^\d+(?:\.\d+)?fps$/i.test(token));
97
+ if (fpsToken)
98
+ format.fps = Number.parseFloat(fpsToken);
99
+ const sizeToken = columns.find((token) => /^\d+(?:\.\d+)?(?:KiB|MiB|GiB|TiB|k|m|g)$/i.test(token));
100
+ if (sizeToken)
101
+ format.filesizeApprox = sizeToken;
102
+ const noteStart = raw.indexOf("|");
103
+ if (noteStart >= 0)
104
+ format.note = raw.slice(noteStart + 1).trim();
105
+ return format;
106
+ });
107
+ }
108
+ export function parseSubtitles(output) {
109
+ const results = [];
110
+ let source = "unknown";
111
+ for (const raw of output.split(/\r?\n/)) {
112
+ const line = raw.trim();
113
+ if (!line)
114
+ continue;
115
+ if (/available subtitles/i.test(line)) {
116
+ source = "manual";
117
+ continue;
118
+ }
119
+ if (/available automatic captions/i.test(line)) {
120
+ source = "automatic";
121
+ continue;
122
+ }
123
+ if (source === "unknown")
124
+ continue;
125
+ if (/^(language|[-\s]+$)/i.test(line))
126
+ continue;
127
+ const alignedColumns = /^[A-Za-z0-9][A-Za-z0-9_-]*(?:-[A-Za-z0-9]+)*\s{2,}/.test(line)
128
+ ? line.split(/\s{2,}|\t+/).map((part) => part.trim()).filter(Boolean)
129
+ : [];
130
+ const fallback = line.match(/^([A-Za-z0-9][A-Za-z0-9_-]*(?:-[A-Za-z0-9]+)*)\s+(.+?)\s+((?:vtt|srt|ttml|srv3|srv2|srv1|json3)(?:,\s*(?:vtt|srt|ttml|srv3|srv2|srv1|json3))*)$/i);
131
+ const columns = alignedColumns.length >= 2 ? alignedColumns : fallback ? [fallback[1] ?? "", fallback[2] ?? "", fallback[3] ?? ""] : [];
132
+ if (columns.length < 2)
133
+ continue;
134
+ const subtitle = {
135
+ language: columns[0] ?? line,
136
+ formats: splitFormats(columns.at(-1) ?? ""),
137
+ source,
138
+ raw
139
+ };
140
+ if (columns.length > 2 && columns[1])
141
+ subtitle.name = columns[1];
142
+ results.push(subtitle);
143
+ }
144
+ return results;
145
+ }
146
+ export function parseThumbnails(output) {
147
+ return dataLines(output).map((raw) => {
148
+ const columns = raw.trim().split(/\s+/);
149
+ const item = {
150
+ id: columns[0] ?? raw.trim(),
151
+ raw
152
+ };
153
+ const url = columns.find((token) => /^https?:\/\//i.test(token));
154
+ if (url)
155
+ item.url = url;
156
+ const resolution = columns.find((token) => /^\d+x\d+$/i.test(token));
157
+ if (resolution)
158
+ item.resolution = resolution;
159
+ const separatorIndex = raw.indexOf("|");
160
+ if (separatorIndex >= 0)
161
+ item.note = raw.slice(separatorIndex + 1).trim();
162
+ return item;
163
+ });
164
+ }
165
+ export function parseProgress(output) {
166
+ const events = [];
167
+ for (const raw of output.split(/\r?\n/)) {
168
+ const line = raw.trim();
169
+ if (!line)
170
+ continue;
171
+ const isDownload = /^\[download\]/i.test(line);
172
+ const isPostprocess = /^\[(?:ExtractAudio|Merger|VideoRemuxer|VideoConvertor|EmbedSubtitle|EmbedThumbnail|Metadata|SponsorBlock)\]/i.test(line);
173
+ if (!isDownload && !isPostprocess)
174
+ continue;
175
+ const percent = line.match(/(\d+(?:\.\d+)?)%/);
176
+ const total = line.match(/\bof\s+([^\s]+(?:\s+[^\s]+)?)/i);
177
+ const speed = line.match(/\bat\s+([^\s]+)/i);
178
+ const eta = line.match(/\bETA\s+([^\s]+)/i);
179
+ const event = {
180
+ phase: isDownload ? "download" : isPostprocess ? "postprocess" : "unknown",
181
+ raw
182
+ };
183
+ if (percent)
184
+ event.percent = Number.parseFloat(percent[1] ?? "0");
185
+ if (total?.[1])
186
+ event.total = total[1];
187
+ if (speed?.[1])
188
+ event.speed = speed[1];
189
+ if (eta?.[1])
190
+ event.eta = eta[1];
191
+ events.push(event);
192
+ }
193
+ return events;
194
+ }
195
+ export function parseFinalPaths(stdout) {
196
+ const stdoutLines = stdout.split(/\r?\n/).map((line) => line.trim()).filter(Boolean);
197
+ const paths = new Set();
198
+ for (const line of stdoutLines) {
199
+ if (!/^\[[^\]]+\]/.test(line) && !/^ERROR:/i.test(line)) {
200
+ paths.add(line);
201
+ continue;
202
+ }
203
+ const destination = line.match(/^\[download\]\s+Destination:\s+(.+)$/i);
204
+ if (destination?.[1])
205
+ paths.add(destination[1].trim());
206
+ const subtitle = line.match(/^\[info\]\s+Writing video subtitles to:\s+(.+)$/i);
207
+ if (subtitle?.[1])
208
+ paths.add(subtitle[1].trim());
209
+ const thumbnail = line.match(/^\[info\]\s+Writing video thumbnail(?:\s+\d+)?\s+to:\s+(.+)$/i);
210
+ if (thumbnail?.[1])
211
+ paths.add(thumbnail[1].trim());
212
+ const converted = line.match(/^\[(?:SubtitlesConvertor|ThumbnailsConvertor)\]\s+Converting .+? to (.+)$/i);
213
+ if (converted?.[1])
214
+ paths.add(converted[1].trim());
215
+ }
216
+ return { paths: Array.from(paths), stdoutLines };
217
+ }
218
+ function dataLines(output) {
219
+ return output
220
+ .split(/\r?\n/)
221
+ .map((line) => line.replace(/\s+$/, ""))
222
+ .filter((line) => {
223
+ const trimmed = line.trim();
224
+ return Boolean(trimmed) && !trimmed.startsWith("[") && !/^ID\s+/i.test(trimmed) && !/^-{2,}/.test(trimmed);
225
+ });
226
+ }
227
+ function splitFormats(value) {
228
+ return value.split(/,\s*|\s+/).map((part) => part.trim()).filter(Boolean);
229
+ }
230
+ function sanitizeFormatSummary(item) {
231
+ const source = isRecord(item) ? item : {};
232
+ const result = {};
233
+ copyString(source, result, "format_id", "formatId");
234
+ copyString(source, result, "ext", "extension");
235
+ copyString(source, result, "protocol", "protocol");
236
+ copyString(source, result, "resolution", "resolution");
237
+ copyNumber(source, result, "width", "width");
238
+ copyNumber(source, result, "height", "height");
239
+ copyNumber(source, result, "fps", "fps");
240
+ copyString(source, result, "acodec", "audioCodec");
241
+ copyString(source, result, "vcodec", "videoCodec");
242
+ copyNumber(source, result, "abr", "audioBitrate");
243
+ copyNumber(source, result, "vbr", "videoBitrate");
244
+ copyNumber(source, result, "tbr", "totalBitrate");
245
+ copyNumber(source, result, "filesize", "filesize");
246
+ copyNumber(source, result, "filesize_approx", "filesizeApprox");
247
+ copyString(source, result, "format_note", "formatNote");
248
+ copyString(source, result, "dynamic_range", "dynamicRange");
249
+ copyString(source, result, "language", "language");
250
+ return result;
251
+ }
252
+ function copyString(source, target, sourceKey, targetKey) {
253
+ const value = source[sourceKey];
254
+ if (typeof value === "string")
255
+ target[targetKey] = value;
256
+ }
257
+ function copyNumber(source, target, sourceKey, targetKey) {
258
+ const value = source[sourceKey];
259
+ if (typeof value === "number" && Number.isFinite(value))
260
+ target[targetKey] = value;
261
+ }
262
+ function isRecord(value) {
263
+ return typeof value === "object" && value !== null && !Array.isArray(value);
264
+ }
265
+ function isString(value) {
266
+ return typeof value === "string";
267
+ }
268
+ //# sourceMappingURL=parsers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parsers.js","sourceRoot":"","sources":["../src/parsers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { z } from "zod";
2
+ import { type ServerConfig } from "./config.js";
3
+ import { type PlanDownloadInputSchema, type PostprocessInputSchema } from "./schemas.js";
4
+ import type { DownloadPlan } from "./types.js";
5
+ type PlanDownloadInput = z.infer<typeof PlanDownloadInputSchema>;
6
+ type PostprocessInput = z.infer<typeof PostprocessInputSchema>;
7
+ export declare function planDownload(input: PlanDownloadInput, config?: ServerConfig): Promise<DownloadPlan>;
8
+ export declare function planPostprocess(input: PostprocessInput, config?: ServerConfig): Promise<Record<string, unknown>>;
9
+ export {};
10
+ //# sourceMappingURL=planner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planner.d.ts","sourceRoot":"","sources":["../src/planner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B,OAAO,EAAU,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAGxD,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,EAC5B,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAsB,YAAY,EAAE,MAAM,YAAY,CAAC;AAGnE,KAAK,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AACjE,KAAK,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAE/D,wBAAsB,YAAY,CAAC,KAAK,EAAE,iBAAiB,EAAE,MAAM,GAAE,YAAqB,GAAG,OAAO,CAAC,YAAY,CAAC,CAuCjH;AAED,wBAAsB,eAAe,CAAC,KAAK,EAAE,gBAAgB,EAAE,MAAM,GAAE,YAAqB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAkB9H"}