@vyla-entertainment/sdk 1.9.0 → 1.11.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 (46) 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 +140 -116
  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/bcine.js +202 -0
  11. package/src/sources/cinejoy.js +194 -209
  12. package/src/sources/cinesrc.js +212 -0
  13. package/src/sources/cinesu.js +147 -93
  14. package/src/sources/flaxmovies.js +113 -21
  15. package/src/sources/frame.js +88 -0
  16. package/src/sources/fsonic.js +3 -1
  17. package/src/sources/fsonline.js +3 -1
  18. package/src/sources/lmscript.js +42 -42
  19. package/src/sources/lookmovie.js +3 -1
  20. package/src/sources/luna.js +125 -0
  21. package/src/sources/mapple.js +40 -4
  22. package/src/sources/megasource.js +47 -0
  23. package/src/sources/meowtv.js +0 -1
  24. package/src/sources/nova.js +46 -0
  25. package/src/sources/peestream.js +122 -0
  26. package/src/sources/pengu.js +8 -3
  27. package/src/sources/pstream.js +68 -0
  28. package/src/sources/rivestream.js +179 -0
  29. package/src/sources/videasy.js +3 -1
  30. package/src/sources/vidgod.js +147 -0
  31. package/src/sources/vidnest.js +3 -1
  32. package/src/sources/vidvault.js +113 -113
  33. package/src/sources/vidzee.js +154 -199
  34. package/src/sources/zxcstream.js +141 -0
  35. package/src/subtitles.js +18 -0
  36. package/src/utils/helpers.js +2 -2
  37. package/src/sources/1embed.js +0 -115
  38. package/src/sources/anikoto.js +0 -198
  39. package/src/sources/anizone.js +0 -109
  40. package/src/sources/kickassanime.js +0 -107
  41. package/src/sources/nekowatch.js +0 -57
  42. package/src/sources/opstream.js +0 -123
  43. package/src/sources/peachify.js +0 -78
  44. package/src/sources/reanime.js +0 -324
  45. package/src/sources/vidrift.js +0 -95
  46. package/src/sources/vidsync.js +0 -38
@@ -1,38 +1,38 @@
1
- name: Publish npm package
2
-
3
- on:
4
- workflow_dispatch:
5
-
6
- permissions:
7
- contents: write
8
-
9
- jobs:
10
- publish:
11
- runs-on: ubuntu-latest
12
-
13
- steps:
14
- - uses: actions/checkout@v4
15
- with:
16
- token: ${{ secrets.GITHUB_TOKEN }}
17
-
18
- - uses: actions/setup-node@v4
19
- with:
20
- node-version: 22
21
- registry-url: https://registry.npmjs.org/
22
-
23
- - name: Configure git
24
- run: |
25
- git config user.name "github-actions[bot]"
26
- git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
27
-
28
- - run: npm ci
29
-
30
- - name: Bump version
31
- run: |
32
- npm version minor
33
- git push --follow-tags
34
-
35
- - name: Publish
36
- run: npm publish
37
- env:
38
- NODE_AUTH_TOKEN: ${{ secrets.NPM_KEY }}
1
+ name: Publish npm package
2
+
3
+ on:
4
+ workflow_dispatch:
5
+
6
+ permissions:
7
+ contents: write
8
+
9
+ jobs:
10
+ publish:
11
+ runs-on: ubuntu-latest
12
+
13
+ steps:
14
+ - uses: actions/checkout@v4
15
+ with:
16
+ token: ${{ secrets.GITHUB_TOKEN }}
17
+
18
+ - uses: actions/setup-node@v4
19
+ with:
20
+ node-version: 22
21
+ registry-url: https://registry.npmjs.org/
22
+
23
+ - name: Configure git
24
+ run: |
25
+ git config user.name "github-actions[bot]"
26
+ git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
27
+
28
+ - run: npm ci
29
+
30
+ - name: Bump version
31
+ run: |
32
+ npm version minor
33
+ git push --follow-tags
34
+
35
+ - name: Publish
36
+ run: npm publish
37
+ env:
38
+ NODE_AUTH_TOKEN: ${{ secrets.NPM_KEY }}
package/.gitlab-ci.yml ADDED
@@ -0,0 +1,16 @@
1
+ stages:
2
+ - build
3
+ - test
4
+ - deploy
5
+ - publish
6
+
7
+ publish:
8
+ stage: publish
9
+ image: node:22
10
+ rules:
11
+ - if: '$CI_COMMIT_TAG'
12
+ when: manual
13
+ script:
14
+ - npm ci
15
+ - echo "//registry.npmjs.org/:_authToken=${NPM_KEY}" > .npmrc
16
+ - npm publish
package/README.md CHANGED
@@ -1,11 +1,8 @@
1
- # Vyla SDK
2
-
3
- VylaSDK is a JavaScript/TypeScript SDK for accessing Vyla's stream providers, subtitles, and download sources directly from Node.js. Instead of using the Vyla REST API, developers can run the scraping layer directly in their own environment with full control over requests, execution, and provider management.
4
-
5
- ### Installing
1
+ # vyla/sdk
2
+ VylaSDK is a javascript base version of [Vyla](https://vyla.mintlify.app/)'s stream & scrape api, allowing developers to access content providers directly without using a REST api. This gives you the power & updates of Vyla without the headaches of api keys & server reliability.
6
3
 
4
+ ## Installing
7
5
  To start, install VylaSDK through npm or pnpm:
8
-
9
6
  ```bash
10
7
  # npm
11
8
  npm install @vyla-entertainment/sdk
@@ -14,22 +11,21 @@ npm install @vyla-entertainment/sdk
14
11
  pnpm install @vyla-entertainment/sdk
15
12
  ```
16
13
 
17
- Please note we do not provide proxying, you have to do that on your end.
14
+ View our full documentation at https://docs.vyla.cc/sdk
18
15
 
19
- **View our full documentation at:** https://docs.vyla.cc/sdk
20
-
21
- ### [DMCA](https://docs.vyla.cc/misc/dmca)
16
+ # [DMCA](https://docs.vyla.cc/misc/dmca)
22
17
 
23
18
  If your source is listed here, I sincerely apologize. I understand that its inclusion may be costing you a lot of money, and that was never my intention. Please contact me as soon as possible, and I'll remove it ASAP.
24
19
 
25
20
  This is a small hobby project that I built for learning and personal interest, not for profit. I genuinely want to respect the wishes of source owners and will address any removal requests as quickly as I can.
26
21
 
27
- This project is developed and maintained by [Vyla Entertainment](https://github.com/vyla-entertainment).
22
+ This project is developed and maintained by [Vyla Entertainment](https://github.com/vyla-entertainment) (@vyla-entertainment).
28
23
 
29
24
  Original work and core authorship:
30
25
 
31
- [@endoverdosing](https://github.com/EndOverdosing)
26
+ [@alwaysmesmerizingyou](https://gitlab.com/alwaysmesmerizingyou)
27
+
32
28
  [@GavinGoGaming](https://github.com/GavinGoGaming)
33
29
 
34
- **Full credits and acknowledgements:**
30
+ Full credits and acknowledgements:
35
31
  https://docs.vyla.cc/misc/credit
package/package.json CHANGED
@@ -1,32 +1,33 @@
1
- {
2
- "name": "@vyla-entertainment/sdk",
3
- "version": "1.9.0",
4
- "scripts": {
5
- "test": "node test/index.js"
6
- },
7
- "author": "vyla-entertainment",
8
- "contributors": [
9
- {
10
- "name": "GavinGoGaming",
11
- "email": "gavin@klash.dev"
12
- },
13
- {
14
- "name": "EndOverdosing"
15
- }
16
- ],
17
- "license": "CC-BY-NC-4.0",
18
- "type": "module",
19
- "description": "Vyla's multi-provider stream scraper SDK",
20
- "main": "src/sdk.js",
21
- "types": "src/sdk.d.ts",
22
- "directories": {
23
- "test": "test"
24
- },
25
- "keywords": [],
26
- "devDependencies": {
27
- "dotenv": "^17.4.2"
28
- },
29
- "publishConfig": {
30
- "access": "public"
31
- }
32
- }
1
+ {
2
+ "name": "@vyla-entertainment/sdk",
3
+ "version": "1.11.0",
4
+ "scripts": {
5
+ "test": "node test/index.js"
6
+ },
7
+ "author": "vyla-entertainment",
8
+ "contributors": [
9
+ {
10
+ "name": "GavinGoGaming",
11
+ "email": "gavin@klash.dev"
12
+ },
13
+ {
14
+ "name": "alwaysmesmerizingyou",
15
+ "email": "alwaysmesmerizingyou@gmail.com"
16
+ }
17
+ ],
18
+ "license": "CC-BY-NC-4.0",
19
+ "type": "module",
20
+ "description": "Vyla's multi-provider stream scraper SDK",
21
+ "main": "src/sdk.js",
22
+ "types": "src/sdk.d.ts",
23
+ "directories": {
24
+ "test": "test"
25
+ },
26
+ "keywords": [],
27
+ "devDependencies": {
28
+ "dotenv": "^17.4.2"
29
+ },
30
+ "publishConfig": {
31
+ "access": "public"
32
+ }
33
+ }
package/src/config.js CHANGED
@@ -6,17 +6,6 @@
6
6
  // Fshare/Fsonic Tested: 155 ( they don't have Michael )
7
7
 
8
8
  export const SOURCES = [
9
- {
10
- key: '1embed',
11
- label: '1Embed',
12
- sourceFile: '1embed',
13
- proxyParam: '1e',
14
- timeout: 20000,
15
- jitter: 500,
16
- retries: 2,
17
- multiUrl: true,
18
- },
19
-
20
9
  {
21
10
  key: '123anime',
22
11
  label: '123Anime',
@@ -60,30 +49,6 @@ export const SOURCES = [
60
49
  skipProxy: true
61
50
  },
62
51
 
63
- {
64
- key: 'anikoto-sub',
65
- label: 'AniKoto (Sub)',
66
- sourceFile: 'anikoto',
67
- proxyParam: 'aksub',
68
- timeout: 25000,
69
- jitter: 500,
70
- retries: 2,
71
- multiUrl: true,
72
- skipProxy: true
73
- },
74
-
75
- {
76
- key: 'anikoto-dub',
77
- label: 'AniKoto (Dub)',
78
- sourceFile: 'anikoto',
79
- proxyParam: 'akdub',
80
- timeout: 25000,
81
- jitter: 500,
82
- retries: 2,
83
- multiUrl: true,
84
- skipProxy: true
85
- },
86
-
87
52
  {
88
53
  key: 'anineko-sub',
89
54
  sourceFile: 'anineko',
@@ -139,15 +104,21 @@ export const SOURCES = [
139
104
  },
140
105
 
141
106
  {
142
- key: 'anizone',
143
- label: 'AniZone',
144
- sourceFile: 'anizone',
145
- proxyParam: 'az',
107
+ key: 'bcine',
108
+ label: 'Bcine',
109
+ sourceFile: 'bcine',
110
+ proxyParam: 'bc',
146
111
  timeout: 25000,
147
112
  jitter: 500,
148
113
  retries: 2,
149
114
  multiUrl: true,
150
- skipProxy: true
115
+ cdnHeaders: [{
116
+ pattern: /1embed\.cc|videasy\.to/i,
117
+ headers: {
118
+ Referer: 'https://bcine.ru/',
119
+ Origin: 'https://bcine.ru',
120
+ },
121
+ }],
151
122
  },
152
123
 
153
124
  {
@@ -162,16 +133,37 @@ export const SOURCES = [
162
133
  skipProxy: true,
163
134
  },
164
135
 
136
+ {
137
+ key: 'cinesrc',
138
+ label: 'CineSrc',
139
+ sourceFile: 'cinesrc',
140
+ proxyParam: 'csr',
141
+ timeout: 25000,
142
+ jitter: 500,
143
+ retries: 2,
144
+ multiUrl: true,
145
+ skipProxy: true,
146
+ skipVerify: true,
147
+ cdnHeaders: [{
148
+ pattern: /glendale-plumbing\.com|1embed\.cc|bright\d+\.online/i,
149
+ headers: {
150
+ Referer: 'https://cinesrc.st/',
151
+ Origin: 'https://cinesrc.st',
152
+ },
153
+ }],
154
+ },
155
+
165
156
  {
166
157
  key: 'cinesu',
167
158
  label: 'CineSu',
168
159
  sourceFile: 'cinesu',
169
160
  proxyParam: 'cs',
170
- timeout: 20000,
161
+ timeout: 25000,
171
162
  jitter: 500,
172
163
  retries: 2,
173
- multiUrl: false,
164
+ multiUrl: true,
174
165
  skipProxy: true,
166
+ skipVerify: true,
175
167
  cdnHeaders: [{
176
168
  pattern: /glendale-plumbing\.com/i,
177
169
  headers: {
@@ -200,6 +192,18 @@ export const SOURCES = [
200
192
  },],
201
193
  },
202
194
 
195
+ {
196
+ key: 'frame',
197
+ label: 'Frame',
198
+ sourceFile: 'frame',
199
+ proxyParam: 'fr',
200
+ timeout: 25000,
201
+ jitter: 500,
202
+ retries: 2,
203
+ multiUrl: true,
204
+ skipProxy: true,
205
+ },
206
+
203
207
  {
204
208
  key: 'fsharetv',
205
209
  label: 'FShareTV',
@@ -249,18 +253,6 @@ export const SOURCES = [
249
253
  retries: 2,
250
254
  },
251
255
 
252
- {
253
- key: 'kickassanime',
254
- label: 'KickAssAnime',
255
- sourceFile: 'kickassanime',
256
- proxyParam: 'kaa',
257
- timeout: 25000,
258
- jitter: 500,
259
- retries: 2,
260
- multiUrl: true,
261
- skipProxy: true
262
- },
263
-
264
256
  {
265
257
  key: 'kisskh',
266
258
  label: 'KissKH',
@@ -296,6 +288,32 @@ export const SOURCES = [
296
288
  },
297
289
  },
298
290
 
291
+ {
292
+ key: 'luna-sub',
293
+ label: 'Luna (Sub)',
294
+ sourceFile: 'luna',
295
+ proxyParam: 'lusub',
296
+ subtype: 'sub',
297
+ timeout: 25000,
298
+ jitter: 500,
299
+ retries: 2,
300
+ multiUrl: true,
301
+ skipProxy: true,
302
+ },
303
+
304
+ {
305
+ key: 'luna-dub',
306
+ label: 'Luna (Dub)',
307
+ sourceFile: 'luna',
308
+ proxyParam: 'ludub',
309
+ subtype: 'dub',
310
+ timeout: 25000,
311
+ jitter: 500,
312
+ retries: 2,
313
+ multiUrl: true,
314
+ skipProxy: true,
315
+ },
316
+
299
317
  {
300
318
  key: 'mapple',
301
319
  label: 'Mapple',
@@ -315,33 +333,19 @@ export const SOURCES = [
315
333
  jitter: 500,
316
334
  retries: 2,
317
335
  multiUrl: true,
336
+ skipProxy: true
318
337
  },
319
338
 
320
339
  {
321
- key: 'opstream',
322
- label: 'OpStream',
323
- sourceFile: 'opstream',
324
- proxyParam: 'op',
325
- timeout: 35000,
340
+ key: 'peestream',
341
+ label: 'PeeStream',
342
+ sourceFile: 'peestream',
343
+ proxyParam: 'pee',
344
+ timeout: 25000,
326
345
  jitter: 500,
327
346
  retries: 2,
328
347
  multiUrl: true,
329
348
  skipProxy: true,
330
- verifyHeaders: {
331
- Referer: 'https://opstream.fun/',
332
- Origin: 'https://opstream.fun',
333
- },
334
- },
335
-
336
- {
337
- key: 'peachify',
338
- label: 'Peachify',
339
- sourceFile: 'peachify',
340
- proxyParam: 'pf',
341
- timeout: 30000,
342
- jitter: 500,
343
- retries: 1,
344
- multiUrl: true
345
349
  },
346
350
 
347
351
  {
@@ -354,44 +358,64 @@ export const SOURCES = [
354
358
  retries: 1,
355
359
  multiUrl: true,
356
360
  skipProxy: true,
357
- disabled: true, // Temporarily disabled because they now require google auth
361
+ disabled: false, // Enabled, but only returns streams when a manifest is provided
358
362
  },
359
363
 
360
364
  {
361
- key: 'purstream',
362
- sourceFile: 'purstream',
363
- label: 'Purstream',
365
+ key: 'pstream',
366
+ label: 'PStream',
367
+ sourceFile: 'pstream',
364
368
  proxyParam: 'ps',
365
- timeout: 20000,
369
+ timeout: 35000,
366
370
  jitter: 500,
367
- retries: 2,
368
- skipProxy: true
371
+ retries: 1,
372
+ multiUrl: true,
369
373
  },
370
374
 
371
375
  {
372
- key: 'reanime-sub',
373
- label: 'Reanime (Sub)',
374
- sourceFile: 'reanime',
375
- proxyParam: 'resub',
376
+ key: 'nova',
377
+ label: 'Nova',
378
+ sourceFile: 'nova',
379
+ proxyParam: 'nv',
376
380
  timeout: 25000,
377
381
  jitter: 500,
378
- retries: 2,
382
+ retries: 1,
379
383
  multiUrl: true,
380
- skipProxy: true
381
384
  },
382
-
385
+
383
386
  {
384
- key: 'reanime-dub',
385
- label: 'Reanime (Dub)',
386
- sourceFile: 'reanime',
387
- proxyParam: 'redub',
387
+ key: 'megasource',
388
+ label: 'MegaSource',
389
+ sourceFile: 'megasource',
390
+ proxyParam: 'mg',
388
391
  timeout: 25000,
389
392
  jitter: 500,
390
- retries: 2,
393
+ retries: 1,
391
394
  multiUrl: true,
395
+ },
396
+
397
+ {
398
+ key: 'purstream',
399
+ sourceFile: 'purstream',
400
+ label: 'Purstream',
401
+ proxyParam: 'ps',
402
+ timeout: 20000,
403
+ jitter: 500,
404
+ retries: 2,
392
405
  skipProxy: true
393
406
  },
394
407
 
408
+ {
409
+ key: 'rivestream',
410
+ label: 'RiveStream',
411
+ sourceFile: 'rivestream',
412
+ proxyParam: 'rs',
413
+ timeout: 30000,
414
+ jitter: 500,
415
+ retries: 2,
416
+ multiUrl: true,
417
+ },
418
+
395
419
  {
396
420
  key: 'vidapi',
397
421
  label: 'VidAPI',
@@ -441,6 +465,18 @@ export const SOURCES = [
441
465
  retries: 1,
442
466
  },
443
467
 
468
+ {
469
+ key: 'vidgod',
470
+ label: 'VidGod',
471
+ sourceFile: 'vidgod',
472
+ proxyParam: 'vg',
473
+ timeout: 25000,
474
+ jitter: 500,
475
+ retries: 2,
476
+ multiUrl: true,
477
+ skipProxy: true,
478
+ },
479
+
444
480
  {
445
481
  key: 'vidlink',
446
482
  label: 'Vidlink',
@@ -489,18 +525,6 @@ export const SOURCES = [
489
525
  skipProxy: true,
490
526
  },
491
527
 
492
- {
493
- key: 'vidrift',
494
- label: 'VidRift',
495
- sourceFile: 'vidrift',
496
- proxyParam: 'vr',
497
- timeout: 20000,
498
- jitter: 500,
499
- retries: 2,
500
- multiUrl: true,
501
- skipProxy: true
502
- },
503
-
504
528
  {
505
529
  key: 'vidrock',
506
530
  label: 'VidRock',
@@ -521,17 +545,6 @@ export const SOURCES = [
521
545
  },],
522
546
  },
523
547
 
524
- {
525
- key: 'vidsync',
526
- label: 'VidSync',
527
- sourceFile: 'vidsync',
528
- proxyParam: 'vs',
529
- timeout: 20000,
530
- retries: 2,
531
- multiUrl: true,
532
- disabled: true, // Temporarily disabled due to enc dec issues
533
- },
534
-
535
548
  {
536
549
  key: 'vidup',
537
550
  label: 'VidUp',
@@ -600,6 +613,17 @@ export const SOURCES = [
600
613
  skipProxy: true,
601
614
  },
602
615
 
616
+ {
617
+ key: 'zxcstream',
618
+ label: 'ZxcStream',
619
+ sourceFile: 'zxcstream',
620
+ proxyParam: 'zxc',
621
+ timeout: 25000,
622
+ jitter: 500,
623
+ retries: 2,
624
+ multiUrl: true,
625
+ },
626
+
603
627
  ];
604
628
 
605
629
  export const HEALTH_PROBE_ID = '155';
package/src/health.js CHANGED
@@ -14,7 +14,7 @@ async function withRetry(fn, attempts = 2, delay = 300) {
14
14
  return null;
15
15
  }
16
16
 
17
- export async function probeSource(tmdbApiKey, cfg, mod) {
17
+ export async function probeSource(sdk, cfg, mod) {
18
18
  const audio = /dub$/.test(cfg.key) ? 'dub' : 'sub';
19
19
  const streamArgs = {
20
20
  id: HEALTH_PROBE_ID,
@@ -23,7 +23,7 @@ export async function probeSource(tmdbApiKey, cfg, mod) {
23
23
  clientIP: null,
24
24
  absoluteBase: null,
25
25
  audio,
26
- tmdbApiKey,
26
+ sdk,
27
27
  config: cfg,
28
28
  };
29
29