distube-invidious 1.0.6 → 1.0.7

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.
@@ -3,7 +3,7 @@
3
3
  */
4
4
  export declare function decodeN(n: string): Promise<string>;
5
5
  /**
6
- * Fix a YouTube URL by decoding its n= parameter if present.
6
+ * Fix a YouTube URL by decoding its n= parameter if present and ensuring ratebypass.
7
7
  */
8
8
  export declare function fixUrl(url: string): Promise<string>;
9
9
  //# sourceMappingURL=cipherDecoder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cipherDecoder.d.ts","sourceRoot":"","sources":["../src/cipherDecoder.ts"],"names":[],"mappings":"AAwGA;;GAEG;AACH,wBAAsB,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAGxD;AAED;;GAEG;AACH,wBAAsB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAWzD"}
1
+ {"version":3,"file":"cipherDecoder.d.ts","sourceRoot":"","sources":["../src/cipherDecoder.ts"],"names":[],"mappings":"AAiOA;;GAEG;AACH,wBAAsB,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAGxD;AAED;;GAEG;AACH,wBAAsB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAkBzD"}
@@ -1,91 +1,201 @@
1
1
  // cipherDecoder.ts
2
- // Strict YouTube cipher decoder (A1 style)
2
+ // Strict YouTube cipher decoder (dynamic, yt-dlp-style-ish)
3
3
  // Fetches player JS, extracts the n-transform function, and applies it.
4
4
  import fetch from "node-fetch";
5
5
  let cachedTransform = null;
6
6
  let cachedPlayerUrl = null;
7
+ let cachedPlayerCode = null;
7
8
  /**
8
- * Fetch the current YouTube player JS URL.
9
+ * Fetch a YouTube watch page and extract the player JS URL.
9
10
  */
10
11
  async function getPlayerUrl() {
11
12
  if (cachedPlayerUrl)
12
13
  return cachedPlayerUrl;
13
- const res = await fetch("https://www.youtube.com/watch?v=dQw4w9WgXcQ"); // any video
14
+ const res = await fetch("https://www.youtube.com/watch?v=dQw4w9WgXcQ");
15
+ if (!res.ok) {
16
+ throw new Error(`Failed to fetch watch page: ${res.status} ${res.statusText}`);
17
+ }
14
18
  const html = await res.text();
15
- const match = html.match(/"jsUrl":"([^"]+)"/);
16
- if (!match)
17
- throw new Error("Could not find player jsUrl");
18
- const jsUrl = "https://youtube.com" + match[1];
19
- cachedPlayerUrl = jsUrl;
20
- return jsUrl;
19
+ // Try multiple patterns, YouTube changes this often.
20
+ const patterns = [
21
+ /"jsUrl":"([^"]+)"/, // modern
22
+ /"PLAYER_JS_URL":"([^"]+)"/,
23
+ /"js":"([^"]+base\.js)"/,
24
+ /"assets":\{"js":"([^"]+)"\}/,
25
+ ];
26
+ for (const re of patterns) {
27
+ const m = html.match(re);
28
+ if (m && m[1]) {
29
+ const url = m[1].startsWith("http")
30
+ ? m[1]
31
+ : "https://www.youtube.com" + m[1];
32
+ cachedPlayerUrl = url;
33
+ return url;
34
+ }
35
+ }
36
+ throw new Error("Could not find player JS URL in watch page");
21
37
  }
22
38
  /**
23
- * Fetch and parse the player JS to extract the cipher transform.
39
+ * Fetch the player JS code.
24
40
  */
25
- async function getTransform() {
26
- if (cachedTransform)
27
- return cachedTransform;
41
+ async function getPlayerCode() {
42
+ if (cachedPlayerCode)
43
+ return cachedPlayerCode;
28
44
  const jsUrl = await getPlayerUrl();
29
45
  const res = await fetch(jsUrl);
30
- const jsCode = await res.text();
31
- // Find the function name that transforms n
32
- const fnNameMatch = jsCode.match(/\.get\("n"\)\)&&\(b=(\w+)\([a-z]\)/);
33
- if (!fnNameMatch)
34
- throw new Error("Could not locate n-transform function name");
35
- const fnName = fnNameMatch[1];
36
- // Extract the function body
37
- const fnBodyMatch = jsCode.match(new RegExp(`${fnName}=function\\(a\\){(.*?)}`, "s"));
38
- if (!fnBodyMatch)
39
- throw new Error("Could not extract n-transform function body");
40
- const fnBody = fnBodyMatch[1];
41
- // Extract helper object name
42
- const helperMatch = fnBody.match(/([A-Za-z0-9$]{2})\\.[A-Za-z0-9]{2}\\(a,\\d+\\)/);
43
- if (!helperMatch)
46
+ if (!res.ok) {
47
+ throw new Error(`Failed to fetch player JS: ${res.status} ${res.statusText}`);
48
+ }
49
+ const code = await res.text();
50
+ cachedPlayerCode = code;
51
+ return code;
52
+ }
53
+ /**
54
+ * Extract the name of the n-transform function from player JS.
55
+ */
56
+ function extractNFunctionName(jsCode) {
57
+ const candidates = [
58
+ // Older pattern
59
+ /\.get\("n"\)\)&&\(b=([a-zA-Z0-9$]+)\([a-z]\)/,
60
+ // Newer patterns
61
+ /(?:\bncode|\bncode_)\s*=\s*([a-zA-Z0-9$]+)\([a-zA-Z0-9$]+\)/,
62
+ /["']n["']\s*,\s*([a-zA-Z0-9$]+)\(/,
63
+ /(?:\w+)=\w\.get\("n"\)\)&&\(\w=([a-zA-Z0-9$]+)\(\w\)\)/,
64
+ ];
65
+ for (const re of candidates) {
66
+ const m = jsCode.match(re);
67
+ if (m && m[1])
68
+ return m[1];
69
+ }
70
+ throw new Error("Could not locate n-transform function name");
71
+ }
72
+ /**
73
+ * Extract the body of a named function from player JS.
74
+ */
75
+ function extractFunctionBody(jsCode, fnName) {
76
+ // Try function declaration: fnName=function(a){...}
77
+ let re = new RegExp(`${fnName}=function\\(\\w\\){([^}]+)}`, "s");
78
+ let m = jsCode.match(re);
79
+ if (m && m[1])
80
+ return m[1];
81
+ // Try function declaration with more complex body
82
+ re = new RegExp(`${fnName}=function\\(\\w\\){([^}]+?)};`, "s");
83
+ m = jsCode.match(re);
84
+ if (m && m[1])
85
+ return m[1];
86
+ // Try arrow function: fnName=(a)=>{...}
87
+ re = new RegExp(`${fnName}=\\(\\w\\)=>{([^}]+)}`, "s");
88
+ m = jsCode.match(re);
89
+ if (m && m[1])
90
+ return m[1];
91
+ throw new Error("Could not extract n-transform function body");
92
+ }
93
+ /**
94
+ * Extract helper object name used inside the n-transform function.
95
+ */
96
+ function extractHelperName(fnBody) {
97
+ const m = fnBody.match(/([A-Za-z0-9$]{2})\.[A-Za-z0-9$]{2}\(\w, ?\d+\)/) ||
98
+ fnBody.match(/([A-Za-z0-9$]{2})\.[A-Za-z0-9$]{2}\(\w, ?[A-Za-z0-9$]+\)/);
99
+ if (!m || !m[1]) {
44
100
  throw new Error("Could not find helper object name");
45
- const helperName = helperMatch[1];
46
- // Extract helper object definition
47
- const helperMatch2 = jsCode.match(new RegExp(`var ${helperName}={(.*?)};`, "s"));
48
- if (!helperMatch2)
49
- throw new Error("Could not extract helper object");
50
- const helperBody = helperMatch2[1];
51
- // Build operations map
101
+ }
102
+ return m[1];
103
+ }
104
+ /**
105
+ * Extract helper object definition from player JS.
106
+ */
107
+ function extractHelperObject(jsCode, helperName) {
108
+ const patterns = [
109
+ new RegExp(`var ${helperName}={(.*?)};`, "s"),
110
+ new RegExp(`let ${helperName}={(.*?)};`, "s"),
111
+ new RegExp(`const ${helperName}={(.*?)};`, "s"),
112
+ ];
113
+ for (const re of patterns) {
114
+ const m = jsCode.match(re);
115
+ if (m && m[1])
116
+ return m[1];
117
+ }
118
+ throw new Error("Could not extract helper object");
119
+ }
120
+ /**
121
+ * Build operations map from helper object body.
122
+ */
123
+ function buildOperations(helperBody) {
52
124
  const operations = {};
53
- helperBody.split("},").forEach((entry) => {
54
- const [name, body] = entry.split(":function");
55
- if (!name || !body)
56
- return;
57
- const opName = name.trim();
125
+ // Split object entries: name:function(a,b){...}
126
+ const entries = helperBody.split("},");
127
+ for (const entry of entries) {
128
+ const [rawName, rawBody] = entry.split(":function");
129
+ if (!rawName || !rawBody)
130
+ continue;
131
+ const name = rawName.trim();
132
+ const body = rawBody;
58
133
  if (body.includes("reverse")) {
59
- operations[opName] = (a) => a.reverse();
134
+ operations[name] = (a) => a.reverse();
60
135
  }
61
136
  else if (body.includes("splice")) {
62
- operations[opName] = (a, b) => a.splice(0, b);
137
+ operations[name] = (a, b) => {
138
+ a.splice(0, b);
139
+ };
63
140
  }
64
141
  else if (body.includes("var c=a[0];a[0]=a[b%a.length];a[b]=c")) {
65
- operations[opName] = (a, b) => {
142
+ operations[name] = (a, b) => {
143
+ const idx = b % a.length;
66
144
  const c = a[0];
67
- a[0] = a[b % a.length];
68
- a[b] = c;
145
+ a[0] = a[idx];
146
+ a[idx] = c;
69
147
  };
70
148
  }
71
- // Add more cases if needed
72
- });
73
- // Build transform function
74
- const transform = (n) => {
75
- let arr = n.split("");
76
- const steps = fnBody.match(/([A-Za-z0-9$]{2})\\.[A-Za-z0-9]{2}\\(a,\\d+\\)/g) || [];
77
- steps.forEach((step) => {
78
- const opMatch = step.match(/([A-Za-z0-9$]{2})\\.([A-Za-z0-9]{2})\\(a,(\\d+)\\)/);
79
- if (!opMatch)
80
- return;
81
- const [, obj, method, numStr] = opMatch;
82
- const num = parseInt(numStr, 10);
83
- const op = operations[method];
84
- if (op)
85
- op(arr, num);
86
- });
149
+ else if (body.includes("a.push(a.splice(0,b)[0])")) {
150
+ operations[name] = (a, b) => {
151
+ while (b-- > 0) {
152
+ a.push(a.splice(0, 1)[0]);
153
+ }
154
+ };
155
+ }
156
+ // You can extend this with more patterns if YouTube adds new ops.
157
+ }
158
+ return operations;
159
+ }
160
+ /**
161
+ * Build the transform function from the function body and operations map.
162
+ */
163
+ function buildTransform(fnBody, operations) {
164
+ // Find all calls like: helper.op(a, 3)
165
+ const calls = fnBody.match(/([A-Za-z0-9$]{2})\.([A-Za-z0-9$]{2})\(\w, ?(\d+)\)/g) || [];
166
+ const steps = [];
167
+ for (const call of calls) {
168
+ const m = call.match(/([A-Za-z0-9$]{2})\.([A-Za-z0-9$]{2})\(\w, ?(\d+)\)/);
169
+ if (!m)
170
+ continue;
171
+ const method = m[2];
172
+ const arg = parseInt(m[3], 10);
173
+ steps.push({ method, arg });
174
+ }
175
+ return (n) => {
176
+ const arr = n.split("");
177
+ for (const step of steps) {
178
+ const op = operations[step.method];
179
+ if (op) {
180
+ op(arr, step.arg);
181
+ }
182
+ }
87
183
  return arr.join("");
88
184
  };
185
+ }
186
+ /**
187
+ * Get (or build) the n-transform function.
188
+ */
189
+ async function getTransform() {
190
+ if (cachedTransform)
191
+ return cachedTransform;
192
+ const jsCode = await getPlayerCode();
193
+ const fnName = extractNFunctionName(jsCode);
194
+ const fnBody = extractFunctionBody(jsCode, fnName);
195
+ const helperName = extractHelperName(fnBody);
196
+ const helperBody = extractHelperObject(jsCode, helperName);
197
+ const operations = buildOperations(helperBody);
198
+ const transform = buildTransform(fnBody, operations);
89
199
  cachedTransform = transform;
90
200
  return transform;
91
201
  }
@@ -97,14 +207,19 @@ export async function decodeN(n) {
97
207
  return transform(n);
98
208
  }
99
209
  /**
100
- * Fix a YouTube URL by decoding its n= parameter if present.
210
+ * Fix a YouTube URL by decoding its n= parameter if present and ensuring ratebypass.
101
211
  */
102
212
  export async function fixUrl(url) {
103
213
  const u = new URL(url);
104
214
  const n = u.searchParams.get("n");
105
215
  if (n) {
106
- const decoded = await decodeN(n);
107
- u.searchParams.set("n", decoded);
216
+ try {
217
+ const decoded = await decodeN(n);
218
+ u.searchParams.set("n", decoded);
219
+ }
220
+ catch (e) {
221
+ console.warn("[cipherDecoder] Failed to decode n= cipher:", e.message);
222
+ }
108
223
  }
109
224
  if (!u.searchParams.has("ratebypass")) {
110
225
  u.searchParams.set("ratebypass", "yes");
@@ -1 +1 @@
1
- {"version":3,"file":"cipherDecoder.js","sourceRoot":"","sources":["../src/cipherDecoder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cipherDecoder.js","sourceRoot":"","sources":["../src/cipherDecoder.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "distube-invidious",
3
- "version": "1.0.6",
3
+ "version": "1.0.7",
4
4
  "author": "techtimefor",
5
5
  "repository": {
6
6
  "type": "git",