@mks2508/bundlp 0.1.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +614 -0
- package/dist/index.d.mts.map +1 -0
- package/dist/index.mjs +3072 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +18 -8
- package/dist/core/extractor.d.ts +0 -30
- package/dist/core/extractor.d.ts.map +0 -1
- package/dist/http/client.d.ts +0 -50
- package/dist/http/client.d.ts.map +0 -1
- package/dist/http/retry.d.ts +0 -22
- package/dist/http/retry.d.ts.map +0 -1
- package/dist/index.d.ts +0 -20
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -19021
- package/dist/innertube/client.d.ts +0 -62
- package/dist/innertube/client.d.ts.map +0 -1
- package/dist/player/ast/analyzer.d.ts +0 -16
- package/dist/player/ast/analyzer.d.ts.map +0 -1
- package/dist/player/ast/extractor.d.ts +0 -35
- package/dist/player/ast/extractor.d.ts.map +0 -1
- package/dist/player/ast/matchers.d.ts +0 -40
- package/dist/player/ast/matchers.d.ts.map +0 -1
- package/dist/player/cache.d.ts +0 -60
- package/dist/player/cache.d.ts.map +0 -1
- package/dist/player/player.d.ts +0 -49
- package/dist/player/player.d.ts.map +0 -1
- package/dist/po-token/botguard/challenge.d.ts +0 -22
- package/dist/po-token/botguard/challenge.d.ts.map +0 -1
- package/dist/po-token/botguard/client.d.ts +0 -25
- package/dist/po-token/botguard/client.d.ts.map +0 -1
- package/dist/po-token/cache/token-cache.d.ts +0 -24
- package/dist/po-token/cache/token-cache.d.ts.map +0 -1
- package/dist/po-token/index.d.ts +0 -14
- package/dist/po-token/index.d.ts.map +0 -1
- package/dist/po-token/manager.d.ts +0 -34
- package/dist/po-token/manager.d.ts.map +0 -1
- package/dist/po-token/minter/web-minter.d.ts +0 -20
- package/dist/po-token/minter/web-minter.d.ts.map +0 -1
- package/dist/po-token/policies.d.ts +0 -18
- package/dist/po-token/policies.d.ts.map +0 -1
- package/dist/po-token/providers/local.provider.d.ts +0 -26
- package/dist/po-token/providers/local.provider.d.ts.map +0 -1
- package/dist/po-token/providers/provider.interface.d.ts +0 -15
- package/dist/po-token/providers/provider.interface.d.ts.map +0 -1
- package/dist/po-token/types.d.ts +0 -160
- package/dist/po-token/types.d.ts.map +0 -1
- package/dist/result/index.d.ts +0 -6
- package/dist/result/index.d.ts.map +0 -1
- package/dist/result/result.types.d.ts +0 -14
- package/dist/result/result.types.d.ts.map +0 -1
- package/dist/result/result.utils.d.ts +0 -32
- package/dist/result/result.utils.d.ts.map +0 -1
- package/dist/streaming/dash/parser.d.ts +0 -37
- package/dist/streaming/dash/parser.d.ts.map +0 -1
- package/dist/streaming/dash/segments.d.ts +0 -58
- package/dist/streaming/dash/segments.d.ts.map +0 -1
- package/dist/streaming/decipher.d.ts +0 -24
- package/dist/streaming/decipher.d.ts.map +0 -1
- package/dist/streaming/drm.d.ts +0 -26
- package/dist/streaming/drm.d.ts.map +0 -1
- package/dist/streaming/formats.d.ts +0 -20
- package/dist/streaming/formats.d.ts.map +0 -1
- package/dist/streaming/hls/parser.d.ts +0 -10
- package/dist/streaming/hls/parser.d.ts.map +0 -1
- package/dist/streaming/hls/segments.d.ts +0 -37
- package/dist/streaming/hls/segments.d.ts.map +0 -1
- package/dist/streaming/processor.d.ts +0 -20
- package/dist/streaming/processor.d.ts.map +0 -1
- package/dist/types/error.types.d.ts +0 -12
- package/dist/types/error.types.d.ts.map +0 -1
- package/dist/types/index.d.ts +0 -8
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/innertube.types.d.ts +0 -155
- package/dist/types/innertube.types.d.ts.map +0 -1
- package/dist/types/player.types.d.ts +0 -30
- package/dist/types/player.types.d.ts.map +0 -1
- package/dist/types/video.types.d.ts +0 -112
- package/dist/types/video.types.d.ts.map +0 -1
- package/dist/utils/constants.d.ts +0 -129
- package/dist/utils/constants.d.ts.map +0 -1
- package/dist/utils/m3u8.d.ts +0 -31
- package/dist/utils/m3u8.d.ts.map +0 -1
- package/dist/utils/xml.d.ts +0 -41
- package/dist/utils/xml.d.ts.map +0 -1
- package/dist/validation/schemas.d.ts +0 -290
- package/dist/validation/schemas.d.ts.map +0 -1
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,614 @@
|
|
|
1
|
+
import * as _mks2508_better_logger0 from "@mks2508/better-logger";
|
|
2
|
+
|
|
3
|
+
//#region src/result/result.types.d.ts
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Result Pattern Types
|
|
7
|
+
* Functional error handling without exceptions
|
|
8
|
+
*/
|
|
9
|
+
interface ResultOk<T> {
|
|
10
|
+
readonly ok: true;
|
|
11
|
+
readonly value: T;
|
|
12
|
+
}
|
|
13
|
+
interface ResultErr<E> {
|
|
14
|
+
readonly ok: false;
|
|
15
|
+
readonly error: E;
|
|
16
|
+
}
|
|
17
|
+
type Result<T, E> = ResultOk<T> | ResultErr<E>;
|
|
18
|
+
//#endregion
|
|
19
|
+
//#region src/result/result.utils.d.ts
|
|
20
|
+
/** Create a successful result */
|
|
21
|
+
declare const ok: <T>(value: T) => ResultOk<T>;
|
|
22
|
+
/** Create an error result */
|
|
23
|
+
declare const err: <E>(error: E) => ResultErr<E>;
|
|
24
|
+
/** Type guard for successful result */
|
|
25
|
+
declare const isOk: <T, E>(result: Result<T, E>) => result is ResultOk<T>;
|
|
26
|
+
/** Type guard for error result */
|
|
27
|
+
declare const isErr: <T, E>(result: Result<T, E>) => result is ResultErr<E>;
|
|
28
|
+
/** Pattern match on a Result */
|
|
29
|
+
declare function match<T, E, U>(result: Result<T, E>, handlers: {
|
|
30
|
+
ok: (value: T) => U;
|
|
31
|
+
err: (error: E) => U;
|
|
32
|
+
}): U;
|
|
33
|
+
/** Map over a successful result */
|
|
34
|
+
declare function map<T, E, U>(result: Result<T, E>, fn: (value: T) => U): Result<U, E>;
|
|
35
|
+
/** Map over an error result */
|
|
36
|
+
declare function mapErr<T, E, F>(result: Result<T, E>, fn: (error: E) => F): Result<T, F>;
|
|
37
|
+
/** Chain Results (flatMap) */
|
|
38
|
+
declare function andThen<T, E, U>(result: Result<T, E>, fn: (value: T) => Result<U, E>): Result<U, E>;
|
|
39
|
+
/** Unwrap with default value */
|
|
40
|
+
declare function unwrapOr<T, E>(result: Result<T, E>, defaultValue: T): T;
|
|
41
|
+
/** Unwrap or throw */
|
|
42
|
+
declare function unwrap<T, E>(result: Result<T, E>): T;
|
|
43
|
+
/** Try to execute a function and wrap in Result */
|
|
44
|
+
declare function tryCatch<T, E = Error>(fn: () => T): Result<T, E>;
|
|
45
|
+
/** Try to execute an async function and wrap in Result */
|
|
46
|
+
declare function tryCatchAsync<T, E = Error>(fn: () => Promise<T>): Promise<Result<T, E>>;
|
|
47
|
+
//#endregion
|
|
48
|
+
//#region src/types/error.types.d.ts
|
|
49
|
+
/**
|
|
50
|
+
* Error Types for bundlp
|
|
51
|
+
*/
|
|
52
|
+
type ErrorCode = 'INVALID_URL' | 'INVALID_CLIENT' | 'VIDEO_NOT_FOUND' | 'VIDEO_UNAVAILABLE' | 'VIDEO_PRIVATE' | 'VIDEO_REGION_BLOCKED' | 'VIDEO_AGE_RESTRICTED' | 'VIDEO_DRM_PROTECTED' | 'LOGIN_REQUIRED' | 'RATE_LIMITED' | 'PO_TOKEN_REQUIRED' | 'PO_TOKEN_EXPIRED' | 'BOTGUARD_INIT_FAILED' | 'BOTGUARD_SNAPSHOT_FAILED' | 'INTEGRITY_TOKEN_FAILED' | 'ALL_PROVIDERS_FAILED' | 'CIPHER_FAILED' | 'PLAYER_FETCH_FAILED' | 'INNERTUBE_ERROR' | 'NETWORK_ERROR' | 'PARSE_ERROR' | 'CACHE_ERROR' | 'UNKNOWN_ERROR';
|
|
53
|
+
interface BundlpError {
|
|
54
|
+
code: ErrorCode;
|
|
55
|
+
message: string;
|
|
56
|
+
cause?: unknown;
|
|
57
|
+
recoverable?: boolean;
|
|
58
|
+
}
|
|
59
|
+
//#endregion
|
|
60
|
+
//#region src/types/video.types.d.ts
|
|
61
|
+
/**
|
|
62
|
+
* Video Types for bundlp
|
|
63
|
+
*/
|
|
64
|
+
interface VideoInfo {
|
|
65
|
+
id: string;
|
|
66
|
+
title: string;
|
|
67
|
+
description: string;
|
|
68
|
+
duration: number;
|
|
69
|
+
uploadDate?: string;
|
|
70
|
+
channel: ChannelInfo;
|
|
71
|
+
viewCount: number;
|
|
72
|
+
likeCount?: number;
|
|
73
|
+
thumbnails: Thumbnail[];
|
|
74
|
+
formats: FormatCollection;
|
|
75
|
+
subtitles: Map<string, Subtitle[]>;
|
|
76
|
+
chapters?: Chapter[];
|
|
77
|
+
isLive: boolean;
|
|
78
|
+
isPrivate: boolean;
|
|
79
|
+
}
|
|
80
|
+
interface ChannelInfo {
|
|
81
|
+
id: string;
|
|
82
|
+
name: string;
|
|
83
|
+
url: string;
|
|
84
|
+
}
|
|
85
|
+
interface Thumbnail {
|
|
86
|
+
url: string;
|
|
87
|
+
width: number;
|
|
88
|
+
height: number;
|
|
89
|
+
}
|
|
90
|
+
interface FormatCollection {
|
|
91
|
+
combined: Format[];
|
|
92
|
+
video: Format[];
|
|
93
|
+
audio: Format[];
|
|
94
|
+
hls?: HlsInfo;
|
|
95
|
+
dash?: DashInfo;
|
|
96
|
+
}
|
|
97
|
+
interface Format {
|
|
98
|
+
itag: number;
|
|
99
|
+
url: string;
|
|
100
|
+
mimeType: string;
|
|
101
|
+
codecs: string[];
|
|
102
|
+
bitrate?: number;
|
|
103
|
+
width?: number;
|
|
104
|
+
height?: number;
|
|
105
|
+
fps?: number;
|
|
106
|
+
qualityLabel?: string;
|
|
107
|
+
quality?: string;
|
|
108
|
+
audioQuality?: string;
|
|
109
|
+
audioSampleRate?: number;
|
|
110
|
+
audioChannels?: number;
|
|
111
|
+
contentLength?: number;
|
|
112
|
+
initRange?: {
|
|
113
|
+
start: string;
|
|
114
|
+
end: string;
|
|
115
|
+
};
|
|
116
|
+
indexRange?: {
|
|
117
|
+
start: string;
|
|
118
|
+
end: string;
|
|
119
|
+
};
|
|
120
|
+
approxDurationMs?: number;
|
|
121
|
+
targetDurationSec?: number;
|
|
122
|
+
hasDrm: boolean;
|
|
123
|
+
isAdaptive: boolean;
|
|
124
|
+
}
|
|
125
|
+
interface AudioFormat extends Format {
|
|
126
|
+
audioSampleRate: number;
|
|
127
|
+
audioChannels: number;
|
|
128
|
+
loudnessDb?: number;
|
|
129
|
+
}
|
|
130
|
+
interface VideoFormat extends Format {
|
|
131
|
+
width: number;
|
|
132
|
+
height: number;
|
|
133
|
+
fps: number;
|
|
134
|
+
qualityLabel: string;
|
|
135
|
+
}
|
|
136
|
+
interface HlsInfo {
|
|
137
|
+
manifestUrl: string;
|
|
138
|
+
variants: HlsVariant[];
|
|
139
|
+
}
|
|
140
|
+
interface HlsVariant {
|
|
141
|
+
url: string;
|
|
142
|
+
bandwidth: number;
|
|
143
|
+
resolution?: string;
|
|
144
|
+
codecs?: string;
|
|
145
|
+
}
|
|
146
|
+
interface DashInfo {
|
|
147
|
+
manifestUrl: string;
|
|
148
|
+
duration: number;
|
|
149
|
+
}
|
|
150
|
+
interface Subtitle {
|
|
151
|
+
url: string;
|
|
152
|
+
language: string;
|
|
153
|
+
languageName: string;
|
|
154
|
+
isAutoGenerated: boolean;
|
|
155
|
+
format: 'vtt' | 'ttml' | 'srv1' | 'srv2' | 'srv3' | 'json3';
|
|
156
|
+
}
|
|
157
|
+
interface Chapter {
|
|
158
|
+
title: string;
|
|
159
|
+
startTime: number;
|
|
160
|
+
endTime: number;
|
|
161
|
+
thumbnail?: Thumbnail;
|
|
162
|
+
}
|
|
163
|
+
interface Storyboard {
|
|
164
|
+
templateUrl: string;
|
|
165
|
+
width: number;
|
|
166
|
+
height: number;
|
|
167
|
+
count: number;
|
|
168
|
+
interval: number;
|
|
169
|
+
columns: number;
|
|
170
|
+
rows: number;
|
|
171
|
+
}
|
|
172
|
+
//#endregion
|
|
173
|
+
//#region src/types/innertube.types.d.ts
|
|
174
|
+
/**
|
|
175
|
+
* InnerTube API Types
|
|
176
|
+
*/
|
|
177
|
+
type ClientName = 'WEB' | 'WEB_REMIX' | 'WEB_EMBEDDED_PLAYER' | 'WEB_KIDS' | 'ANDROID' | 'ANDROID_MUSIC' | 'iOS' | 'TVHTML5' | 'MWEB';
|
|
178
|
+
interface ClientConfig {
|
|
179
|
+
name: ClientName;
|
|
180
|
+
version: string;
|
|
181
|
+
clientId: string;
|
|
182
|
+
apiKey?: string;
|
|
183
|
+
userAgent: string;
|
|
184
|
+
platform?: string;
|
|
185
|
+
sdkVersion?: number;
|
|
186
|
+
deviceModel?: string;
|
|
187
|
+
osName?: string;
|
|
188
|
+
osVersion?: string;
|
|
189
|
+
}
|
|
190
|
+
interface InnerTubeContext {
|
|
191
|
+
client: {
|
|
192
|
+
clientName: string;
|
|
193
|
+
clientVersion: string;
|
|
194
|
+
hl?: string;
|
|
195
|
+
gl?: string;
|
|
196
|
+
visitorData?: string;
|
|
197
|
+
userAgent?: string;
|
|
198
|
+
platform?: string;
|
|
199
|
+
clientFormFactor?: string;
|
|
200
|
+
clientScreen?: string;
|
|
201
|
+
androidSdkVersion?: number;
|
|
202
|
+
deviceModel?: string;
|
|
203
|
+
osName?: string;
|
|
204
|
+
osVersion?: string;
|
|
205
|
+
};
|
|
206
|
+
user?: {
|
|
207
|
+
lockedSafetyMode: boolean;
|
|
208
|
+
};
|
|
209
|
+
request?: {
|
|
210
|
+
useSsl: boolean;
|
|
211
|
+
internalExperimentFlags?: unknown[];
|
|
212
|
+
};
|
|
213
|
+
thirdParty?: {
|
|
214
|
+
embedUrl: string;
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
interface PlayerResponse {
|
|
218
|
+
playabilityStatus: PlayabilityStatus;
|
|
219
|
+
videoDetails?: VideoDetails;
|
|
220
|
+
streamingData?: StreamingData;
|
|
221
|
+
captions?: CaptionsData;
|
|
222
|
+
microformat?: MicroformatData;
|
|
223
|
+
storyboards?: StoryboardData;
|
|
224
|
+
}
|
|
225
|
+
interface PlayabilityStatus {
|
|
226
|
+
status: 'OK' | 'UNPLAYABLE' | 'LOGIN_REQUIRED' | 'AGE_CHECK_REQUIRED' | 'ERROR';
|
|
227
|
+
reason?: string;
|
|
228
|
+
playableInEmbed?: boolean;
|
|
229
|
+
liveStreamability?: unknown;
|
|
230
|
+
}
|
|
231
|
+
interface VideoDetails {
|
|
232
|
+
videoId: string;
|
|
233
|
+
title: string;
|
|
234
|
+
lengthSeconds: string;
|
|
235
|
+
channelId: string;
|
|
236
|
+
shortDescription: string;
|
|
237
|
+
thumbnail: {
|
|
238
|
+
thumbnails: Array<{
|
|
239
|
+
url: string;
|
|
240
|
+
width: number;
|
|
241
|
+
height: number;
|
|
242
|
+
}>;
|
|
243
|
+
};
|
|
244
|
+
viewCount: string;
|
|
245
|
+
author: string;
|
|
246
|
+
isLiveContent: boolean;
|
|
247
|
+
isPrivate: boolean;
|
|
248
|
+
keywords?: string[];
|
|
249
|
+
}
|
|
250
|
+
interface StreamingData {
|
|
251
|
+
expiresInSeconds: string;
|
|
252
|
+
formats?: RawFormat[];
|
|
253
|
+
adaptiveFormats?: RawFormat[];
|
|
254
|
+
hlsManifestUrl?: string;
|
|
255
|
+
dashManifestUrl?: string;
|
|
256
|
+
}
|
|
257
|
+
interface RawFormat {
|
|
258
|
+
itag: number;
|
|
259
|
+
url?: string;
|
|
260
|
+
signatureCipher?: string;
|
|
261
|
+
cipher?: string;
|
|
262
|
+
mimeType: string;
|
|
263
|
+
bitrate: number;
|
|
264
|
+
width?: number;
|
|
265
|
+
height?: number;
|
|
266
|
+
fps?: number;
|
|
267
|
+
qualityLabel?: string;
|
|
268
|
+
quality: string;
|
|
269
|
+
audioQuality?: string;
|
|
270
|
+
audioSampleRate?: string;
|
|
271
|
+
audioChannels?: number;
|
|
272
|
+
contentLength?: string;
|
|
273
|
+
approxDurationMs?: string;
|
|
274
|
+
initRange?: {
|
|
275
|
+
start: string;
|
|
276
|
+
end: string;
|
|
277
|
+
};
|
|
278
|
+
indexRange?: {
|
|
279
|
+
start: string;
|
|
280
|
+
end: string;
|
|
281
|
+
};
|
|
282
|
+
lastModified?: string;
|
|
283
|
+
drmFamilies?: string[];
|
|
284
|
+
}
|
|
285
|
+
interface CaptionsData {
|
|
286
|
+
playerCaptionsTracklistRenderer?: {
|
|
287
|
+
captionTracks?: CaptionTrack[];
|
|
288
|
+
};
|
|
289
|
+
}
|
|
290
|
+
interface CaptionTrack {
|
|
291
|
+
baseUrl: string;
|
|
292
|
+
languageCode: string;
|
|
293
|
+
name: {
|
|
294
|
+
simpleText: string;
|
|
295
|
+
};
|
|
296
|
+
kind?: string;
|
|
297
|
+
isTranslatable?: boolean;
|
|
298
|
+
}
|
|
299
|
+
interface MicroformatData {
|
|
300
|
+
playerMicroformatRenderer?: {
|
|
301
|
+
uploadDate?: string;
|
|
302
|
+
publishDate?: string;
|
|
303
|
+
category?: string;
|
|
304
|
+
isFamilySafe?: boolean;
|
|
305
|
+
lengthSeconds?: string;
|
|
306
|
+
};
|
|
307
|
+
}
|
|
308
|
+
interface StoryboardData {
|
|
309
|
+
playerStoryboardSpecRenderer?: {
|
|
310
|
+
spec?: string;
|
|
311
|
+
};
|
|
312
|
+
}
|
|
313
|
+
//#endregion
|
|
314
|
+
//#region src/types/player.types.d.ts
|
|
315
|
+
/**
|
|
316
|
+
* Player Types - Cipher extraction
|
|
317
|
+
*/
|
|
318
|
+
interface PlayerInfo {
|
|
319
|
+
playerId: string;
|
|
320
|
+
playerUrl: string;
|
|
321
|
+
signatureTimestamp: number;
|
|
322
|
+
sigFunction: CipherFunction;
|
|
323
|
+
nFunction: CipherFunction;
|
|
324
|
+
cachedAt: number;
|
|
325
|
+
}
|
|
326
|
+
type CipherFunction = (input: string) => string;
|
|
327
|
+
interface SignatureCipher {
|
|
328
|
+
signature: string;
|
|
329
|
+
signatureParam: string;
|
|
330
|
+
url: string;
|
|
331
|
+
}
|
|
332
|
+
//#endregion
|
|
333
|
+
//#region src/utils/constants.d.ts
|
|
334
|
+
declare const INNERTUBE_CLIENTS: {
|
|
335
|
+
readonly WEB: {
|
|
336
|
+
readonly NAME: "WEB";
|
|
337
|
+
readonly VERSION: "2.20250222.10.00";
|
|
338
|
+
readonly CLIENT_ID: 1;
|
|
339
|
+
readonly API_KEY: "AIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8";
|
|
340
|
+
readonly INNERTUBE_CONTEXT: {
|
|
341
|
+
readonly client: {
|
|
342
|
+
readonly clientName: "WEB";
|
|
343
|
+
readonly clientVersion: "2.20250222.10.00";
|
|
344
|
+
readonly platform: "DESKTOP";
|
|
345
|
+
};
|
|
346
|
+
};
|
|
347
|
+
readonly HEADERS: {
|
|
348
|
+
readonly 'User-Agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36";
|
|
349
|
+
readonly 'X-YouTube-Client-Name': "1";
|
|
350
|
+
readonly 'X-YouTube-Client-Version': "2.20250222.10.00";
|
|
351
|
+
};
|
|
352
|
+
};
|
|
353
|
+
readonly ANDROID: {
|
|
354
|
+
readonly NAME: "ANDROID";
|
|
355
|
+
readonly VERSION: "19.35.36";
|
|
356
|
+
readonly CLIENT_ID: 3;
|
|
357
|
+
readonly API_KEY: "AIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8";
|
|
358
|
+
readonly SDK_VERSION: 33;
|
|
359
|
+
readonly INNERTUBE_CONTEXT: {
|
|
360
|
+
readonly client: {
|
|
361
|
+
readonly clientName: "ANDROID";
|
|
362
|
+
readonly clientVersion: "19.35.36";
|
|
363
|
+
readonly androidSdkVersion: 33;
|
|
364
|
+
};
|
|
365
|
+
};
|
|
366
|
+
readonly HEADERS: {
|
|
367
|
+
readonly 'User-Agent': "com.google.android.youtube/19.35.36(Linux; U; Android 13; en_US; SM-S908E Build/TP1A.220624.014) gzip";
|
|
368
|
+
readonly 'X-YouTube-Client-Name': "3";
|
|
369
|
+
readonly 'X-YouTube-Client-Version': "19.35.36";
|
|
370
|
+
};
|
|
371
|
+
};
|
|
372
|
+
readonly TV: {
|
|
373
|
+
readonly NAME: "TVHTML5";
|
|
374
|
+
readonly VERSION: "7.20250923.13.00";
|
|
375
|
+
readonly CLIENT_ID: 7;
|
|
376
|
+
readonly API_KEY: "AIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8";
|
|
377
|
+
readonly INNERTUBE_CONTEXT: {
|
|
378
|
+
readonly client: {
|
|
379
|
+
readonly clientName: "TVHTML5";
|
|
380
|
+
readonly clientVersion: "7.20250923.13.00";
|
|
381
|
+
readonly userAgent: "Mozilla/5.0 (ChromiumStylePlatform) Cobalt/Version";
|
|
382
|
+
};
|
|
383
|
+
};
|
|
384
|
+
readonly HEADERS: {
|
|
385
|
+
readonly 'User-Agent': "Mozilla/5.0 (ChromiumStylePlatform) Cobalt/Version";
|
|
386
|
+
readonly 'X-YouTube-Client-Name': "7";
|
|
387
|
+
readonly 'X-YouTube-Client-Version': "7.20250923.13.00";
|
|
388
|
+
};
|
|
389
|
+
};
|
|
390
|
+
readonly IOS: {
|
|
391
|
+
readonly NAME: "IOS";
|
|
392
|
+
readonly VERSION: "20.10.4";
|
|
393
|
+
readonly CLIENT_ID: 5;
|
|
394
|
+
readonly API_KEY: "AIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8";
|
|
395
|
+
readonly INNERTUBE_CONTEXT: {
|
|
396
|
+
readonly client: {
|
|
397
|
+
readonly clientName: "IOS";
|
|
398
|
+
readonly clientVersion: "20.10.4";
|
|
399
|
+
readonly deviceMake: "Apple";
|
|
400
|
+
readonly deviceModel: "iPhone16,2";
|
|
401
|
+
readonly osName: "iPhone";
|
|
402
|
+
readonly osVersion: "18.3.2.22D82";
|
|
403
|
+
};
|
|
404
|
+
};
|
|
405
|
+
readonly HEADERS: {
|
|
406
|
+
readonly 'User-Agent': "com.google.ios.youtube/20.10.4 (iPhone16,2; U; CPU iOS 18_3_2 like Mac OS X;)";
|
|
407
|
+
readonly 'X-YouTube-Client-Name': "5";
|
|
408
|
+
readonly 'X-YouTube-Client-Version': "20.10.4";
|
|
409
|
+
};
|
|
410
|
+
};
|
|
411
|
+
readonly ANDROID_SDKLESS: {
|
|
412
|
+
readonly NAME: "ANDROID";
|
|
413
|
+
readonly VERSION: "20.10.38";
|
|
414
|
+
readonly CLIENT_ID: 3;
|
|
415
|
+
readonly API_KEY: "AIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8";
|
|
416
|
+
readonly INNERTUBE_CONTEXT: {
|
|
417
|
+
readonly client: {
|
|
418
|
+
readonly clientName: "ANDROID";
|
|
419
|
+
readonly clientVersion: "20.10.38";
|
|
420
|
+
readonly osName: "Android";
|
|
421
|
+
readonly osVersion: "11";
|
|
422
|
+
};
|
|
423
|
+
};
|
|
424
|
+
readonly HEADERS: {
|
|
425
|
+
readonly 'User-Agent': "com.google.android.youtube/20.10.38 (Linux; U; Android 11) gzip";
|
|
426
|
+
readonly 'X-YouTube-Client-Name': "3";
|
|
427
|
+
readonly 'X-YouTube-Client-Version': "20.10.38";
|
|
428
|
+
};
|
|
429
|
+
};
|
|
430
|
+
readonly TV_EMBEDDED: {
|
|
431
|
+
readonly NAME: "TVHTML5_SIMPLY_EMBEDDED_PLAYER";
|
|
432
|
+
readonly VERSION: "2.0";
|
|
433
|
+
readonly CLIENT_ID: 85;
|
|
434
|
+
readonly API_KEY: "AIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8";
|
|
435
|
+
readonly INNERTUBE_CONTEXT: {
|
|
436
|
+
readonly client: {
|
|
437
|
+
readonly clientName: "TVHTML5_SIMPLY_EMBEDDED_PLAYER";
|
|
438
|
+
readonly clientVersion: "2.0";
|
|
439
|
+
readonly clientScreen: "EMBED";
|
|
440
|
+
readonly platform: "TV";
|
|
441
|
+
};
|
|
442
|
+
readonly thirdParty: {
|
|
443
|
+
readonly embedUrl: "https://www.youtube.com/";
|
|
444
|
+
};
|
|
445
|
+
};
|
|
446
|
+
readonly HEADERS: {
|
|
447
|
+
readonly 'User-Agent': "Mozilla/5.0 (ChromiumStylePlatform) Cobalt/Version";
|
|
448
|
+
readonly 'X-YouTube-Client-Name': "85";
|
|
449
|
+
readonly 'X-YouTube-Client-Version': "2.0";
|
|
450
|
+
};
|
|
451
|
+
};
|
|
452
|
+
};
|
|
453
|
+
type ClientName$1 = keyof typeof INNERTUBE_CLIENTS;
|
|
454
|
+
//#endregion
|
|
455
|
+
//#region src/core/extractor.d.ts
|
|
456
|
+
interface ExtractorConfig {
|
|
457
|
+
poToken?: string;
|
|
458
|
+
cacheDir?: string;
|
|
459
|
+
preferredClient?: ClientName$1;
|
|
460
|
+
}
|
|
461
|
+
/**
|
|
462
|
+
* Main YouTube video extractor class.
|
|
463
|
+
* Handles video information extraction using InnerTube API.
|
|
464
|
+
*/
|
|
465
|
+
declare class YouTubeExtractor {
|
|
466
|
+
private client;
|
|
467
|
+
private player;
|
|
468
|
+
private config;
|
|
469
|
+
constructor(config?: ExtractorConfig);
|
|
470
|
+
/**
|
|
471
|
+
* Extracts video information from a YouTube URL or video ID.
|
|
472
|
+
* @param url - YouTube URL or video ID
|
|
473
|
+
* @returns Result containing VideoInfo or BundlpError
|
|
474
|
+
*/
|
|
475
|
+
extract(url: string): Promise<Result<VideoInfo, BundlpError>>;
|
|
476
|
+
private parseVideoId;
|
|
477
|
+
private realExtract;
|
|
478
|
+
private processFormats;
|
|
479
|
+
private assembleVideoInfo;
|
|
480
|
+
}
|
|
481
|
+
//#endregion
|
|
482
|
+
//#region src/utils/headers.d.ts
|
|
483
|
+
/**
|
|
484
|
+
* HTTP Headers Utilities for YouTube Downloads
|
|
485
|
+
*
|
|
486
|
+
* Provides headers needed for downloading from deciphered YouTube URLs.
|
|
487
|
+
* These headers are extracted from bundlp's InnerTube client configurations.
|
|
488
|
+
*/
|
|
489
|
+
/**
|
|
490
|
+
* Get HTTP headers for downloading from deciphered YouTube URLs
|
|
491
|
+
* Based on the client type used for extraction
|
|
492
|
+
*
|
|
493
|
+
* @param clientType - The client type to use (WEB, ANDROID, TV, IOS)
|
|
494
|
+
* @returns Object with required HTTP headers for YouTube CDN requests
|
|
495
|
+
*/
|
|
496
|
+
declare function getDownloadHeaders(clientType?: 'WEB' | 'ANDROID' | 'TV' | 'IOS'): Record<string, string>;
|
|
497
|
+
/**
|
|
498
|
+
* Get minimal headers that work for most YouTube CDN requests
|
|
499
|
+
* Use this as a fallback if full headers cause issues
|
|
500
|
+
*
|
|
501
|
+
* @returns Minimal set of headers needed for YouTube downloads
|
|
502
|
+
*/
|
|
503
|
+
declare function getMinimalDownloadHeaders(): Record<string, string>;
|
|
504
|
+
//#endregion
|
|
505
|
+
//#region src/po-token/policies.d.ts
|
|
506
|
+
type PoTokenRequirement = 'required' | 'recommended' | 'not_required';
|
|
507
|
+
interface PoTokenPolicy {
|
|
508
|
+
GVS: PoTokenRequirement | {
|
|
509
|
+
HTTPS: PoTokenRequirement;
|
|
510
|
+
DASH: PoTokenRequirement;
|
|
511
|
+
HLS: PoTokenRequirement;
|
|
512
|
+
};
|
|
513
|
+
PLAYER: PoTokenRequirement;
|
|
514
|
+
SUBS: PoTokenRequirement;
|
|
515
|
+
notRequiredForPremium?: boolean;
|
|
516
|
+
}
|
|
517
|
+
//#endregion
|
|
518
|
+
//#region src/po-token/types.d.ts
|
|
519
|
+
type PoTokenContext = 'GVS' | 'PLAYER' | 'SUBS';
|
|
520
|
+
type TokenBindingType = 'session' | 'content';
|
|
521
|
+
interface PoTokenData {
|
|
522
|
+
token: string;
|
|
523
|
+
integrityToken?: string;
|
|
524
|
+
createdAt: number;
|
|
525
|
+
expiresAt: number;
|
|
526
|
+
refreshAt: number;
|
|
527
|
+
bindingType: TokenBindingType;
|
|
528
|
+
bindingValue: string;
|
|
529
|
+
client: ClientName$1;
|
|
530
|
+
context: PoTokenContext;
|
|
531
|
+
}
|
|
532
|
+
interface ContentBinding {
|
|
533
|
+
videoId?: string;
|
|
534
|
+
channelId?: string;
|
|
535
|
+
playlistId?: string;
|
|
536
|
+
}
|
|
537
|
+
//#endregion
|
|
538
|
+
//#region src/po-token/providers/provider.interface.d.ts
|
|
539
|
+
interface PoTokenProvider {
|
|
540
|
+
readonly name: string;
|
|
541
|
+
readonly priority: number;
|
|
542
|
+
generate(identifier: string, binding?: ContentBinding): Promise<Result<PoTokenData, BundlpError>>;
|
|
543
|
+
isAvailable(): Promise<boolean>;
|
|
544
|
+
shutdown(): void;
|
|
545
|
+
}
|
|
546
|
+
interface PoTokenProviderOptions {
|
|
547
|
+
timeout?: number;
|
|
548
|
+
cacheEnabled?: boolean;
|
|
549
|
+
}
|
|
550
|
+
//#endregion
|
|
551
|
+
//#region src/po-token/manager.d.ts
|
|
552
|
+
interface PoTokenManagerConfig {
|
|
553
|
+
token?: string;
|
|
554
|
+
cacheEnabled?: boolean;
|
|
555
|
+
cachePath?: string;
|
|
556
|
+
timeout?: number;
|
|
557
|
+
providers?: PoTokenProvider[];
|
|
558
|
+
}
|
|
559
|
+
declare class PoTokenManager {
|
|
560
|
+
private staticToken?;
|
|
561
|
+
private policies;
|
|
562
|
+
private providers;
|
|
563
|
+
private cache;
|
|
564
|
+
constructor(config?: PoTokenManagerConfig);
|
|
565
|
+
getToken(identifier: string, client?: ClientName$1, binding?: ContentBinding): Promise<Result<string, BundlpError>>;
|
|
566
|
+
getTokenData(identifier: string, client?: ClientName$1, binding?: ContentBinding): Promise<Result<PoTokenData, BundlpError>>;
|
|
567
|
+
getColdStartToken(identifier: string): string;
|
|
568
|
+
isRequired(client: ClientName$1): boolean;
|
|
569
|
+
needsTokenForGvs(client: ClientName$1): boolean;
|
|
570
|
+
getPolicy(client: ClientName$1): PoTokenPolicy | undefined;
|
|
571
|
+
getVisitorData(): string | undefined;
|
|
572
|
+
shutdown(): void;
|
|
573
|
+
getCacheStats(): {
|
|
574
|
+
total: number;
|
|
575
|
+
expired: number;
|
|
576
|
+
valid: number;
|
|
577
|
+
} | null;
|
|
578
|
+
}
|
|
579
|
+
//#endregion
|
|
580
|
+
//#region src/po-token/providers/local.provider.d.ts
|
|
581
|
+
declare class LocalBotGuardProvider implements PoTokenProvider {
|
|
582
|
+
readonly name = "local-botguard";
|
|
583
|
+
readonly priority = 100;
|
|
584
|
+
private options;
|
|
585
|
+
private challengeFetcher;
|
|
586
|
+
private client;
|
|
587
|
+
private challenge;
|
|
588
|
+
private attestation;
|
|
589
|
+
private integrityData;
|
|
590
|
+
private minter;
|
|
591
|
+
private initPromise;
|
|
592
|
+
private createdAt;
|
|
593
|
+
constructor(options?: PoTokenProviderOptions);
|
|
594
|
+
isAvailable(): Promise<boolean>;
|
|
595
|
+
generate(identifier: string, _binding?: ContentBinding): Promise<Result<PoTokenData, BundlpError>>;
|
|
596
|
+
private ensureInitialized;
|
|
597
|
+
private initialize;
|
|
598
|
+
private reset;
|
|
599
|
+
shutdown(): void;
|
|
600
|
+
getVisitorData(): string | undefined;
|
|
601
|
+
}
|
|
602
|
+
//#endregion
|
|
603
|
+
//#region src/utils/logger.d.ts
|
|
604
|
+
declare const bundlpLogger: _mks2508_better_logger0.ScopedLogger;
|
|
605
|
+
declare const extractorLogger: _mks2508_better_logger0.ComponentLogger;
|
|
606
|
+
//#endregion
|
|
607
|
+
//#region src/index.d.ts
|
|
608
|
+
/**
|
|
609
|
+
* Appends po_token to a download URL
|
|
610
|
+
*/
|
|
611
|
+
declare function appendPoToken(url: string, poToken: string): string;
|
|
612
|
+
//#endregion
|
|
613
|
+
export { type AudioFormat, type BundlpError, type ChannelInfo, type Chapter, type ClientConfig, type ClientName, type DashInfo, type ErrorCode, type ExtractorConfig, type Format, type FormatCollection, type HlsInfo, type HlsVariant, type InnerTubeContext, LocalBotGuardProvider, type PlayerInfo, type PlayerResponse, PoTokenManager, type PoTokenManagerConfig, type Result, type ResultErr, type ResultOk, type SignatureCipher, type Storyboard, type StreamingData, type Subtitle, type Thumbnail, type VideoFormat, type VideoInfo, YouTubeExtractor, andThen, appendPoToken, bundlpLogger, err, extractorLogger, getDownloadHeaders, getMinimalDownloadHeaders, isErr, isOk, map, mapErr, match, ok, tryCatch, tryCatchAsync, unwrap, unwrapOr };
|
|
614
|
+
//# sourceMappingURL=index.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/result/result.types.ts","../src/result/result.utils.ts","../src/types/error.types.ts","../src/types/video.types.ts","../src/types/innertube.types.ts","../src/types/player.types.ts","../src/utils/constants.ts","../src/core/extractor.ts","../src/utils/headers.ts","../src/po-token/policies.ts","../src/po-token/types.ts","../src/po-token/providers/provider.interface.ts","../src/po-token/manager.ts","../src/po-token/providers/local.provider.ts","../src/utils/logger.ts","../src/index.ts"],"sourcesContent":[],"mappings":"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"}
|