diff --git a/README.md b/README.md index 4580b89..db39310 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,19 @@ # yt-dlp-ejs +> [!CAUTION] +> This is currently in development + External JavaScript for yt-dlp supporting many runtimes -## Installation +## Manual Installation -In the yt-dlp repository, install the python package, either directly or from url: +In the yt-dlp repository, install the python package, directly: ```console -pip install git+https://github.com/yt-dlp/ejs@main +npm install +pip install . ``` + +## Tests + +todo diff --git a/package-lock.json b/package-lock.json index a007567..426838d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,5 +1,5 @@ { - "name": "yt-dlp-jsc-deno", + "name": "ejs", "lockfileVersion": 3, "requires": true, "packages": { diff --git a/run.ts b/run.ts index 6582148..843c965 100644 --- a/run.ts +++ b/run.ts @@ -16,12 +16,12 @@ if (args.length < 2) { const player = readFileSync(args[0], "utf-8"); const requests = { - nsig: [] as string[], + n: [] as string[], sig: [] as string[], }; for (const request of args.slice(1)) { const [type, challenge] = request.split(":", 2); - if (!isOneOf(type, "sig", "nsig")) { + if (!isOneOf(type, "sig", "n")) { console.error(`ERROR: Unsupported request type: ${type}`); exit(1); } @@ -32,7 +32,7 @@ console.log(JSON.stringify(main({ player, output_preprocessed: false, requests: [ - { type: "nsig", challenges: requests.nsig }, + { type: "n", challenges: requests.n }, { type: "sig", challenges: requests.sig }, ], }))); diff --git a/src/main.ts b/src/main.ts index 67bae26..db9507f 100644 --- a/src/main.ts +++ b/src/main.ts @@ -9,7 +9,7 @@ export default function main(input: Input): Output { const responses = input.requests.map( (input): Response => { - if (!isOneOf(input.type, "nsig", "sig")) { + if (!isOneOf(input.type, "n", "sig")) { return { type: "error", error: `Unknown request type: ${input.type}`, @@ -64,7 +64,7 @@ export type Input = }; type Request = { - type: "nsig" | "sig"; + type: "n" | "sig"; challenges: string[]; }; diff --git a/src/nsig.ts b/src/n.ts similarity index 98% rename from src/nsig.ts rename to src/n.ts index 0f73f0a..7b3eacc 100644 --- a/src/nsig.ts +++ b/src/n.ts @@ -116,7 +116,7 @@ function makeSolverFuncFromName(name: string): ESTree.ArrowFunctionExpression { params: [ { type: "Identifier", - name: "nsig", + name: "n", }, ], body: { @@ -128,7 +128,7 @@ function makeSolverFuncFromName(name: string): ESTree.ArrowFunctionExpression { arguments: [ { type: "Identifier", - name: "nsig", + name: "n", }, ], optional: false, diff --git a/src/solvers.test.ts b/src/solvers.test.ts index ffb880f..3e1c863 100644 --- a/src/solvers.test.ts +++ b/src/solvers.test.ts @@ -11,7 +11,7 @@ for (const test of tests) { await io.test(`${test.player} ${variant}`, async (assert, subtest) => { const content = await io.read(path); const solvers = getFromPrepared(preprocessPlayer(content)); - for (const mode of ["nsig", "sig"] as const) { + for (const mode of ["n", "sig"] as const) { for (const step of test[mode] || []) { await subtest(`${step.input} (${mode})`, () => { const got = solvers[mode]?.(step.input); diff --git a/src/solvers.ts b/src/solvers.ts index 465231b..466501f 100755 --- a/src/solvers.ts +++ b/src/solvers.ts @@ -1,7 +1,7 @@ import { type ESTree, parse } from "meriyah"; import { generate } from "astring"; import { extract as extractSig } from "./sig.ts"; -import { extract as extractNsig } from "./nsig.ts"; +import { extract as extractN } from "./n.ts"; import { setupNodes } from "./setup.ts"; export function preprocessPlayer(data: string): string { @@ -41,13 +41,13 @@ export function preprocessPlayer(data: string): string { })(); const found = { - nsig: [] as ESTree.ArrowFunctionExpression[], + n: [] as ESTree.ArrowFunctionExpression[], sig: [] as ESTree.ArrowFunctionExpression[], }; const plainExpressions = block.body.filter((node: ESTree.Node) => { - const nsig = extractNsig(node); - if (nsig) { - found.nsig.push(nsig); + const n = extractN(node); + if (n) { + found.n.push(n); } const sig = extractSig(node); if (sig) { @@ -101,10 +101,10 @@ export function preprocessPlayer(data: string): string { } export function getFromPrepared(code: string): { - nsig: ((val: string) => string) | null; + n: ((val: string) => string) | null; sig: ((val: string) => string) | null; } { - const resultObj = { nsig: null, sig: null }; + const resultObj = { n: null, sig: null }; Function("_result", code)(resultObj); return resultObj; } diff --git a/tests/tests.ts b/tests/tests.ts index 9c81f07..e30f940 100644 --- a/tests/tests.ts +++ b/tests/tests.ts @@ -6,12 +6,12 @@ type Step = { export const tests: { player: string; variants?: Variant[]; - nsig?: Step[]; + n?: Step[]; sig?: Step[]; }[] = [ { player: "3d3ba064", - nsig: [ + n: [ { input: "ZdZIqFPQK-Ty8wId", expected: "qmtUsIz04xxiNW" }, { input: "4GMrWHyKI5cEvhDO", expected: "N9gmEX7YhKTSmw" }, ], @@ -26,7 +26,7 @@ export const tests: { }, { player: "5ec65609", - nsig: [{ input: "0eRGgQWJGfT5rFHFj", expected: "4SvMpDQH-vBJCw" }], + n: [{ input: "0eRGgQWJGfT5rFHFj", expected: "4SvMpDQH-vBJCw" }], sig: [ { input: @@ -38,7 +38,7 @@ export const tests: { }, { player: "6742b2b9", - nsig: [ + n: [ { input: "_HPB-7GFg1VTkn9u", expected: "qUAsPryAO_ByYg" }, { input: "K1t_fcB6phzuq2SF", expected: "Y7PcOt3VE62mog" }, ], @@ -53,7 +53,7 @@ export const tests: { }, { player: "23ccdd25", - nsig: [ + n: [ // Synthetic test { input: "0eRGgQWJGfT5rFHFj", expected: "orSsTqUaUO-j" }, ], @@ -69,7 +69,7 @@ export const tests: { }, { player: "3597727b", - nsig: [ + n: [ // Synthetic test { input: "0eRGgQWJGfT5rFHFj", expected: "PRwo5dDfisg0ejA2" }, ], @@ -87,7 +87,7 @@ export const tests: { // tce causes exception even in browser player: "3752a005", variants: ["main", "tcc", "es5", "es6", "tv", "tv_es6", "phone", "tablet"], - nsig: [ + n: [ // Synthetic test { input: "0eRGgQWJGfT5rFHFj", expected: "j22ZtsqVsR0Dn" }, ], @@ -105,7 +105,7 @@ export const tests: { // tce causes exception even in browser player: "afc7785b", variants: ["main", "tcc", "es5", "es6", "tv", "tv_es6", "phone", "tablet"], - nsig: [ + n: [ // Synthetic test { input: "0eRGgQWJGfT5rFHFj", expected: "j22ZtsqVsR0Dn" }, ], @@ -123,7 +123,7 @@ export const tests: { // tce causes exception even in browser player: "b9645327", variants: ["main", "tcc", "es5", "es6", "tv", "tv_es6", "phone", "tablet"], - nsig: [ + n: [ // Synthetic test { input: "0eRGgQWJGfT5rFHFj", expected: "j22ZtsqVsR0Dn" }, ], @@ -141,7 +141,7 @@ export const tests: { // tce causes exception even in browser player: "035b9195", variants: ["main", "tcc", "es5", "es6", "tv", "tv_es6", "phone", "tablet"], - nsig: [ + n: [ // Synthetic test { input: "0eRGgQWJGfT5rFHFj", expected: "j22ZtsqVsR0Dn" }, ], @@ -157,7 +157,7 @@ export const tests: { }, { player: "6740c111", - nsig: [ + n: [ // Synthetic test { input: "0eRGgQWJGfT5rFHFj", expected: "AVsXYE0uE1k8e" }, ], @@ -173,7 +173,7 @@ export const tests: { }, { player: "f6a4f3bc", - nsig: [ + n: [ // Synthetic test { input: "0eRGgQWJGfT5rFHFj", expected: "H1NKYFbhlqZ" }, ], @@ -189,7 +189,7 @@ export const tests: { }, { player: "b66835e2", - nsig: [ + n: [ // Synthetic test { input: "0eRGgQWJGfT5rFHFj", expected: "H1NKYFbhlqZ" }, ], @@ -205,7 +205,7 @@ export const tests: { }, { player: "4f8fa943", - nsig: [ + n: [ // Synthetic test { input: "0eRGgQWJGfT5rFHFj", expected: "JWWr7hDSRpMq5" }, ], @@ -221,7 +221,7 @@ export const tests: { }, { player: "0004de42", - nsig: [ + n: [ // Synthetic test { input: "0eRGgQWJGfT5rFHFj", expected: "OPd7UEsCDmCw4qD0" }, ], @@ -237,7 +237,7 @@ export const tests: { }, { player: "2b83d2e0", - nsig: [ + n: [ // Synthetic test { input: "0eRGgQWJGfT5rFHFj", expected: "euHbygrCMLksxd" }, ],