ytgrab 0.3.0 → 0.3.1

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.
@@ -1 +1 @@
1
- {"version":3,"file":"nsig.d.ts","sourceRoot":"","sources":["../../src/extractor/nsig.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAYH;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAiB/D;AA4GD;;GAEG;AACH,wBAAsB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAkD3F;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAiBpG;AAED,wBAAgB,cAAc,IAAI,IAAI,CAKrC"}
1
+ {"version":3,"file":"nsig.d.ts","sourceRoot":"","sources":["../../src/extractor/nsig.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAYH;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAiB/D;AA6GD;;GAEG;AACH,wBAAsB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAkD3F;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAiBpG;AAED,wBAAgB,cAAc,IAAI,IAAI,CAKrC"}
@@ -95,11 +95,12 @@ async function downloadPlayerJs(playerUrl) {
95
95
  async function initSolver() {
96
96
  if (solverFn)
97
97
  return solverFn;
98
- // Find the core solver script
98
+ // Find the core solver script (bundled in ytgrab/vendor)
99
99
  const searchPaths = [
100
- path.resolve(__dirname, '../../../../yt-dlp/yt_dlp/extractor/youtube/jsc/_builtin/vendor'),
101
- path.resolve(process.cwd(), '../yt-dlp/yt_dlp/extractor/youtube/jsc/_builtin/vendor'),
100
+ path.resolve(__dirname, '../../vendor'),
101
+ path.resolve(__dirname, '../../../vendor'),
102
102
  path.resolve(process.cwd(), 'vendor'),
103
+ path.resolve(process.cwd(), 'node_modules/ytgrab/vendor'),
103
104
  ];
104
105
  let coreScript = null;
105
106
  for (const dir of searchPaths) {
@@ -1 +1 @@
1
- {"version":3,"file":"nsig.js","sourceRoot":"","sources":["../../src/extractor/nsig.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"nsig.js","sourceRoot":"","sources":["../../src/extractor/nsig.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ytgrab",
3
- "version": "0.3.0",
3
+ "version": "0.3.1",
4
4
  "description": "A Node.js YouTube video downloader ported from yt-dlp",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -9,7 +9,8 @@
9
9
  },
10
10
  "files": [
11
11
  "dist",
12
- "bin"
12
+ "bin",
13
+ "vendor"
13
14
  ],
14
15
  "scripts": {
15
16
  "build": "tsc",
@@ -0,0 +1,368 @@
1
+ /*!
2
+ * SPDX-License-Identifier: Unlicense
3
+ * This file was automatically generated by https://github.com/yt-dlp/ejs
4
+ */
5
+ var jsc = (function (meriyah, astring) {
6
+ 'use strict';
7
+ function matchesStructure(obj, structure) {
8
+ if (Array.isArray(structure)) {
9
+ if (!Array.isArray(obj)) {
10
+ return false;
11
+ }
12
+ return (
13
+ structure.length === obj.length &&
14
+ structure.every((value, index) => matchesStructure(obj[index], value))
15
+ );
16
+ }
17
+ if (typeof structure === 'object') {
18
+ if (!obj) {
19
+ return !structure;
20
+ }
21
+ if ('or' in structure) {
22
+ return structure.or.some((node) => matchesStructure(obj, node));
23
+ }
24
+ if ('anykey' in structure && Array.isArray(structure.anykey)) {
25
+ const haystack = Array.isArray(obj) ? obj : Object.values(obj);
26
+ return structure.anykey.every((value) =>
27
+ haystack.some((el) => matchesStructure(el, value)),
28
+ );
29
+ }
30
+ for (const [key, value] of Object.entries(structure)) {
31
+ if (!matchesStructure(obj[key], value)) {
32
+ return false;
33
+ }
34
+ }
35
+ return true;
36
+ }
37
+ return structure === obj;
38
+ }
39
+ function isOneOf(value, ...of) {
40
+ return of.includes(value);
41
+ }
42
+ function generateArrowFunction(data) {
43
+ return meriyah.parse(data).body[0].expression;
44
+ }
45
+ function _optionalChain$1(ops) {
46
+ let lastAccessLHS = undefined;
47
+ let value = ops[0];
48
+ let i = 1;
49
+ while (i < ops.length) {
50
+ const op = ops[i];
51
+ const fn = ops[i + 1];
52
+ i += 2;
53
+ if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) {
54
+ return undefined;
55
+ }
56
+ if (op === 'access' || op === 'optionalAccess') {
57
+ lastAccessLHS = value;
58
+ value = fn(value);
59
+ } else if (op === 'call' || op === 'optionalCall') {
60
+ value = fn((...args) => value.call(lastAccessLHS, ...args));
61
+ lastAccessLHS = undefined;
62
+ }
63
+ }
64
+ return value;
65
+ }
66
+ const identifier = {
67
+ or: [
68
+ {
69
+ type: 'ExpressionStatement',
70
+ expression: {
71
+ type: 'AssignmentExpression',
72
+ operator: '=',
73
+ left: { or: [{ type: 'Identifier' }, { type: 'MemberExpression' }] },
74
+ right: { type: 'FunctionExpression', async: false },
75
+ },
76
+ },
77
+ { type: 'FunctionDeclaration', async: false, id: { type: 'Identifier' } },
78
+ {
79
+ type: 'VariableDeclaration',
80
+ declarations: {
81
+ anykey: [
82
+ {
83
+ type: 'VariableDeclarator',
84
+ init: { type: 'FunctionExpression', async: false },
85
+ },
86
+ ],
87
+ },
88
+ },
89
+ ],
90
+ };
91
+ const asdasd = {
92
+ type: 'ExpressionStatement',
93
+ expression: {
94
+ type: 'CallExpression',
95
+ callee: {
96
+ type: 'MemberExpression',
97
+ object: { type: 'Identifier' },
98
+ property: {},
99
+ optional: false,
100
+ },
101
+ arguments: [
102
+ { type: 'Literal', value: 'alr' },
103
+ { type: 'Literal', value: 'yes' },
104
+ ],
105
+ optional: false,
106
+ },
107
+ };
108
+ function extract(node) {
109
+ if (!matchesStructure(node, identifier)) {
110
+ return null;
111
+ }
112
+ const options = [];
113
+ if (node.type === 'FunctionDeclaration') {
114
+ if (
115
+ node.id &&
116
+ _optionalChain$1([
117
+ node,
118
+ 'access',
119
+ (_) => _.body,
120
+ 'optionalAccess',
121
+ (_2) => _2.body,
122
+ ])
123
+ ) {
124
+ options.push({
125
+ name: node.id,
126
+ statements: _optionalChain$1([
127
+ node,
128
+ 'access',
129
+ (_3) => _3.body,
130
+ 'optionalAccess',
131
+ (_4) => _4.body,
132
+ ]),
133
+ });
134
+ }
135
+ } else if (node.type === 'ExpressionStatement') {
136
+ if (node.expression.type !== 'AssignmentExpression') {
137
+ return null;
138
+ }
139
+ const name = node.expression.left;
140
+ const body = _optionalChain$1([
141
+ node.expression.right,
142
+ 'optionalAccess',
143
+ (_5) => _5.body,
144
+ 'optionalAccess',
145
+ (_6) => _6.body,
146
+ ]);
147
+ if (name && body) {
148
+ options.push({ name: name, statements: body });
149
+ }
150
+ } else if (node.type === 'VariableDeclaration') {
151
+ for (const declaration of node.declarations) {
152
+ const name = declaration.id;
153
+ const body = _optionalChain$1([
154
+ declaration.init,
155
+ 'optionalAccess',
156
+ (_7) => _7.body,
157
+ 'optionalAccess',
158
+ (_8) => _8.body,
159
+ ]);
160
+ if (name && body) {
161
+ options.push({ name: name, statements: body });
162
+ }
163
+ }
164
+ }
165
+ for (const { name: name, statements: statements } of options) {
166
+ if (matchesStructure(statements, { anykey: [asdasd] })) {
167
+ return createSolver(name);
168
+ }
169
+ }
170
+ return null;
171
+ }
172
+ function createSolver(expression) {
173
+ return generateArrowFunction(
174
+ `\n({sig, n}) => {\n const url = (${astring.generate(expression)})("https://youtube.com/watch?v=yt-dlp-wins", "s", sig ? encodeURIComponent(sig) : undefined);\n url.set("n", n);\n const proto = Object.getPrototypeOf(url);\n const keys = Object.keys(proto).concat(Object.getOwnPropertyNames(proto));\n for (const key of keys) {\n if (!["constructor", "set", "get", "clone"].includes(key)) {\n url[key]();\n break;\n }\n }\n const s = url.get("s");\n return {\n sig: s ? decodeURIComponent(s) : null,\n n: url.get("n") ?? null,\n };\n}\n`,
175
+ );
176
+ }
177
+ const setupNodes = meriyah.parse(
178
+ `\nif (typeof globalThis.XMLHttpRequest === "undefined") {\n globalThis.XMLHttpRequest = { prototype: {} };\n}\nif (typeof URL === "undefined") {\n globalThis.location = {\n hash: "",\n host: "www.youtube.com",\n hostname: "www.youtube.com",\n href: "https://www.youtube.com/watch?v=yt-dlp-wins",\n origin: "https://www.youtube.com",\n password: "",\n pathname: "/watch",\n port: "",\n protocol: "https:",\n search: "?v=yt-dlp-wins",\n username: "",\n };\n} else {\n globalThis.location = new URL("https://www.youtube.com/watch?v=yt-dlp-wins");\n}\nif (typeof globalThis.document === "undefined") {\n globalThis.document = Object.create(null);\n}\nif (typeof globalThis.navigator === "undefined") {\n globalThis.navigator = Object.create(null);\n}\nif (typeof globalThis.self === "undefined") {\n globalThis.self = globalThis;\n}\nif (typeof globalThis.window === "undefined") {\n globalThis.window = globalThis;\n}\n`,
179
+ ).body;
180
+ function _optionalChain(ops) {
181
+ let lastAccessLHS = undefined;
182
+ let value = ops[0];
183
+ let i = 1;
184
+ while (i < ops.length) {
185
+ const op = ops[i];
186
+ const fn = ops[i + 1];
187
+ i += 2;
188
+ if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) {
189
+ return undefined;
190
+ }
191
+ if (op === 'access' || op === 'optionalAccess') {
192
+ lastAccessLHS = value;
193
+ value = fn(value);
194
+ } else if (op === 'call' || op === 'optionalCall') {
195
+ value = fn((...args) => value.call(lastAccessLHS, ...args));
196
+ lastAccessLHS = undefined;
197
+ }
198
+ }
199
+ return value;
200
+ }
201
+ function preprocessPlayer(data) {
202
+ const program = meriyah.parse(data);
203
+ const plainStatements = modifyPlayer(program);
204
+ const solutions = getSolutions(plainStatements);
205
+ for (const [name, options] of Object.entries(solutions)) {
206
+ plainStatements.push({
207
+ type: 'ExpressionStatement',
208
+ expression: {
209
+ type: 'AssignmentExpression',
210
+ operator: '=',
211
+ left: {
212
+ type: 'MemberExpression',
213
+ computed: false,
214
+ object: { type: 'Identifier', name: '_result' },
215
+ property: { type: 'Identifier', name: name },
216
+ optional: false,
217
+ },
218
+ right: multiTry(options),
219
+ },
220
+ });
221
+ }
222
+ program.body.splice(0, 0, ...setupNodes);
223
+ return astring.generate(program);
224
+ }
225
+ function modifyPlayer(program) {
226
+ const body = program.body;
227
+ const block = (() => {
228
+ switch (body.length) {
229
+ case 1: {
230
+ const func = body[0];
231
+ if (
232
+ _optionalChain([func, 'optionalAccess', (_) => _.type]) ===
233
+ 'ExpressionStatement' &&
234
+ func.expression.type === 'CallExpression' &&
235
+ func.expression.callee.type === 'MemberExpression' &&
236
+ func.expression.callee.object.type === 'FunctionExpression'
237
+ ) {
238
+ return func.expression.callee.object.body;
239
+ }
240
+ break;
241
+ }
242
+ case 2: {
243
+ const func = body[1];
244
+ if (
245
+ _optionalChain([func, 'optionalAccess', (_2) => _2.type]) ===
246
+ 'ExpressionStatement' &&
247
+ func.expression.type === 'CallExpression' &&
248
+ func.expression.callee.type === 'FunctionExpression'
249
+ ) {
250
+ const block = func.expression.callee.body;
251
+ block.body.splice(0, 1);
252
+ return block;
253
+ }
254
+ break;
255
+ }
256
+ }
257
+ throw 'unexpected structure';
258
+ })();
259
+ block.body = block.body.filter((node) => {
260
+ if (node.type === 'ExpressionStatement') {
261
+ if (node.expression.type === 'AssignmentExpression') {
262
+ return true;
263
+ }
264
+ return node.expression.type === 'Literal';
265
+ }
266
+ return true;
267
+ });
268
+ return block.body;
269
+ }
270
+ function getSolutions(statements) {
271
+ const found = { n: [], sig: [] };
272
+ for (const statement of statements) {
273
+ const result = extract(statement);
274
+ if (result) {
275
+ found.n.push(makeSolver(result, { type: 'Identifier', name: 'n' }));
276
+ found.sig.push(makeSolver(result, { type: 'Identifier', name: 'sig' }));
277
+ }
278
+ }
279
+ return found;
280
+ }
281
+ function makeSolver(result, ident) {
282
+ return {
283
+ type: 'ArrowFunctionExpression',
284
+ params: [ident],
285
+ body: {
286
+ type: 'MemberExpression',
287
+ object: {
288
+ type: 'CallExpression',
289
+ callee: result,
290
+ arguments: [
291
+ {
292
+ type: 'ObjectExpression',
293
+ properties: [
294
+ {
295
+ type: 'Property',
296
+ key: ident,
297
+ value: ident,
298
+ kind: 'init',
299
+ computed: false,
300
+ method: false,
301
+ shorthand: true,
302
+ },
303
+ ],
304
+ },
305
+ ],
306
+ optional: false,
307
+ },
308
+ computed: false,
309
+ property: ident,
310
+ optional: false,
311
+ },
312
+ async: false,
313
+ expression: true,
314
+ generator: false,
315
+ };
316
+ }
317
+ function getFromPrepared(code) {
318
+ const resultObj = { n: null, sig: null };
319
+ Function('_result', code)(resultObj);
320
+ return resultObj;
321
+ }
322
+ function multiTry(generators) {
323
+ return generateArrowFunction(
324
+ `\n(_input) => {\n const _results = new Set();\n const errors = [];\n for (const _generator of ${astring.generate({ type: 'ArrayExpression', elements: generators })}) {\n try {\n _results.add(_generator(_input));\n } catch (e) {\n errors.push(e);\n }\n }\n if (!_results.size) {\n throw \`no solutions: \${errors.join(", ")}\`;\n }\n if (_results.size !== 1) {\n throw \`invalid solutions: \${[..._results].map(x => JSON.stringify(x)).join(", ")}\`;\n }\n return _results.values().next().value;\n}\n`,
325
+ );
326
+ }
327
+ function main(input) {
328
+ const preprocessedPlayer =
329
+ input.type === 'player'
330
+ ? preprocessPlayer(input.player)
331
+ : input.preprocessed_player;
332
+ const solvers = getFromPrepared(preprocessedPlayer);
333
+ const responses = input.requests.map((input) => {
334
+ if (!isOneOf(input.type, 'n', 'sig')) {
335
+ return { type: 'error', error: `Unknown request type: ${input.type}` };
336
+ }
337
+ const solver = solvers[input.type];
338
+ if (!solver) {
339
+ return {
340
+ type: 'error',
341
+ error: `Failed to extract ${input.type} function`,
342
+ };
343
+ }
344
+ try {
345
+ return {
346
+ type: 'result',
347
+ data: Object.fromEntries(
348
+ input.challenges.map((challenge) => [challenge, solver(challenge)]),
349
+ ),
350
+ };
351
+ } catch (error) {
352
+ return {
353
+ type: 'error',
354
+ error:
355
+ error instanceof Error
356
+ ? `${error.message}\n${error.stack}`
357
+ : `${error}`,
358
+ };
359
+ }
360
+ });
361
+ const output = { type: 'result', responses: responses };
362
+ if (input.type === 'player' && input.output_preprocessed) {
363
+ output.preprocessed_player = preprocessedPlayer;
364
+ }
365
+ return output;
366
+ }
367
+ return main;
368
+ })(meriyah, astring);