@vyla-entertainment/sdk 1.9.0 → 1.10.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 (40) hide show
  1. package/.github/workflows/publish.yml +38 -38
  2. package/.gitlab-ci.yml +16 -0
  3. package/README.md +9 -13
  4. package/package.json +33 -32
  5. package/src/config.js +86 -118
  6. package/src/health.js +2 -2
  7. package/src/sdk.d.ts +122 -122
  8. package/src/sdk.js +7 -4
  9. package/src/sources/anineko.js +3 -1
  10. package/src/sources/cinejoy.js +194 -209
  11. package/src/sources/flaxmovies.js +113 -21
  12. package/src/sources/frame.js +88 -0
  13. package/src/sources/fsonic.js +3 -1
  14. package/src/sources/fsonline.js +3 -1
  15. package/src/sources/lmscript.js +42 -42
  16. package/src/sources/lookmovie.js +3 -1
  17. package/src/sources/luna.js +125 -0
  18. package/src/sources/mapple.js +40 -4
  19. package/src/sources/megasource.js +47 -0
  20. package/src/sources/meowtv.js +0 -1
  21. package/src/sources/nova.js +46 -0
  22. package/src/sources/peestream.js +122 -0
  23. package/src/sources/pengu.js +8 -3
  24. package/src/sources/rivestream.js +179 -0
  25. package/src/sources/videasy.js +3 -1
  26. package/src/sources/vidgod.js +147 -0
  27. package/src/sources/vidnest.js +3 -1
  28. package/src/sources/vidvault.js +113 -113
  29. package/src/sources/vidzee.js +154 -199
  30. package/src/subtitles.js +18 -0
  31. package/src/utils/helpers.js +2 -2
  32. package/src/sources/1embed.js +0 -115
  33. package/src/sources/anikoto.js +0 -198
  34. package/src/sources/anizone.js +0 -109
  35. package/src/sources/cinesu.js +0 -94
  36. package/src/sources/kickassanime.js +0 -107
  37. package/src/sources/nekowatch.js +0 -57
  38. package/src/sources/opstream.js +0 -123
  39. package/src/sources/peachify.js +0 -78
  40. package/src/sources/reanime.js +0 -324
@@ -1,229 +1,184 @@
1
- import { USER_AGENT } from "../utils/helpers.js";
2
-
3
- const PLAYER_ORIGIN = "https://player.vidzee.wtf";
4
- const CORE_ORIGIN = "https://core.vidzee.wtf";
5
-
6
- const SERVERS = [
7
- { id: "tik", name: "TCloud" },
8
- { id: "ipcloud", name: "IPcloud" },
9
- { id: "v6:Hindi", name: "Hindi v3" },
10
- ];
11
-
12
- const WASM_B64 = "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////////////////////////////9/D/////////////////////////////////7/////8BAwAAAB8AQZwrC0ogAAAAAADPvEDX///7////////////v///////////////////////A/z///////////////////////////7///9/AP//////AQBBiCwLDP////+/IP//////5wBBqCwLDP////////////8/PwBBxCwLUP8B///////nAAAAAAAAAAD///////////////////////////////8AAAAAAAAAAP//Pz//////Pz//qv///z/////////fX9wfzw//H9wfAEGiLQsGAoAAAP8fAEG0LQsRhPwvPlC9H/LgQwAA/////xgAQeotCzDA////////AwAA//////9///////9//////////////////////x94DAD/////vyAAQbwuCwz//////z8AAP///z8AQdguCz/8////////////////eP////////wHAAAAAGAHAAAAAAAA///////3/wH/////////////AAAAAAAAAAB/APgAQbgvCwj+//8H/v//BwBB1C8LCv////////////8AQeovCwr/////D/////8PAEGEMAsP////////BwD///////8HAEGoMAsI//////////8AQbwwCwj//////////wBB1DALiQH/////////////3///////////32Te/+vv/////////7/n39////97X/z9//////////////////////////////////////////////////////8//////f//9/////f//9/////f//9/////f/////3////9///3DwAAAAAAAP//////////DwBB+jELDP///wP///8D////AwBBlDILgAQHCAkKCwwGBgYGBgYGBgYGDQYGDgYGBgYGBgYGDxAREgYTBgYGBgYGBgYGBhQVBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGFhcGBgYYBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYZBgYGBhoGBgYGBgYGGwYGBgYGBgYGBgYGHAYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYdBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYeBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgBBgzcLFCQrKysrKysrKwEAVFZWVlZWVlZWAEGqNwufAxgAAAArKysrKysrBysrW1ZWVlZWVlZKVlYFMVAxUDFQMVAxUDFQMVAxUCRQeTFQMVAxOFAxUDFQMVAxUDFQMVAxUE4xAk4NDU4DTgAkbgBOMSZuUU4kUE45FIEbHR1TMVAxUA0xUDFQMVAbUyRQMQJce1x7XHtce1x7FHlce1x7XC0rSQNIA3hcexQAlgoBKygGBgAqBioqKwe7tSseACsHKysrASsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrASsrKysrKysrKysrKysrKysrKysrKysrKisrKysrKysrKysrKyvNRs0rACUrBwEGAVVWVlZWVlVWVgIkgYGBgYEVgYGBAAArALLRstGy0bLRAADNzAEA19fX19eDgYGBgYGBgYGBgaysrKysrKysrKwcAAAAAAAxUDFQMVAxUDFQMQIAADFQMVAxUDFQMVAxUDFQMVAxUE4xUDFQTjFQMVAxUDFQMVAxUDFQMQKHpoemh6aHpoemh6aHpoemKisrKysrKysrKysrKwAAAFRWVlZWVlZWVlZWVlYAQac7CyFUVlZWVlZWVlZWVlZWDAAMKisrKysrKysrKysrKysHKgEAQf07C3cqKysrKysrKysrKysrKysrKysrKysrKysrKytWVmyBFQArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysHbANBKytWVlZWVlZWVlZWVlZWVixWKysrKysrKysrKysrKysrKysrKysrAQBBnD0LCAxsAAAAAAAGAEHKPQvoAgYlBiUGJQYlBiUGJQYlBiUGJQYlBiUGJQYlBiUGJQYlBiUGJQYlBiUGJQYlBiUGJQYlVnqeJgYlBiUGJQYlBiUGJQYlBiUGJQYlBiUGJQYlBiUGJQYBKytPVlYsK39WVjkrK1VWVisrT1ZWLCt/VlaBN3Vbe1wrK09WVgKsBAAAOSsrVVZWKytPVlYsKytWVjITgVcAb4F+ydd+LYGBDn45f29XAIGBfhUAfgMrKysrKysrKysrKysHKyQrlysrKysrKysrKyorKysrK1ZWVlZWgIGBgYE5uyorKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrAYGBgYGBgYGBgYGBgYGBgcmsrKysrKysrKysrKysrKzQDQBOMQK0wcHX1yRQMVAxUDFQMVAxUDFQMVAxUDFQMVAxUDFQMVAxUDFQMVDX11PBR9TX19cFKysrKysrKysrKysrBwEAAQBBjcEACx9OMVAxUDFQMVAxUDFQMVANAAAAAAAkUDFQMVAxUDFQAEHOwQALVisrKysrKysrKysreVx7XHtPe1x7XHtce1x7XHtce1x7XHtce1wtKyt5FFx7XC15KlwnXHtce1x7pAAKtFx7XHtPA3g4KysrKysrKysrKysrK08tKysBAEG/wgALAUgAQcnCAAsbKisrKysrKysrKysrKysrKysrKysrKysrKysrAEGFwwALFCsrKysrKysrBwBIVlZWVlZWVlYCAEHQwwALGysrKysrKysrKysrKytVVlZWVlZWVlZWVlZWDgBBisQACxokKysrKysrKysrKysHAFZWVlZWVlZWVlZWVgBB0MQACyckKysrKysrKysrKysrKysrKwcAAAAAVlZWVlZWVlZWVlZWVlZWVlYAQbHFAAsWKisrKysrKysrKytWVlZWVlZWVlZWDgBB58UACxYqKysrKysrKysrK1ZWVlZWVlZWVlYOAEGoxgALFysrKysrKysrKysrVVZWVlZWVlZWVlYOAEGBxwALCAgAAFYBAAA5AEGQxwALvAcBIAAAAOD//wC/HQAA5wIAAHkAAAIkAAABAQAAAP///wAAAAABAgAAAP7//wE5//8AGP//AYf//wDU/v8AwwAAAdIAAAHOAAABzQAAAU8AAAHKAAABywAAAc8AAABhAAAB0wAAAdEAAACjAAAB1QAAAIIAAAHWAAAB2gAAAdkAAAHbAAAAOAAAAwAAAACx//8Bn///Acj//wIoJAAAAAAAAQEAAAD///8AM///ACb//wF+//8BKyoAAV3//wEoKgAAPyoAAT3//wFFAAABRwAAAB8qAAAcKgAAHioAAC7//wAy//8ANv//ADX//wBPpQAAS6UAADH//wAopQAARKUAAC///wAt//8A9ykAAEGlAAD9KQAAK///ACr//wDnKQAAQ6UAACqlAAC7//8AJ///ALn//wAl//8AFaUAABKlAAIkTAAAAAAAASAAAADg//8BAQAAAP///wBUAAABdAAAASYAAAElAAABQAAAAT8AAADa//8A2///AOH//wDA//8Awf//AQgAAADC//8Ax///ANH//wDK//8A+P//AKr//wCw//8ABwAAAIz//wHE//8AoP//Afn//wIacAABAQAAAP///wEgAAAA4P//AVAAAAEPAAAA8f//AAAAAAEwAAAA0P//AQEAAAD///8AAAAAAMALAAFgHAAAAAAAAdCXAAEIAAAA+P//AgWKAAAAAAABQPT/AJ7n/wDCiQAA2+f/AJLn/wCT5/8AnOf/AJ3n/wCk5/8AAAAAADiKAAAEigAA5g4AAQEAAAD///8AAAAAAMX//wFB4v8CHY8AAAgAAAH4//8AAAAAAFYAAAGq//8ASgAAAGQAAACAAAAAcAAAAH4AAAAJAAABtv//Aff//wDb4/8BnP//AZD//wGA//8Bgv//AgWsAAAAAAABEAAAAPD//wEcAAABAQAAAaPi/wFB3/8But//AOT//wILsQABAQAAAP///wEwAAAA0P//AAAAAAEJ1v8BGvH/ARnW/wDV1f8A2NX/AeTV/wED1v8B4dX/AeLV/wHB1f8AAAAAAKDj/wAAAAABAQAAAP///wIMvAAAAAAAAQEAAAD///8BvFr/AaADAAH8df8B2Fr/ADAAAAGxWv8BtVr/Ab9a/wHuWv8B1lr/Aeta/wHQ//8BvVr/Ach1/wAAAAAAMGj/AGD8/wAAAAABIAAAAOD//wAAAAABKAAAANj//wAAAAABQAAAAMD//wAAAAABIAAAAOD//wAAAAABIAAAAOD//wAAAAABIgAAAN7//wBBzc4ACwUGJ1FvdwBB3M4ACxJ8AAB/AAAAAAAAAACDjpKXAKoAQfjOAAsCtMQAQfLPAAsGxskAAADbAEHL0AALDt4AAAAA4QAAAAAAAADkAEHk0AALAecAQbrRAAsB6gBBtdIACwHtAEHM0gALkAMwDDENeA5/D4AQgRGGEokTihOOFI8VkBaTE5QXlRiWGZcamhucGZ0cnh2fHqYfqR+uH7EgsiC3Ib8ixSPII8sj3STyI/Yl9yYgLTouPS8+MD8xQDFDMkQzRTRQNVE2UjdTOFQ5WTpbO1w8YT1jPmU/ZkBoQWlCakBrQ2xEb0JxRXJGdUd9SIJJh0qJS4pMi0yMTZJOnU+eUEVXex18HX0df1iGWYhaiVqKWoxbjlyPXKxdrV6uXq9ewl/MYM1hzmHPYtBj0WTVZdZm12fwaPFp8mrza/Rs9W35bv0t/i3/LVBpUWlSaVNpVGlVaVZpV2lYaVlpWmlbaVxpXWleaV9pggCDAIQAhQCGAIcAiACJAMB1z3aAiYGKgouFjIaNcJ1xnXaed554n3mfeqB7oHyhfaGzorqju6O8pL6lw6LMpNqm26blauqn66fsbvOi+Kj5qPqp+6n8pCawKrErsk6zhAhiumO7ZLxlvWa+bb9uwG/BcMJ+w3/Dfc+N0JTRq9Ks063UsNWx1rLXxNjF2cbaAEHc1QALATwAQejVAAsrAgAAACQAAABJAG4AZABlAHgAIABvAHUAdAAgAG8AZgAgAHIAYQBuAGcAZQBBnNYACwEsAEGo1gALIQIAAAAaAAAAfgBsAGkAYgAvAGEAcgByAGEAeQAuAHQAcwBBzNYACwF8AEHY1gALZQIAAABeAAAARQBsAGUAbQBlAG4AdAAgAHQAeQBwAGUAIABtAHUAcwB0ACAAYgBlACAAbgB1AGwAbABhAGIAbABlACAAaQBmACAAYQByAHIAYQB5ACAAaQBzACAAaABvAGwAZQB5AEHM1wALASwAQdjXAAsjAgAAABwAAABJAG4AdgBhAGwAaQBkACAAbABlAG4AZwB0AGgAQfzXAAsBPABBiNgACy0CAAAAJgAAAH4AbABpAGIALwBhAHIAcgBhAHkAYgB1AGYAZgBlAHIALgB0AHMAQbzYAAsBPABByNgACy0CAAAAJgAAAH4AbABpAGIALwBzAHQAYQB0AGkAYwBhAHIAcgBhAHkALgB0AHMAQfzYAAsBPABBiNkACysCAAAAJAAAAH4AbABpAGIALwB0AHkAcABlAGQAYQByAHIAYQB5AC4AdABzAEG82QALATwAQcjZAAsxAgAAACoAAABPAGIAagBlAGMAdAAgAGEAbAByAGUAYQBkAHkAIABwAGkAbgBuAGUAZABBnNoACwE8AEGo2gALLwIAAAAoAAAATwBiAGoAZQBjAHQAIABpAHMAIABuAG8AdAAgAHAAaQBuAG4AZQBkAEGA2wALIQgAAAAgAAAAIAAAACAAAAAAAAAAQgAAAAJBAABBAAAAZA==";
13
-
14
- function base64ToU8(b64) {
15
- const cleaned = b64.replace(/\s+/g, "");
16
- if (typeof Buffer !== "undefined") {
17
- const node = Buffer.from(cleaned, "base64");
18
- const copy = new Uint8Array(node.length);
19
- copy.set(node);
20
- return copy;
21
- }
22
- const bin = atob(cleaned);
23
- const out = new Uint8Array(bin.length);
24
- for (let i = 0; i < bin.length; i++) out[i] = bin.charCodeAt(i);
25
- return out;
26
- }
1
+ import { USER_AGENT, fetchJson } from '../utils/helpers.js';
27
2
 
28
- let wasmInstancePromise = null;
3
+ const BASE_URL = 'https://core.vidzee.wtf';
4
+ const PLAYER_URL = 'https://player.vidzee.wtf';
5
+ const SERVICES = ['dcloud', 'ipcloud', 'tik', 'v6:Hindi', '3AHindi'];
6
+ const WASM_B64 = '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';
29
7
 
30
- async function initWasmCrypto() {
31
- if (wasmInstancePromise) return wasmInstancePromise;
8
+ let wasmInstanceCache = null;
32
9
 
33
- wasmInstancePromise = (async () => {
34
- if (typeof WebAssembly === "undefined") return null;
35
- try {
36
- const u8 = base64ToU8(WASM_B64);
37
- const ab = new ArrayBuffer(u8.byteLength);
38
- new Uint8Array(ab).set(u8);
39
- const module = await WebAssembly.compile(ab);
10
+ async function getWasmInstance() {
11
+ if (wasmInstanceCache) return wasmInstanceCache;
12
+ try {
13
+ const wasmBuffer = Buffer.from(WASM_B64, 'base64');
14
+ const wasmModule = await WebAssembly.compile(wasmBuffer);
40
15
 
41
- let E;
42
- let Q;
43
- let s;
16
+ let memory;
17
+ let exports;
44
18
 
45
- function L(A, B) {
46
- try {
47
- s.setUint32(A, B, true);
48
- } catch {
49
- s = new DataView(E.buffer);
50
- s.setUint32(A, B, true);
19
+ const env = {
20
+ abort() {
21
+ throw new Error('WASM abort');
22
+ }
23
+ };
24
+
25
+ const res = await WebAssembly.instantiate(wasmModule, { env });
26
+ exports = res.exports;
27
+ memory = exports.memory;
28
+
29
+ const refMap = new Map();
30
+ function pin(ptr) {
31
+ if (ptr) {
32
+ const count = refMap.get(ptr);
33
+ if (count) refMap.set(ptr, count + 1);
34
+ else refMap.set(exports.__pin(ptr), 1);
35
+ }
36
+ return ptr;
37
+ }
38
+ function unpin(ptr) {
39
+ if (ptr) {
40
+ const count = refMap.get(ptr);
41
+ if (count === 1) {
42
+ exports.__unpin(ptr);
43
+ refMap.delete(ptr);
44
+ } else if (count) {
45
+ refMap.set(ptr, count - 1);
51
46
  }
52
47
  }
48
+ }
53
49
 
54
- function U(A) {
50
+ wasmInstanceCache = {
51
+ decrypt(encryptedBytes, keyStr) {
52
+ let dataPtr = 0;
53
+ let keyPtr = 0;
55
54
  try {
56
- return s.getUint32(A, true);
57
- } catch {
58
- s = new DataView(E.buffer);
59
- return s.getUint32(A, true);
60
- }
61
- }
55
+ const len = encryptedBytes.length;
56
+ const pinPtr = exports.__pin(exports.__new(len, 1)) >>> 0;
57
+ dataPtr = exports.__new(12, 6) >>> 0;
58
+
59
+ const view = new DataView(memory.buffer);
60
+ view.setUint32(dataPtr, pinPtr, true);
61
+ view.setUint32(dataPtr + 4, pinPtr, true);
62
+ view.setUint32(dataPtr + 8, len, true);
63
+ new Uint8Array(memory.buffer, pinPtr, len).set(encryptedBytes);
64
+ exports.__unpin(pinPtr);
65
+
66
+ pin(dataPtr);
67
+
68
+ const kLen = keyStr.length;
69
+ keyPtr = exports.__new(kLen << 1, 2) >>> 0;
70
+ const u16View = new Uint16Array(memory.buffer);
71
+ for (let i = 0; i < kLen; i++) {
72
+ u16View[(keyPtr >>> 1) + i] = keyStr.charCodeAt(i);
73
+ }
62
74
 
63
- function H(A) {
64
- if (!A) return null;
65
- const B = (A + new Uint32Array(E.buffer)[(A - 4) >>> 2]) >>> 1;
66
- const C = new Uint16Array(E.buffer);
67
- let I = A >>> 1;
68
- let G = "";
69
- while (B - I > 1024) {
70
- G += String.fromCharCode(...C.subarray(I, (I += 1024)));
71
- }
72
- return G + String.fromCharCode(...C.subarray(I, B));
73
- }
75
+ const resPtr = exports.decrypt(dataPtr, keyPtr) >>> 0;
76
+ if (!resPtr) return new Uint8Array(0);
74
77
 
75
- function i(A) {
76
- if (A == null) return 0;
77
- const B = A.length;
78
- const C = Q.__new(B << 1, 2) >>> 0;
79
- const I = new Uint16Array(E.buffer);
80
- for (let G = 0; G < B; ++G) I[(C >>> 1) + G] = A.charCodeAt(G);
81
- return C;
78
+ const resView = new DataView(memory.buffer);
79
+ const outPtr = resView.getUint32(resPtr + 4, true);
80
+ const outLen = resView.getUint32(resPtr + 8, true);
81
+ return new Uint8Array(memory.buffer, outPtr, outLen).slice();
82
+ } finally {
83
+ unpin(dataPtr);
84
+ }
82
85
  }
86
+ };
87
+ return wasmInstanceCache;
88
+ } catch {
89
+ return null;
90
+ }
91
+ }
83
92
 
84
- function F(A, B) {
85
- return B ? new A(E.buffer, U(B + 4), s.getUint32(B + 8, true) / A.BYTES_PER_ELEMENT).slice() : null;
86
- }
93
+ async function requestEndpoint(url, headers) {
94
+ try {
95
+ return await fetchJson(url, {
96
+ headers,
97
+ signal: AbortSignal.timeout(6000)
98
+ });
99
+ } catch {
100
+ return null;
101
+ }
102
+ }
87
103
 
88
- function e(A, B, C, I) {
89
- if (I == null) return 0;
90
- const G = I.length;
91
- const y = Q.__pin(Q.__new(G << C, 1)) >>> 0;
92
- const D = Q.__new(12, B) >>> 0;
93
- L(D + 0, y);
94
- s.setUint32(D + 4, y, true);
95
- s.setUint32(D + 8, G << C, true);
96
- new A(E.buffer, y, G).set(I);
97
- Q.__unpin(y);
98
- return D;
99
- }
104
+ async function resolveServiceStream(service, isMovie, id, s, e, headers) {
105
+ const directEndpoint = isMovie
106
+ ? `${BASE_URL}/streams/movie/${id}?s=${service}`
107
+ : `${BASE_URL}/streams/tv/${id}/${s || 1}/${e || 1}?s=${service}`;
100
108
 
101
- const r = new Map();
109
+ let res = await requestEndpoint(directEndpoint, headers);
102
110
 
103
- function n(A) {
104
- if (A) {
105
- const B = r.get(A);
106
- if (B) r.set(A, B + 1);
107
- else r.set(Q.__pin(A), 1);
108
- }
109
- return A;
110
- }
111
+ if (!res || !res.url) {
112
+ const encEndpoint = `${directEndpoint}&e=1`;
113
+ const encRes = await requestEndpoint(encEndpoint, headers);
111
114
 
112
- function c(A) {
113
- if (A) {
114
- const B = r.get(A);
115
- if (B === 1) {
116
- Q.__unpin(A);
117
- r.delete(A);
118
- } else if (B) {
119
- r.set(A, B - 1);
120
- }
115
+ if (encRes && encRes.c) {
116
+ const instance = await getWasmInstance();
117
+ if (instance) {
118
+ const encryptedBytes = new Uint8Array(Buffer.from(encRes.c, 'base64'));
119
+ const decryptedBytes = instance.decrypt(encryptedBytes, 'player.vidzee.wtf');
120
+ if (decryptedBytes.length > 0) {
121
+ const str = new TextDecoder().decode(decryptedBytes);
122
+ try {
123
+ res = JSON.parse(str);
124
+ } catch { }
121
125
  }
122
126
  }
123
-
124
- const importObject = {
125
- env: Object.setPrototypeOf(
126
- {
127
- abort(A, B, C, I) {
128
- A = H(A >>> 0) >>> 0;
129
- B = H(B >>> 0) >>> 0;
130
- C = C >>> 0;
131
- I = I >>> 0;
132
- throw new Error(`abort: ${A} in ${B}:${C}:${I}`);
133
- },
134
- },
135
- Object.create(globalThis)
136
- ),
137
- };
138
-
139
- const instance = await WebAssembly.instantiate(module, importObject);
140
- Q = instance.exports;
141
- E = Q.memory;
142
- s = new DataView(E.buffer);
143
-
144
- return {
145
- decrypt(rawPayload, domain) {
146
- const ptrA = n(e(Uint8Array, 6, 0, rawPayload));
147
- const ptrB = i(domain);
148
- try {
149
- return F(Uint8Array, Q.decrypt(ptrA, ptrB) >>> 0);
150
- } finally {
151
- c(ptrA);
152
- }
153
- },
154
- };
155
- } catch {
156
- return null;
157
127
  }
158
- })();
159
-
160
- return wasmInstancePromise;
161
- }
128
+ }
162
129
 
163
- async function decryptWasmPayload(payloadB64) {
164
- const decrypter = await initWasmCrypto();
165
- if (!decrypter) return null;
166
- try {
167
- const raw = base64ToU8(payloadB64);
168
- const domain = "player.vidzee.wtf";
169
- const decryptedBytes = decrypter.decrypt(raw, domain);
170
- if (!decryptedBytes || !decryptedBytes.length) return null;
171
- const jsonStr = new TextDecoder().decode(decryptedBytes);
172
- return JSON.parse(jsonStr);
173
- } catch {
174
- return null;
130
+ if (res && res.url) {
131
+ const format = res.url.includes('.m3u8') ? 'hls' : 'mp4';
132
+ return {
133
+ url: res.url,
134
+ server: `VidZee (${service})`,
135
+ quality: res.language || 'Auto',
136
+ type: format,
137
+ headers: {
138
+ 'User-Agent': USER_AGENT,
139
+ 'Referer': `${PLAYER_URL}/`,
140
+ 'Origin': PLAYER_URL,
141
+ ...(res.headers || {})
142
+ }
143
+ };
175
144
  }
145
+ return null;
176
146
  }
177
147
 
178
148
  export async function getStream(args) {
179
- const { id, s, e } = args;
149
+ const { id, s, e, server, clientIP } = args;
180
150
  const isTv = s != null && e != null;
151
+ const isMovie = !isTv;
152
+
153
+ const headers = {
154
+ 'User-Agent': USER_AGENT,
155
+ 'Accept': 'application/json, text/plain, */*',
156
+ 'Referer': `${PLAYER_URL}/`,
157
+ 'Origin': PLAYER_URL,
158
+ ...(clientIP && { 'X-Forwarded-For': clientIP })
159
+ };
160
+
161
+ let targets = SERVICES;
162
+ if (server && server !== 'all') {
163
+ const clean = server.toLowerCase().replace('vidzee (', '').replace(')', '').replace('vidzee', '').trim();
164
+ targets = SERVICES.filter(srv => srv.toLowerCase().includes(clean));
165
+ if (!targets.length) targets = SERVICES;
166
+ }
181
167
 
182
- try {
183
- const streamPromises = SERVERS.map(async (server) => {
184
- const endpoint = isTv
185
- ? `${CORE_ORIGIN}/streams/tv/${encodeURIComponent(id)}/${encodeURIComponent(s)}/${encodeURIComponent(e)}?s=${encodeURIComponent(server.id)}&e=1`
186
- : `${CORE_ORIGIN}/streams/movie/${encodeURIComponent(id)}?s=${encodeURIComponent(server.id)}&e=1`;
187
-
188
- const res = await fetch(endpoint, {
189
- headers: {
190
- "User-Agent": USER_AGENT,
191
- "Accept": "application/json, text/plain, */*",
192
- "Referer": `${PLAYER_ORIGIN}/`,
193
- "Origin": PLAYER_ORIGIN,
194
- },
195
- });
196
-
197
- if (!res.ok) return null;
198
- const data = await res.json();
199
- if (!data?.c) return null;
200
-
201
- const decoded = await decryptWasmPayload(data.c);
202
- if (!decoded?.url) return null;
203
-
204
- const streamUrl = decoded.url;
205
- const isM3U8 = streamUrl.toLowerCase().includes(".m3u8");
206
-
207
- return {
208
- quality: server.name,
209
- url: streamUrl,
210
- type: isM3U8 ? "hls" : "mp4",
211
- headers: {
212
- "User-Agent": USER_AGENT,
213
- "Referer": `${PLAYER_ORIGIN}/`,
214
- "Origin": PLAYER_ORIGIN,
215
- ...(decoded.headers || {}),
216
- },
217
- };
218
- });
219
-
220
- const results = await Promise.allSettled(streamPromises);
221
- const allUrls = results
222
- .filter((r) => r.status === "fulfilled" && r.value)
223
- .map((r) => r.value);
168
+ const settled = await Promise.allSettled(
169
+ targets.map(service => resolveServiceStream(service, isMovie, id, s, e, headers))
170
+ );
224
171
 
225
- return allUrls.length ? { allUrls } : null;
226
- } catch {
227
- return null;
172
+ const allUrls = [];
173
+ for (const r of settled) {
174
+ if (r.status === 'fulfilled' && r.value) {
175
+ allUrls.push(r.value);
176
+ }
228
177
  }
178
+
179
+ return allUrls.length ? { allUrls } : null;
180
+ }
181
+
182
+ export async function getSources() {
183
+ return SERVICES.map(s => `VidZee (${s})`);
229
184
  }
package/src/subtitles.js CHANGED
@@ -3,6 +3,7 @@ import { getUA } from './utils/helpers.js';
3
3
  const SUBTITLE_BASES = [
4
4
  'https://sub.vdrk.site/v1',
5
5
  'https://sub.vdrk.site/v2',
6
+ 'https://fed-subs.pstream.mov'
6
7
  ];
7
8
  const VYLIAN_MESSAGES = [
8
9
  "Thanks for using Vyla!"
@@ -62,6 +63,23 @@ export async function fetchSubtitles(paths = []) {
62
63
  : [];
63
64
  }
64
65
 
66
+ if (base.includes('fed-subs.pstream.mov')) {
67
+ if (!data?.subtitles || typeof data.subtitles !== 'object') return [];
68
+
69
+ return Object.entries(data.subtitles)
70
+ .map(([language, sub]) => {
71
+ if (!sub?.subtitle_link) return null;
72
+ const ext = sub.subtitle_link.split('.').pop()?.toLowerCase();
73
+ return {
74
+ label: sub.subtitle_name || language,
75
+ file: sub.subtitle_link,
76
+ type: ext === 'vtt' ? 'vtt' : 'srt',
77
+ source: 'febbox'
78
+ };
79
+ })
80
+ .filter(Boolean);
81
+ }
82
+
65
83
  const v1 = Array.isArray(data) ? data : [];
66
84
  return v1.map(x => ({
67
85
  label: x.label,
@@ -67,7 +67,7 @@ function cacheGet(cache, key) {
67
67
 
68
68
  function cacheSet(cache, key, val, ttl) { cache.set(key, { val, ts: Date.now(), ttl }); }
69
69
 
70
- export async function createStreamArgs(source, tmdbApiKey, id, s, e, clientIP = null) {
70
+ export async function createStreamArgs(source, sdk, id, s, e, clientIP = null) {
71
71
  const audio = /dub$/.test(source.key) ? 'dub' : 'sub';
72
72
  return {
73
73
  id: id,
@@ -76,7 +76,7 @@ export async function createStreamArgs(source, tmdbApiKey, id, s, e, clientIP =
76
76
  clientIP: clientIP,
77
77
  absoluteBase: '/',
78
78
  audio,
79
- tmdbApiKey,
79
+ sdk,
80
80
  config: source,
81
81
  }
82
82
  }
@@ -1,115 +0,0 @@
1
- import { USER_AGENT } from '../utils/helpers.js';
2
-
3
- const BASE_URL = "https://1embed.cc";
4
-
5
- const PROVIDERS = [
6
- { id: "BUKE", name: "1Embed - BUKE" },
7
- { id: "YOTA", name: "1Embed - YOTA" },
8
- { id: "NEPT", name: "1Embed - NEPT" },
9
- { id: "AZURE", name: "1Embed - AZURE" },
10
- { id: "YORU", name: "1Embed - YORU" }
11
- ];
12
-
13
- let cachedToken = null;
14
- let tokenExpiresAt = 0;
15
-
16
- async function getToken() {
17
- const now = Math.floor(Date.now() / 1000);
18
- if (cachedToken && tokenExpiresAt > now + 10) return cachedToken;
19
- try {
20
- const res = await fetch(`${BASE_URL}/api/token`, { headers: { "Referer": `${BASE_URL}/`, "User-Agent": USER_AGENT, "Accept": "application/json" }, signal: AbortSignal.timeout(10000) });
21
- if (!res.ok) return null;
22
- const data = await res.json();
23
- cachedToken = data.token;
24
- tokenExpiresAt = data.expiresAt;
25
- return cachedToken;
26
- } catch { return null; }
27
- }
28
-
29
- function decodeBsUrl(url) {
30
- if (!url) return url;
31
- let target = url;
32
- if (url.includes('d=')) {
33
- try {
34
- const parts = url.split(/[?&]/);
35
- for (const part of parts) {
36
- if (part.startsWith('d=')) {
37
- target = decodeURIComponent(part.substring(2));
38
- break;
39
- }
40
- }
41
- } catch { }
42
- }
43
- if (target.startsWith('bs_')) {
44
- try {
45
- const decoded = Buffer.from(target.slice(3), 'base64').toString('utf-8');
46
- const reversed = decoded.split('').reverse().join('');
47
- if (reversed.startsWith('http')) return reversed;
48
- } catch { }
49
- }
50
- return url;
51
- }
52
-
53
- async function fetchProviderStream(provider, type, id, s, e, token) {
54
- try {
55
- const referer = type === "movie" ? `${BASE_URL}/embed/movie/${id}` : `${BASE_URL}/embed/tv/${id}/${s}/${e}`;
56
- const payload = { type, id: String(id), provider: provider.id };
57
- if (type === "tv") { payload.season = Number(s); payload.episode = Number(e); }
58
- const res = await fetch(`${BASE_URL}/api/sources`, {
59
- method: "POST",
60
- headers: { "User-Agent": USER_AGENT, "Referer": referer, "Origin": BASE_URL, "Accept": "application/json", "Content-Type": "application/json", "x-bcine-key": token, "X-Requested-With": "XMLHttpRequest" },
61
- body: JSON.stringify(payload),
62
- signal: AbortSignal.timeout(15000)
63
- });
64
- if (!res.ok) return null;
65
- const data = await res.json();
66
-
67
- let rawSources = [];
68
- if (Array.isArray(data.servers)) rawSources.push(...data.servers);
69
- if (data.providerResults?.[provider.id]?.sources) rawSources.push(...data.providerResults[provider.id].sources);
70
- if (data.providerResults?.[provider.id] && Array.isArray(data.providerResults[provider.id])) rawSources.push(...data.providerResults[provider.id]);
71
-
72
- if (!rawSources.length) return null;
73
- const results = [];
74
- for (const src of rawSources) {
75
- if (typeof src !== 'object' || !src) continue;
76
- let rawUrl = src.url || src.file || src.link;
77
- if (typeof rawUrl !== 'string') continue;
78
- let streamUrl = decodeBsUrl(rawUrl);
79
- if (streamUrl.startsWith('/')) streamUrl = `${BASE_URL}${streamUrl}`;
80
- const isWorker = streamUrl.includes('omena-puu') || streamUrl.includes('nocach') || streamUrl.includes('?p=');
81
- const isHls = src.type === 'hls' || src.type === 'm3u8' || streamUrl.includes('m3u8') || isWorker;
82
- if (isHls && !streamUrl.includes('m3u8')) streamUrl += streamUrl.includes('?') ? '&format=.m3u8' : '?format=.m3u8';
83
- const srcHeaders = (src.headers && typeof src.headers === 'object') ? src.headers : {};
84
- results.push({
85
- url: streamUrl,
86
- server: provider.name,
87
- quality: src.quality || src.label || src.title || "Auto",
88
- type: isHls ? "hls" : "mp4",
89
- headers: { "User-Agent": USER_AGENT, "Referer": referer, "Origin": BASE_URL, ...srcHeaders },
90
- });
91
- }
92
- return results;
93
- } catch {
94
- return null;
95
- }
96
- }
97
-
98
- export async function getStream(args) {
99
- const { id, s, e, server } = args;
100
- const type = s != null && e != null ? "tv" : "movie";
101
- const token = await getToken();
102
- if (!token) return null;
103
- let targets = PROVIDERS;
104
- if (server && server !== 'all') {
105
- const cleanName = server.replace('1Embed - ', '').toLowerCase();
106
- targets = PROVIDERS.filter(p => p.id.toLowerCase() === cleanName || p.name.toLowerCase().includes(cleanName));
107
- if (!targets.length) targets = PROVIDERS;
108
- }
109
- const settled = await Promise.allSettled(targets.map(p => fetchProviderStream(p, type, id, s, e, token)));
110
- const allUrls = [];
111
- for (const r of settled) if (r.status === 'fulfilled' && r.value) allUrls.push(...r.value);
112
- return allUrls.length ? { allUrls } : null;
113
- }
114
-
115
- export async function getSources() { return PROVIDERS.map(p => p.name); }