From 9517612e80d0a7f6f9888a67100fc1c1fa6413d2 Mon Sep 17 00:00:00 2001 From: alwaysmesmerizingyou Date: Sun, 4 Oct 2026 20:02:49 -0700 Subject: [PATCH] Untrack node_modules --- node_modules/.package-lock.json | 14 - .../@vyla-entertainment/sdk/.env.example | 1 - .../sdk/.github/workflows/publish.yml | 38 -- .../@vyla-entertainment/sdk/.gitlab-ci.yml | 16 - node_modules/@vyla-entertainment/sdk/LICENSE | 407 --------------- .../@vyla-entertainment/sdk/README.md | 31 -- .../@vyla-entertainment/sdk/package.json | 33 -- .../@vyla-entertainment/sdk/src/config.js | 487 ------------------ .../sdk/src/downloads/downloads.js | 53 -- .../@vyla-entertainment/sdk/src/health.js | 38 -- .../@vyla-entertainment/sdk/src/sdk.d.ts | 122 ----- .../@vyla-entertainment/sdk/src/sdk.js | 68 --- .../sdk/src/sources/111477.js | 101 ---- .../sdk/src/sources/123anime.js | 57 -- .../sdk/src/sources/anihq.js | 124 ----- .../sdk/src/sources/anineko.js | 190 ------- .../sdk/src/sources/bcine.js | 202 -------- .../sdk/src/sources/dulo.js | 150 ------ .../sdk/src/sources/flaxmovies.js | 118 ----- .../sdk/src/sources/fsonline.js | 48 -- .../sdk/src/sources/kisskh.js | 60 --- .../sdk/src/sources/lmscript.js | 43 -- .../sdk/src/sources/lookmovie.js | 80 --- .../sdk/src/sources/movienight.js | 117 ----- .../sdk/src/sources/movy.js | 282 ---------- .../sdk/src/sources/pengu.js | 50 -- .../sdk/src/sources/pstream.js | 68 --- .../sdk/src/sources/purstream.js | 104 ---- .../sdk/src/sources/rivestream.js | 179 ------- .../sdk/src/sources/streamaggregator.js | 129 ----- .../sdk/src/sources/vidapi.js | 115 ----- .../sdk/src/sources/vidcore.js | 123 ----- .../sdk/src/sources/vidfast.js | 123 ----- .../sdk/src/sources/vidgod.js | 147 ------ .../sdk/src/sources/vidlink.js | 28 - .../sdk/src/sources/vidnest.js | 79 --- .../sdk/src/sources/vidrock.js | 145 ------ .../sdk/src/sources/vidup.js | 123 ----- .../sdk/src/sources/vidvault.js | 188 ------- .../sdk/src/sources/vidzee.js | 184 ------- .../sdk/src/sources/vixsrc.js | 112 ---- .../sdk/src/sources/xdownloader.js | 129 ----- .../@vyla-entertainment/sdk/src/subtitles.js | 122 ----- .../sdk/src/utils/helpers.js | 230 --------- 44 files changed, 5258 deletions(-) delete mode 100644 node_modules/.package-lock.json delete mode 100644 node_modules/@vyla-entertainment/sdk/.env.example delete mode 100644 node_modules/@vyla-entertainment/sdk/.github/workflows/publish.yml delete mode 100644 node_modules/@vyla-entertainment/sdk/.gitlab-ci.yml delete mode 100644 node_modules/@vyla-entertainment/sdk/LICENSE delete mode 100644 node_modules/@vyla-entertainment/sdk/README.md delete mode 100644 node_modules/@vyla-entertainment/sdk/package.json delete mode 100644 node_modules/@vyla-entertainment/sdk/src/config.js delete mode 100644 node_modules/@vyla-entertainment/sdk/src/downloads/downloads.js delete mode 100644 node_modules/@vyla-entertainment/sdk/src/health.js delete mode 100644 node_modules/@vyla-entertainment/sdk/src/sdk.d.ts delete mode 100644 node_modules/@vyla-entertainment/sdk/src/sdk.js delete mode 100644 node_modules/@vyla-entertainment/sdk/src/sources/111477.js delete mode 100644 node_modules/@vyla-entertainment/sdk/src/sources/123anime.js delete mode 100644 node_modules/@vyla-entertainment/sdk/src/sources/anihq.js delete mode 100644 node_modules/@vyla-entertainment/sdk/src/sources/anineko.js delete mode 100644 node_modules/@vyla-entertainment/sdk/src/sources/bcine.js delete mode 100644 node_modules/@vyla-entertainment/sdk/src/sources/dulo.js delete mode 100644 node_modules/@vyla-entertainment/sdk/src/sources/flaxmovies.js delete mode 100644 node_modules/@vyla-entertainment/sdk/src/sources/fsonline.js delete mode 100644 node_modules/@vyla-entertainment/sdk/src/sources/kisskh.js delete mode 100644 node_modules/@vyla-entertainment/sdk/src/sources/lmscript.js delete mode 100644 node_modules/@vyla-entertainment/sdk/src/sources/lookmovie.js delete mode 100644 node_modules/@vyla-entertainment/sdk/src/sources/movienight.js delete mode 100644 node_modules/@vyla-entertainment/sdk/src/sources/movy.js delete mode 100644 node_modules/@vyla-entertainment/sdk/src/sources/pengu.js delete mode 100644 node_modules/@vyla-entertainment/sdk/src/sources/pstream.js delete mode 100644 node_modules/@vyla-entertainment/sdk/src/sources/purstream.js delete mode 100644 node_modules/@vyla-entertainment/sdk/src/sources/rivestream.js delete mode 100644 node_modules/@vyla-entertainment/sdk/src/sources/streamaggregator.js delete mode 100644 node_modules/@vyla-entertainment/sdk/src/sources/vidapi.js delete mode 100644 node_modules/@vyla-entertainment/sdk/src/sources/vidcore.js delete mode 100644 node_modules/@vyla-entertainment/sdk/src/sources/vidfast.js delete mode 100644 node_modules/@vyla-entertainment/sdk/src/sources/vidgod.js delete mode 100644 node_modules/@vyla-entertainment/sdk/src/sources/vidlink.js delete mode 100644 node_modules/@vyla-entertainment/sdk/src/sources/vidnest.js delete mode 100644 node_modules/@vyla-entertainment/sdk/src/sources/vidrock.js delete mode 100644 node_modules/@vyla-entertainment/sdk/src/sources/vidup.js delete mode 100644 node_modules/@vyla-entertainment/sdk/src/sources/vidvault.js delete mode 100644 node_modules/@vyla-entertainment/sdk/src/sources/vidzee.js delete mode 100644 node_modules/@vyla-entertainment/sdk/src/sources/vixsrc.js delete mode 100644 node_modules/@vyla-entertainment/sdk/src/sources/xdownloader.js delete mode 100644 node_modules/@vyla-entertainment/sdk/src/subtitles.js delete mode 100644 node_modules/@vyla-entertainment/sdk/src/utils/helpers.js diff --git a/node_modules/.package-lock.json b/node_modules/.package-lock.json deleted file mode 100644 index 5e9be4e..0000000 --- a/node_modules/.package-lock.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "name": "tv", - "version": "1.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "node_modules/@vyla-entertainment/sdk": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@vyla-entertainment/sdk/-/sdk-1.14.0.tgz", - "integrity": "sha512-ZZm3xnfuWTDI0IU/UyGnPgFmSCFjPzIyb71EauggrFfRa6ZyjSrjNAAH8onbHyD5uO3TkJFUHF8VIeFJK8t/yA==", - "license": "CC-BY-NC-4.0" - } - } -} diff --git a/node_modules/@vyla-entertainment/sdk/.env.example b/node_modules/@vyla-entertainment/sdk/.env.example deleted file mode 100644 index a643bc8..0000000 --- a/node_modules/@vyla-entertainment/sdk/.env.example +++ /dev/null @@ -1 +0,0 @@ -TMDB_API_KEY=your_tmdb_api_key_here \ No newline at end of file diff --git a/node_modules/@vyla-entertainment/sdk/.github/workflows/publish.yml b/node_modules/@vyla-entertainment/sdk/.github/workflows/publish.yml deleted file mode 100644 index 8ac2f68..0000000 --- a/node_modules/@vyla-entertainment/sdk/.github/workflows/publish.yml +++ /dev/null @@ -1,38 +0,0 @@ -name: Publish npm package - -on: - workflow_dispatch: - -permissions: - contents: write - -jobs: - publish: - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v4 - with: - token: ${{ secrets.GITHUB_TOKEN }} - - - uses: actions/setup-node@v4 - with: - node-version: 22 - registry-url: https://registry.npmjs.org/ - - - name: Configure git - run: | - git config user.name "github-actions[bot]" - git config user.email "41898282+github-actions[bot]@users.noreply.github.com" - - - run: npm ci - - - name: Bump version - run: | - npm version minor - git push --follow-tags - - - name: Publish - run: npm publish - env: - NODE_AUTH_TOKEN: ${{ secrets.NPM_KEY }} diff --git a/node_modules/@vyla-entertainment/sdk/.gitlab-ci.yml b/node_modules/@vyla-entertainment/sdk/.gitlab-ci.yml deleted file mode 100644 index 717d1e7..0000000 --- a/node_modules/@vyla-entertainment/sdk/.gitlab-ci.yml +++ /dev/null @@ -1,16 +0,0 @@ -stages: - - build - - test - - deploy - - publish - -publish: - stage: publish - image: node:22 - rules: - - if: '$CI_COMMIT_TAG' - when: manual - script: - - npm ci - - echo "//registry.npmjs.org/:_authToken=${NPM_KEY}" > .npmrc - - npm publish \ No newline at end of file diff --git a/node_modules/@vyla-entertainment/sdk/LICENSE b/node_modules/@vyla-entertainment/sdk/LICENSE deleted file mode 100644 index 12d4ca7..0000000 --- a/node_modules/@vyla-entertainment/sdk/LICENSE +++ /dev/null @@ -1,407 +0,0 @@ -Attribution-NonCommercial 4.0 International - -======================================================================= - -Creative Commons Corporation ("Creative Commons") is not a law firm and -does not provide legal services or legal advice. Distribution of -Creative Commons public licenses does not create a lawyer-client or -other relationship. Creative Commons makes its licenses and related -information available on an "as-is" basis. Creative Commons gives no -warranties regarding its licenses, any material licensed under their -terms and conditions, or any related information. Creative Commons -disclaims all liability for damages resulting from their use to the -fullest extent possible. - -Using Creative Commons Public Licenses - -Creative Commons public licenses provide a standard set of terms and -conditions that creators and other rights holders may use to share -original works of authorship and other material subject to copyright -and certain other rights specified in the public license below. The -following considerations are for informational purposes only, are not -exhaustive, and do not form part of our licenses. - - Considerations for licensors: Our public licenses are - intended for use by those authorized to give the public - permission to use material in ways otherwise restricted by - copyright and certain other rights. Our licenses are - irrevocable. Licensors should read and understand the terms - and conditions of the license they choose before applying it. - Licensors should also secure all rights necessary before - applying our licenses so that the public can reuse the - material as expected. Licensors should clearly mark any - material not subject to the license. This includes other CC- - licensed material, or material used under an exception or - limitation to copyright. More considerations for licensors: - wiki.creativecommons.org/Considerations_for_licensors - - Considerations for the public: By using one of our public - licenses, a licensor grants the public permission to use the - licensed material under specified terms and conditions. If - the licensor's permission is not necessary for any reason--for - example, because of any applicable exception or limitation to - copyright--then that use is not regulated by the license. Our - licenses grant only permissions under copyright and certain - other rights that a licensor has authority to grant. Use of - the licensed material may still be restricted for other - reasons, including because others have copyright or other - rights in the material. A licensor may make special requests, - such as asking that all changes be marked or described. - Although not required by our licenses, you are encouraged to - respect those requests where reasonable. More considerations - for the public: - wiki.creativecommons.org/Considerations_for_licensees - -======================================================================= - -Creative Commons Attribution-NonCommercial 4.0 International Public -License - -By exercising the Licensed Rights (defined below), You accept and agree -to be bound by the terms and conditions of this Creative Commons -Attribution-NonCommercial 4.0 International Public License ("Public -License"). To the extent this Public License may be interpreted as a -contract, You are granted the Licensed Rights in consideration of Your -acceptance of these terms and conditions, and the Licensor grants You -such rights in consideration of benefits the Licensor receives from -making the Licensed Material available under these terms and -conditions. - - -Section 1 -- Definitions. - - a. Adapted Material means material subject to Copyright and Similar - Rights that is derived from or based upon the Licensed Material - and in which the Licensed Material is translated, altered, - arranged, transformed, or otherwise modified in a manner requiring - permission under the Copyright and Similar Rights held by the - Licensor. For purposes of this Public License, where the Licensed - Material is a musical work, performance, or sound recording, - Adapted Material is always produced where the Licensed Material is - synched in timed relation with a moving image. - - b. Adapter's License means the license You apply to Your Copyright - and Similar Rights in Your contributions to Adapted Material in - accordance with the terms and conditions of this Public License. - - c. Copyright and Similar Rights means copyright and/or similar rights - closely related to copyright including, without limitation, - performance, broadcast, sound recording, and Sui Generis Database - Rights, without regard to how the rights are labeled or - categorized. For purposes of this Public License, the rights - specified in Section 2(b)(1)-(2) are not Copyright and Similar - Rights. - d. Effective Technological Measures means those measures that, in the - absence of proper authority, may not be circumvented under laws - fulfilling obligations under Article 11 of the WIPO Copyright - Treaty adopted on December 20, 1996, and/or similar international - agreements. - - e. Exceptions and Limitations means fair use, fair dealing, and/or - any other exception or limitation to Copyright and Similar Rights - that applies to Your use of the Licensed Material. - - f. Licensed Material means the artistic or literary work, database, - or other material to which the Licensor applied this Public - License. - - g. Licensed Rights means the rights granted to You subject to the - terms and conditions of this Public License, which are limited to - all Copyright and Similar Rights that apply to Your use of the - Licensed Material and that the Licensor has authority to license. - - h. Licensor means the individual(s) or entity(ies) granting rights - under this Public License. - - i. NonCommercial means not primarily intended for or directed towards - commercial advantage or monetary compensation. For purposes of - this Public License, the exchange of the Licensed Material for - other material subject to Copyright and Similar Rights by digital - file-sharing or similar means is NonCommercial provided there is - no payment of monetary compensation in connection with the - exchange. - - j. Share means to provide material to the public by any means or - process that requires permission under the Licensed Rights, such - as reproduction, public display, public performance, distribution, - dissemination, communication, or importation, and to make material - available to the public including in ways that members of the - public may access the material from a place and at a time - individually chosen by them. - - k. Sui Generis Database Rights means rights other than copyright - resulting from Directive 96/9/EC of the European Parliament and of - the Council of 11 March 1996 on the legal protection of databases, - as amended and/or succeeded, as well as other essentially - equivalent rights anywhere in the world. - - l. You means the individual or entity exercising the Licensed Rights - under this Public License. Your has a corresponding meaning. - - -Section 2 -- Scope. - - a. License grant. - - 1. Subject to the terms and conditions of this Public License, - the Licensor hereby grants You a worldwide, royalty-free, - non-sublicensable, non-exclusive, irrevocable license to - exercise the Licensed Rights in the Licensed Material to: - - a. reproduce and Share the Licensed Material, in whole or - in part, for NonCommercial purposes only; and - - b. produce, reproduce, and Share Adapted Material for - NonCommercial purposes only. - - 2. Exceptions and Limitations. For the avoidance of doubt, where - Exceptions and Limitations apply to Your use, this Public - License does not apply, and You do not need to comply with - its terms and conditions. - - 3. Term. The term of this Public License is specified in Section - 6(a). - - 4. Media and formats; technical modifications allowed. The - Licensor authorizes You to exercise the Licensed Rights in - all media and formats whether now known or hereafter created, - and to make technical modifications necessary to do so. The - Licensor waives and/or agrees not to assert any right or - authority to forbid You from making technical modifications - necessary to exercise the Licensed Rights, including - technical modifications necessary to circumvent Effective - Technological Measures. For purposes of this Public License, - simply making modifications authorized by this Section 2(a) - (4) never produces Adapted Material. - - 5. Downstream recipients. - - a. Offer from the Licensor -- Licensed Material. Every - recipient of the Licensed Material automatically - receives an offer from the Licensor to exercise the - Licensed Rights under the terms and conditions of this - Public License. - - b. No downstream restrictions. You may not offer or impose - any additional or different terms or conditions on, or - apply any Effective Technological Measures to, the - Licensed Material if doing so restricts exercise of the - Licensed Rights by any recipient of the Licensed - Material. - - 6. No endorsement. Nothing in this Public License constitutes or - may be construed as permission to assert or imply that You - are, or that Your use of the Licensed Material is, connected - with, or sponsored, endorsed, or granted official status by, - the Licensor or others designated to receive attribution as - provided in Section 3(a)(1)(A)(i). - - b. Other rights. - - 1. Moral rights, such as the right of integrity, are not - licensed under this Public License, nor are publicity, - privacy, and/or other similar personality rights; however, to - the extent possible, the Licensor waives and/or agrees not to - assert any such rights held by the Licensor to the limited - extent necessary to allow You to exercise the Licensed - Rights, but not otherwise. - - 2. Patent and trademark rights are not licensed under this - Public License. - - 3. To the extent possible, the Licensor waives any right to - collect royalties from You for the exercise of the Licensed - Rights, whether directly or through a collecting society - under any voluntary or waivable statutory or compulsory - licensing scheme. In all other cases the Licensor expressly - reserves any right to collect such royalties, including when - the Licensed Material is used other than for NonCommercial - purposes. - - -Section 3 -- License Conditions. - -Your exercise of the Licensed Rights is expressly made subject to the -following conditions. - - a. Attribution. - - 1. If You Share the Licensed Material (including in modified - form), You must: - - a. retain the following if it is supplied by the Licensor - with the Licensed Material: - - i. identification of the creator(s) of the Licensed - Material and any others designated to receive - attribution, in any reasonable manner requested by - the Licensor (including by pseudonym if - designated); - - ii. a copyright notice; - - iii. a notice that refers to this Public License; - - iv. a notice that refers to the disclaimer of - warranties; - - v. a URI or hyperlink to the Licensed Material to the - extent reasonably practicable; - - b. indicate if You modified the Licensed Material and - retain an indication of any previous modifications; and - - c. indicate the Licensed Material is licensed under this - Public License, and include the text of, or the URI or - hyperlink to, this Public License. - - 2. You may satisfy the conditions in Section 3(a)(1) in any - reasonable manner based on the medium, means, and context in - which You Share the Licensed Material. For example, it may be - reasonable to satisfy the conditions by providing a URI or - hyperlink to a resource that includes the required - information. - - 3. If requested by the Licensor, You must remove any of the - information required by Section 3(a)(1)(A) to the extent - reasonably practicable. - - 4. If You Share Adapted Material You produce, the Adapter's - License You apply must not prevent recipients of the Adapted - Material from complying with this Public License. - - -Section 4 -- Sui Generis Database Rights. - -Where the Licensed Rights include Sui Generis Database Rights that -apply to Your use of the Licensed Material: - - a. for the avoidance of doubt, Section 2(a)(1) grants You the right - to extract, reuse, reproduce, and Share all or a substantial - portion of the contents of the database for NonCommercial purposes - only; - - b. if You include all or a substantial portion of the database - contents in a database in which You have Sui Generis Database - Rights, then the database in which You have Sui Generis Database - Rights (but not its individual contents) is Adapted Material; and - - c. You must comply with the conditions in Section 3(a) if You Share - all or a substantial portion of the contents of the database. - -For the avoidance of doubt, this Section 4 supplements and does not -replace Your obligations under this Public License where the Licensed -Rights include other Copyright and Similar Rights. - - -Section 5 -- Disclaimer of Warranties and Limitation of Liability. - - a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE - EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS - AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF - ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, - IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, - WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR - PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, - ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT - KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT - ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. - - b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE - TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, - NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, - INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, - COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR - USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN - ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR - DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR - IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. - - c. The disclaimer of warranties and limitation of liability provided - above shall be interpreted in a manner that, to the extent - possible, most closely approximates an absolute disclaimer and - waiver of all liability. - - -Section 6 -- Term and Termination. - - a. This Public License applies for the term of the Copyright and - Similar Rights licensed here. However, if You fail to comply with - this Public License, then Your rights under this Public License - terminate automatically. - - b. Where Your right to use the Licensed Material has terminated under - Section 6(a), it reinstates: - - 1. automatically as of the date the violation is cured, provided - it is cured within 30 days of Your discovery of the - violation; or - - 2. upon express reinstatement by the Licensor. - - For the avoidance of doubt, this Section 6(b) does not affect any - right the Licensor may have to seek remedies for Your violations - of this Public License. - - c. For the avoidance of doubt, the Licensor may also offer the - Licensed Material under separate terms or conditions or stop - distributing the Licensed Material at any time; however, doing so - will not terminate this Public License. - - d. Sections 1, 5, 6, 7, and 8 survive termination of this Public - License. - - -Section 7 -- Other Terms and Conditions. - - a. The Licensor shall not be bound by any additional or different - terms or conditions communicated by You unless expressly agreed. - - b. Any arrangements, understandings, or agreements regarding the - Licensed Material not stated herein are separate from and - independent of the terms and conditions of this Public License. - - -Section 8 -- Interpretation. - - a. For the avoidance of doubt, this Public License does not, and - shall not be interpreted to, reduce, limit, restrict, or impose - conditions on any use of the Licensed Material that could lawfully - be made without permission under this Public License. - - b. To the extent possible, if any provision of this Public License is - deemed unenforceable, it shall be automatically reformed to the - minimum extent necessary to make it enforceable. If the provision - cannot be reformed, it shall be severed from this Public License - without affecting the enforceability of the remaining terms and - conditions. - - c. No term or condition of this Public License will be waived and no - failure to comply consented to unless expressly agreed to by the - Licensor. - - d. Nothing in this Public License constitutes or may be interpreted - as a limitation upon, or waiver of, any privileges and immunities - that apply to the Licensor or You, including from the legal - processes of any jurisdiction or authority. - -======================================================================= - -Creative Commons is not a party to its public -licenses. Notwithstanding, Creative Commons may elect to apply one of -its public licenses to material it publishes and in those instances -will be considered the “Licensor.” The text of the Creative Commons -public licenses is dedicated to the public domain under the CC0 Public -Domain Dedication. Except for the limited purpose of indicating that -material is shared under a Creative Commons public license or as -otherwise permitted by the Creative Commons policies published at -creativecommons.org/policies, Creative Commons does not authorize the -use of the trademark "Creative Commons" or any other trademark or logo -of Creative Commons without its prior written consent including, -without limitation, in connection with any unauthorized modifications -to any of its public licenses or any other arrangements, -understandings, or agreements concerning use of licensed material. For -the avoidance of doubt, this paragraph does not form part of the -public licenses. - -Creative Commons may be contacted at creativecommons.org. \ No newline at end of file diff --git a/node_modules/@vyla-entertainment/sdk/README.md b/node_modules/@vyla-entertainment/sdk/README.md deleted file mode 100644 index 5ef2f87..0000000 --- a/node_modules/@vyla-entertainment/sdk/README.md +++ /dev/null @@ -1,31 +0,0 @@ -# vyla/sdk -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. - -## Installing -To start, install VylaSDK through npm or pnpm: -```bash -# npm -npm install @vyla-entertainment/sdk - -# pnpm -pnpm install @vyla-entertainment/sdk -``` - -View our full documentation at https://docs.vyla.cc/sdk - -# [DMCA](https://docs.vyla.cc/misc/dmca) - -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. - -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. - -This project is developed and maintained by [Vyla Entertainment](https://github.com/vyla-entertainment) (@vyla-entertainment). - -Original work and core authorship: - -[@alwaysmesmerizingyou](https://gitlab.com/alwaysmesmerizingyou) - -[@GavinGoGaming](https://github.com/GavinGoGaming) - -Full credits and acknowledgements: -https://docs.vyla.cc/misc/credit \ No newline at end of file diff --git a/node_modules/@vyla-entertainment/sdk/package.json b/node_modules/@vyla-entertainment/sdk/package.json deleted file mode 100644 index 1db9b37..0000000 --- a/node_modules/@vyla-entertainment/sdk/package.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "name": "@vyla-entertainment/sdk", - "version": "1.14.0", - "scripts": { - "test": "node test/index.js" - }, - "author": "vyla-entertainment", - "contributors": [ - { - "name": "GavinGoGaming", - "email": "gavin@klash.dev" - }, - { - "name": "alwaysmesmerizingyou", - "email": "alwaysmesmerizingyou@gmail.com" - } - ], - "license": "CC-BY-NC-4.0", - "type": "module", - "description": "Vyla's multi-provider stream scraper SDK", - "main": "src/sdk.js", - "types": "src/sdk.d.ts", - "directories": { - "test": "test" - }, - "keywords": [], - "devDependencies": { - "dotenv": "^17.4.2" - }, - "publishConfig": { - "access": "public" - } -} \ No newline at end of file diff --git a/node_modules/@vyla-entertainment/sdk/src/config.js b/node_modules/@vyla-entertainment/sdk/src/config.js deleted file mode 100644 index e0223a9..0000000 --- a/node_modules/@vyla-entertainment/sdk/src/config.js +++ /dev/null @@ -1,487 +0,0 @@ -// Currently active sources reported on 6:18:22 PM PST 9/13/2026 - -// None Anime Tested: 936075 -// Anime Tested: 37854 - -// Fshare/Fsonic Tested: 155 ( they don't have Michael ) - -export const SOURCES = [ - { - key: '123anime', - label: '123Anime', - sourceFile: '123anime', - proxyParam: 'a1', - timeout: 25000, - jitter: 500, - retries: 2, - multiUrl: false, - skipProxy: true, - cdnHeaders: [{ - pattern: /hlsx\d+cdn\.|burntburst\d+\.store|echovideo\.ru/i, - headers: { - Referer: 'https://play2.echovideo.ru/', - Origin: 'https://play2.echovideo.ru', - }, - },], - }, - - { - key: '111477', - label: '111477', - sourceFile: '111477', - proxyParam: 'a11', - timeout: 25000, - jitter: 500, - retries: 2, - multiUrl: true, - skipProxy: true, - cdnHeaders: [{ - pattern: /111477\.xyz/i, - headers: { - Referer: 'https://st.111477.xyz/', - Origin: 'https://st.111477.xyz', - }, - }], - }, - - { - key: 'anihq-sub', - label: 'AniHQ (Sub)', - sourceFile: 'anihq', - proxyParam: 'ahsub', - timeout: 25000, - jitter: 500, - retries: 2, - multiUrl: true, - skipProxy: true - }, - - { - key: 'anihq-dub', - label: 'AniHQ (Dub)', - sourceFile: 'anihq', - proxyParam: 'ahdub', - timeout: 25000, - jitter: 500, - retries: 2, - multiUrl: true, - skipProxy: true - }, - - { - key: 'anineko-sub', - sourceFile: 'anineko', - label: 'AniNeko (Sub)', - proxyParam: 'anksub', - timeout: 25000, - jitter: 500, - retries: 2 - }, - - { - key: 'anineko-dub', - sourceFile: 'anineko', - label: 'AniNeko (Dub)', - proxyParam: 'ankdub', - timeout: 25000, - jitter: 500, - retries: 2 - }, - - { - key: 'bcine', - label: 'Bcine', - sourceFile: 'bcine', - proxyParam: 'bc', - timeout: 25000, - jitter: 500, - retries: 2, - multiUrl: true, - cdnHeaders: [{ - pattern: /1embed\.cc|videasy\.to/i, - headers: { - Referer: 'https://bcine.ru/', - Origin: 'https://bcine.ru', - }, - }], - }, - - { - key: 'dulo', - label: 'Dulo', - sourceFile: 'dulo', - proxyParam: 'dl', - timeout: 25000, - jitter: 500, - retries: 2, - multiUrl: true, - skipProxy: true, - cdnHeaders: [{ - pattern: /dulo\.mov/i, - headers: { - Referer: 'https://dulo.mov/', - Origin: 'https://dulo.mov', - }, - }], - }, - - { - key: 'flaxmovies', - label: 'FlaxMovies', - sourceFile: 'flaxmovies', - proxyParam: 'fx', - timeout: 20000, - jitter: 500, - retries: 2, - multiUrl: true, - skipProxy: true, - cdnHeaders: [{ - pattern: /flix2watch\.pro/i, - headers: { - Referer: 'https://flaxmovies.xyz/', - Origin: 'https://flaxmovies.xyz', - }, - },], - }, - - { - key: 'fsonline', - label: 'FSOnline', - sourceFile: 'fsonline', - proxyParam: 'fo', - timeout: 20000, - retries: 1, - jitter: 0, - multiUrl: true, - skipProxy: true, - }, - - { - key: 'kisskh', - label: 'KissKH', - sourceFile: 'kisskh', - proxyParam: 'kk', - timeout: 30000, - jitter: 500, - retries: 1, - }, - - { - key: 'lmscript', - label: 'LMScript', - sourceFile: 'lmscript', - proxyParam: 'lmsc', - timeout: 20000, - jitter: 500, - retries: 2, - multiUrl: true, - }, - - { - key: 'lookmovie', - label: 'LookMovie', - sourceFile: 'lookmovie', - proxyParam: 'lm', - timeout: 20000, - jitter: 500, - retries: 2, - multiUrl: true, - verifyHeaders: { - 'Accept-Language': 'en-US,en;q=0.9', - }, - }, - - { - key: 'movienight', - label: 'MovieNight', - sourceFile: 'movienight', - proxyParam: 'mn', - timeout: 20000, - jitter: 500, - retries: 2, - multiUrl: true, - skipProxy: true, - cdnHeaders: [{ - pattern: /movienig\.ht/i, - headers: { - Referer: 'https://movienig.ht/', - Origin: 'https://movienig.ht', - }, - }], - }, - - { - key: 'movy', - label: 'Movy', - sourceFile: 'movy', - proxyParam: 'mv', - timeout: 25000, - jitter: 500, - retries: 2, - multiUrl: true, - skipProxy: true, - cdnHeaders: [{ - pattern: /wecollege\.net|movy\.bz/i, - headers: { - Referer: 'https://www.movy.bz/', - Origin: 'https://www.movy.bz', - }, - }], - }, - - { - key: 'pengu', - label: 'Pengu', - sourceFile: 'pengu', - proxyParam: 'pg', - timeout: 25000, - jitter: 500, - retries: 1, - multiUrl: true, - skipProxy: true, - disabled: false, // Enabled, but only returns streams when a manifest is provided - }, - - { - key: 'pstream', - label: 'PStream', - sourceFile: 'pstream', - proxyParam: 'ps', - timeout: 35000, - jitter: 500, - retries: 1, - multiUrl: true, - }, - - { - key: 'purstream', - sourceFile: 'purstream', - label: 'Purstream', - proxyParam: 'ps', - timeout: 20000, - jitter: 500, - retries: 2, - skipProxy: true - }, - - { - key: 'rivestream', - label: 'RiveStream', - sourceFile: 'rivestream', - proxyParam: 'rs', - timeout: 30000, - jitter: 500, - retries: 2, - multiUrl: true, - }, - - { - key: 'streamaggregator', - label: 'StreamAggregator', - sourceFile: 'streamaggregator', - proxyParam: 'sa', - timeout: 25000, - jitter: 500, - retries: 2, - multiUrl: true, - skipProxy: true, - cdnHeaders: [{ - pattern: /streamaggregator\.in/i, - headers: { - Referer: 'https://streamaggregator.in/', - Origin: 'https://streamaggregator.in', - }, - }], - }, - { - key: 'vidapi', - label: 'VidAPI', - sourceFile: 'vidapi', - proxyParam: 'va', - timeout: 25000, - jitter: 500, - retries: 1, - multiUrl: true - }, - - { - key: 'vidcore', - label: 'VidCore', - sourceFile: 'vidcore', - proxyParam: 'vc', - timeout: 35000, - jitter: 500, - retries: 1, - multiUrl: true, - }, - { - key: 'vidfast', - label: 'VidFast', - sourceFile: 'vidfast', - proxyParam: 'vf', - timeout: 35000, - jitter: 500, - retries: 1, - multiUrl: true, - }, - - { - key: 'vidgod', - label: 'VidGod', - sourceFile: 'vidgod', - proxyParam: 'vg', - timeout: 25000, - jitter: 500, - retries: 2, - multiUrl: true, - skipProxy: true, - }, - - { - key: 'vidlink', - label: 'Vidlink', - sourceFile: 'vidlink', - proxyParam: 'vl', - timeout: 20000, - jitter: 500, - retries: 2, - skipProxy: true, - multiUrl: true, - }, - - { - key: 'vidnest', - label: 'VidNest', - sourceFile: 'vidnest', - proxyParam: 'vdn', - timeout: 20000, - retries: 1, - jitter: 0, - multiUrl: true, - }, - - { - key: 'vidnest-sub', - label: 'VidNest (Sub)', - sourceFile: 'vidnest', - proxyParam: 'vdn', - timeout: 20000, - retries: 1, - jitter: 0, - multiUrl: true, - skipProxy: true, - }, - - { - key: 'vidnest-dub', - label: 'VidNest (Dub)', - sourceFile: 'vidnest', - proxyParam: 'vdn', - timeout: 20000, - retries: 1, - jitter: 0, - multiUrl: true, - skipProxy: true, - }, - - { - key: 'vidrock', - label: 'VidRock', - sourceFile: 'vidrock', - proxyParam: 'vr', - timeout: 20000, - jitter: 800, - retries: 3, - multiUrl: true, - cdnHeaders: [{ - pattern: /./, - headers: { - Accept: '/', - 'Accept-Language': 'en-US,en;q=0.9', - Referer: 'https://vidrock.ru/', - Origin: 'https://vidrock.ru', - }, - },], - }, - - { - key: 'vidup', - label: 'VidUp', - sourceFile: 'vidup', - proxyParam: 'vu', - timeout: 35000, - jitter: 500, - retries: 1, - multiUrl: true - }, - - { - key: 'vidvault', - label: 'VidVault', - sourceFile: 'vidvault', - proxyParam: 'vv', - timeout: 25000, - jitter: 500, - retries: 2, - multiUrl: true, - }, - - { - key: 'vidzee', - label: 'VidZee', - sourceFile: 'vidzee', - proxyParam: 'vz', - timeout: 20000, - sourcesTimeout: 10000, - jitter: 400, - retries: 3, - verifyHeaders: { - Accept: '/', - 'Accept-Language': 'en-US,en;q=0.9', - Referer: 'https://player.vidzee.wtf', - Origin: 'https://player.vidzee.wtf', - }, - }, - - { - key: 'vixsrc', - label: 'VixSrc', - sourceFile: 'vixsrc', - proxyParam: 'vx', - timeout: 35000, - jitter: 0, - retries: 2, - multiUrl: false, - skipProxy: true, - verifyHeaders: { - Accept: 'application/json, text/javascript, /; q=0.01', - 'Accept-Language': 'en-US,en;q=0.9', - Referer: 'https://vixsrc.to/', - Origin: 'https://vixsrc.to', - }, - }, - - { - key: 'xdownloader', - label: 'XDownloader', - sourceFile: 'xdownloader', - proxyParam: 'xd', - timeout: 25000, - jitter: 500, - retries: 2, - multiUrl: true, - skipProxy: true, - cdnHeaders: [{ - pattern: /films365\.org/i, - headers: { - Referer: 'https://www.films365.org/', - Origin: 'https://www.films365.org', - }, - }], - }, - -]; - -export const HEALTH_PROBE_ID = '155'; -export const SOURCE_MAP = Object.fromEntries(SOURCES.map(s => [s.key, s])); -export default SOURCES; \ No newline at end of file diff --git a/node_modules/@vyla-entertainment/sdk/src/downloads/downloads.js b/node_modules/@vyla-entertainment/sdk/src/downloads/downloads.js deleted file mode 100644 index c764c56..0000000 --- a/node_modules/@vyla-entertainment/sdk/src/downloads/downloads.js +++ /dev/null @@ -1,53 +0,0 @@ -import SOURCES from "../config.js"; - -export async function fetchDownloads(sdkOrId, idOrS = null, sOrE = null, maybeE = null) { - let sdk = null; - let id = sdkOrId; - let s = idOrS; - let e = sOrE; - - if (sdkOrId && typeof sdkOrId === 'object' && typeof sdkOrId.getStream === 'function') { - sdk = sdkOrId; - id = idOrS; - s = sOrE; - e = maybeE; - } - - if (!sdk || !id) return []; - - const activeSources = SOURCES.filter(cfg => !cfg.disabled && cfg.skipProxy); - const seenUrls = new Set(); - const downloads = []; - - const results = await Promise.allSettled( - activeSources.map(async (cfg) => { - try { - const res = await sdk.getStream(cfg.key, id, s, e); - if (!res) return; - - const items = Array.isArray(res.allUrls) && res.allUrls.length > 0 - ? res.allUrls - : (res.url ? [{ url: res.url, label: cfg.label }] : []); - - for (const item of items) { - if (!item?.url || typeof item.url !== 'string') continue; - const url = item.url.trim(); - - if (!url.startsWith('http') || url.includes('.m3u8')) continue; - if (!/\.mp4(\?|$)/i.test(url) && !url.includes('.mp4')) continue; - if (seenUrls.has(url)) continue; - - seenUrls.add(url); - - downloads.push({ - source: cfg.key, - label: item.label || cfg.label, - url, - }); - } - } catch { } - }) - ); - - return downloads; -} \ No newline at end of file diff --git a/node_modules/@vyla-entertainment/sdk/src/health.js b/node_modules/@vyla-entertainment/sdk/src/health.js deleted file mode 100644 index 08387be..0000000 --- a/node_modules/@vyla-entertainment/sdk/src/health.js +++ /dev/null @@ -1,38 +0,0 @@ -import { HEALTH_PROBE_ID } from "./config.js"; - -const withTimeout = (promise, ms) => Promise.race([promise, new Promise(r => setTimeout(() => r(null), ms))]); -async function withRetry(fn, attempts = 2, delay = 300) { - for (let i = 0; i < attempts; i++) { - try { - const result = await fn(); - if (result != null) return result; - } catch (err) { - if (i === attempts - 1) throw err; - await new Promise(r => setTimeout(r, delay + Math.random() * delay * 0.5)); - } - } - return null; -} - -export async function probeSource(sdk, cfg, mod) { - const audio = /dub$/.test(cfg.key) ? 'dub' : 'sub'; - const streamArgs = { - id: HEALTH_PROBE_ID, - s: null, - e: null, - clientIP: null, - absoluteBase: null, - audio, - sdk, - config: cfg, - }; - - const t = Date.now(); - const result = await withTimeout( - withRetry(() => mod.getStream(streamArgs), cfg.retries, 300), - cfg.timeout - ); - - const firstUrl = result?.url ?? result?.allUrls?.[0]?.url; - return { ok: !!(typeof firstUrl === 'string' && firstUrl.startsWith('http')), ms: Date.now() - t }; -} \ No newline at end of file diff --git a/node_modules/@vyla-entertainment/sdk/src/sdk.d.ts b/node_modules/@vyla-entertainment/sdk/src/sdk.d.ts deleted file mode 100644 index 0f27998..0000000 --- a/node_modules/@vyla-entertainment/sdk/src/sdk.d.ts +++ /dev/null @@ -1,122 +0,0 @@ -export interface SourceConfig { - key: string; - label: string; - sourceFile: string; - proxyParam: string; - timeout: number; - jitter: number; - retries: number; - multiUrl: boolean; - skipProxy?: boolean; - cdnHeaders?: { - pattern: RegExp; - headers: { - Referer: string; - Origin: string; - }; - }[]; - skipVerify?: boolean; - verifyHeaders?: boolean; - disabled?: boolean; - sourcesTimeout?: number; -} -export interface ProbeResult { - ok: boolean; - ms: number | null; -} -export interface StreamResult { - url: string; - headers: { - "User-Agent": string; - Referer: string; - Origin: string; - [key: string]: string; - }; - server: string; - quality: string; - type: "mp4" | "hls"; - skipVerify?: boolean; - skipProxy?: boolean; -} - -export interface DownloadResult { - url: string; - quality: string; - size: number | null; - type: "mkv"; - active: boolean; -} -export interface SubtitleResult { - label: string; - file: string; - type: "vtt" | "srt"; - source: string; -} - -export type ProbeAllResult = Record; - -export interface VylaSDKOptions { - tmdbApiKey?: string; -} - -export default class VylaSDK { - tmdbApiKey?: string; - - constructor(options?: VylaSDKOptions); - - /** - * Get the list of configured sources. - * @param excludeDisabled If true, filters out disabled sources. - */ - getSources(excludeDisabled?: boolean): SourceConfig[]; - - /** - * Probe all active (non-disabled) sources for availability. - */ - probeAllSources(): Promise; - - /** - * Probe a single source by key. - */ - probeSource(key: string): Promise; - - /** - * Get a playable stream for a given source/media id. - * @param key Source key - * @param id Media id (e.g. TMDB id) - * @param s Season number (for TV), or null for movies - * @param e Episode number (for TV), or null for movies - * @param clientIP Optional client IP for source-specific logic - */ - getStream( - key: string, - id: string | number, - s?: number | null, - e?: number | null, - clientIP?: string | null - ): Promise; - - /** - * Get subtitles for a movie or TV episode. - * @param id Media id - * @param s Season number (for TV), or null for movies - * @param e Episode number (for TV), or null for movies - */ - getSubtitles( - id: string | number, - s?: number | null, - e?: number | null - ): Promise; - - /** - * Get download links for a movie or TV episode. - * @param id Media id - * @param s Season number (for TV), or null for movies - * @param e Episode number (for TV), or null for movies - */ - getDownloads( - id: string | number, - s?: number | null, - e?: number | null - ): Promise; -} \ No newline at end of file diff --git a/node_modules/@vyla-entertainment/sdk/src/sdk.js b/node_modules/@vyla-entertainment/sdk/src/sdk.js deleted file mode 100644 index 1212e4e..0000000 --- a/node_modules/@vyla-entertainment/sdk/src/sdk.js +++ /dev/null @@ -1,68 +0,0 @@ -import SOURCES, { SOURCE_MAP } from "./config.js"; -import { fetchDownloads } from "./downloads/downloads.js"; -import { probeSource } from "./health.js"; -import { fetchSubtitles, getSubPathsMovie, getSubPathsTv } from "./subtitles.js"; -import { createStreamArgs } from "./utils/helpers.js"; - -const ALL_SOURCE_MODULES = Object.fromEntries( - await Promise.all(SOURCES.map(async cfg => [cfg.key, await import(`./sources/${cfg.sourceFile}.js`)])) -); - -const SOURCE_MODULES = Object.fromEntries( - Object.entries(ALL_SOURCE_MODULES).filter(([key]) => !SOURCE_MAP[key]?.disabled) -); - -export default class VylaSDK { - tmdbApiKey = null; - penguManifest = null; - constructor({ tmdbApiKey, penguManifest } = {}) { - this.tmdbApiKey = tmdbApiKey || null; - this.penguManifest = penguManifest || null; - } - getSources(excludeDisabled = false) { - if (excludeDisabled) { - return SOURCES.filter(cfg => !cfg.disabled); - } - return SOURCES; - } - async probeAllSources() { - const active = SOURCES.filter(cfg => !cfg.disabled); - - const results = await Promise.allSettled( - active.map(async cfg => await probeSource(cfg, SOURCE_MODULES[cfg.key])) - ); - - const sources = Object.fromEntries( - active.map((cfg, i) => [ - cfg.key, - results[i].status === 'fulfilled' ? results[i].value : { ok: false, ms: null }, - ]) - ); - - return sources; - } - async probeSource(key) { - const cfg = SOURCES.find(cfg => cfg.key === key); - if (!cfg) throw new Error(`Source with key "${key}" not found`); - const mod = SOURCE_MODULES[key]; - if (!mod) throw new Error(`Source module for key "${key}" not found`); - return await probeSource(this, cfg, mod); - } - async getStream(key, id, s = null, e = null, clientIP = null) { - const cfg = SOURCES.find(cfg => cfg.key === key); - if (!cfg) throw new Error(`Source with key "${key}" not found`); - const mod = SOURCE_MODULES[key]; - if (!mod) throw new Error(`Source module for key "${key}" not found`); - const streamArgs = await createStreamArgs(cfg, this, id, s, e, clientIP); - return await mod.getStream(streamArgs); - } - async getSubtitles(id, s = null, e = null) { - const paths = s != null && e != null - ? await getSubPathsTv(id, s, e) - : await getSubPathsMovie(id); - return await fetchSubtitles(paths); - } - async getDownloads(id, s = null, e = null) { - return await fetchDownloads(this, id, s, e); - } -} \ No newline at end of file diff --git a/node_modules/@vyla-entertainment/sdk/src/sources/111477.js b/node_modules/@vyla-entertainment/sdk/src/sources/111477.js deleted file mode 100644 index ca88abd..0000000 --- a/node_modules/@vyla-entertainment/sdk/src/sources/111477.js +++ /dev/null @@ -1,101 +0,0 @@ -import { getUA } from '../utils/helpers.js'; - -const SERVICE_ORIGIN = 'https://st.111477.xyz'; - -function generateManifestBaseUrl(tmdbKey) { - let config = 'https://a.111477.xyz/::sort=file-desc::limit=3'; - if (tmdbKey) { - config += `::tmdb=${tmdbKey}`; - } - const b64 = Buffer.from(config, 'utf8') - .toString('base64') - .replace(/\+/g, '-') - .replace(/\//g, '_') - .replace(/=+$/, ''); - return `${SERVICE_ORIGIN}/config/${b64}`; -} - -async function resolveImdbId(sdk, id, isTv) { - const apiKey = sdk?.tmdbApiKey || process.env.TMDB_API_KEY; - if (!apiKey) return null; - const type = isTv ? 'tv' : 'movie'; - try { - const res = await fetch(`https://api.themoviedb.org/3/${type}/${id}?api_key=${apiKey}&append_to_response=external_ids`, { - signal: AbortSignal.timeout(6000), - }); - if (!res.ok) return null; - const data = await res.json(); - return data.imdb_id || data.external_ids?.imdb_id || null; - } catch { - return null; - } -} - -export async function getStream({ id, s, e, sdk }) { - const isTv = Boolean(s && e); - const ua = getUA(); - const apiKey = sdk?.tmdbApiKey || process.env.TMDB_API_KEY; - - const imdbId = await resolveImdbId(sdk, id, isTv); - const targetIds = []; - - if (imdbId && imdbId.startsWith('tt')) { - targetIds.push(imdbId); - } - targetIds.push(`tmdb:${id}`); - - const addonBase = generateManifestBaseUrl(apiKey); - const seenUrls = new Set(); - const allUrls = []; - - const defaultHeaders = { - 'User-Agent': ua, - Accept: 'application/json, text/plain, */*', - }; - - for (const targetId of targetIds) { - const endpoint = isTv - ? `${addonBase}/stream/series/${targetId}:${s || 1}:${e || 1}.json` - : `${addonBase}/stream/movie/${targetId}.json`; - - try { - const res = await fetch(endpoint, { - headers: defaultHeaders, - signal: AbortSignal.timeout(12000), - }); - - if (!res.ok) continue; - const data = await res.json(); - - if (Array.isArray(data?.streams) && data.streams.length > 0) { - for (const item of data.streams) { - if (!item || typeof item !== 'object') continue; - const url = String(item.url || '').trim(); - if (!url || !url.startsWith('http') || seenUrls.has(url)) continue; - - seenUrls.add(url); - - const rawTitle = item.title ? String(item.title).trim() : ''; - const rawName = item.name ? String(item.name).trim() : '111477'; - const label = rawTitle || rawName; - - allUrls.push({ - url, - label, - headers: defaultHeaders, - }); - } - - if (allUrls.length > 0) break; - } - } catch { } - } - - if (allUrls.length === 0) return null; - - return { - url: allUrls[0].url, - allUrls, - headers: allUrls[0].headers, - }; -} \ No newline at end of file diff --git a/node_modules/@vyla-entertainment/sdk/src/sources/123anime.js b/node_modules/@vyla-entertainment/sdk/src/sources/123anime.js deleted file mode 100644 index a0fa6dd..0000000 --- a/node_modules/@vyla-entertainment/sdk/src/sources/123anime.js +++ /dev/null @@ -1,57 +0,0 @@ -import { getTmdbInfo, fetchJson, USER_AGENT } from '../utils/helpers.js'; - -async function resolveSlug(id, s, e, info) { - const titles = info?.titles || []; - const keywords = []; - for (const title of titles) { - const t = title.toLowerCase().replace(/[^a-z0-9\s]/g, ' ').replace(/\s+/g, ' ').trim(); - if (!keywords.includes(t)) keywords.push(t); - const words = title.split(/[\s:]+/).filter(w => w.length > 2); - if (words.length >= 2) { - const short = words.slice(0, 3).join(' ').toLowerCase(); - if (!keywords.includes(short)) keywords.push(short); - } - } - const slugCandidates = []; - for (const keyword of keywords) { - try { - const data = await fetchJson(`https://123animehub.cc/ajax/film/search?keyword=${encodeURIComponent(keyword)}&_=${Date.now()}`, { headers: { 'X-Requested-With': 'XMLHttpRequest', 'Referer': 'https://123animehub.cc', 'Accept': 'application/json', 'User-Agent': USER_AGENT }, signal: AbortSignal.timeout(8000) }); - let html = data.html || '', idx = 0; - while ((idx = html.indexOf('href="/anime/', idx)) !== -1) { - const start = idx + 13; - const end = html.indexOf('"', start); - const slug = html.slice(start, end); - if (!slugCandidates.includes(slug)) slugCandidates.push(slug); - idx = end; - } - } catch { } - if (slugCandidates.length) break; - } - for (const slug of slugCandidates) { - try { - const data = await fetchJson(`https://123animehub.cc/ajax/episode/info?epr=${encodeURIComponent(s ? `${slug}/${s}/${e}` : `${slug}/1`)}&ts=1&_=${Date.now()}`, { headers: { 'Referer': `https://123animehub.cc/anime/${slug}`, 'X-Requested-With': 'XMLHttpRequest', 'Accept': 'application/json, text/javascript, */*; q=0.01', 'User-Agent': USER_AGENT }, signal: AbortSignal.timeout(10000) }); - if (data?.target) return data.target; - } catch { } - } - return null; -} - -export async function getStream({ id, s, e }) { - if (!s) return null; - const info = await getTmdbInfo(id, 'tv', s); - if (!info.isAnime) return null; - const target = await resolveSlug(id, s, e, info); - if (!target) return null; - const embedMatch = target.match(/\/embed-[^/]+\/([A-Za-z0-9+/=]+)$/); - if (!embedMatch) return null; - const origin = new URL(target).origin; - try { - const embedRes = await fetch(target, { headers: { 'User-Agent': USER_AGENT }, signal: AbortSignal.timeout(10000) }); - if (!embedRes.ok) return null; - const setCookie = embedRes.headers.get('set-cookie'); - const data = await fetchJson(`${origin}/hs/getSources?id=${embedMatch[1]}`, { headers: { 'Referer': target, 'Accept': '*/*', 'User-Agent': USER_AGENT, ...(setCookie ? { 'Cookie': setCookie.split(';')[0].trim() } : {}) }, signal: AbortSignal.timeout(10000) }); - const src = typeof data.sources === 'string' && data.sources.length ? data.sources : (Array.isArray(data.sources) && data.sources.length ? (data.sources[0].file || data.sources[0].src || data.sources[0].url) : null); - if (src) return { url: src, headers: { 'Referer': 'https://play2.echovideo.ru/', 'Origin': 'https://play2.echovideo.ru' } }; - } catch { } - return null; -} \ No newline at end of file diff --git a/node_modules/@vyla-entertainment/sdk/src/sources/anihq.js b/node_modules/@vyla-entertainment/sdk/src/sources/anihq.js deleted file mode 100644 index bfdd461..0000000 --- a/node_modules/@vyla-entertainment/sdk/src/sources/anihq.js +++ /dev/null @@ -1,124 +0,0 @@ -import { getTmdbInfo, USER_AGENT } from '../utils/helpers.js'; - -async function extractVoe(voeUrl) { - try { - let res = await fetch(voeUrl, { - headers: { - 'User-Agent': USER_AGENT, - 'Referer': 'https://anihq.cc/' - } - }); - - let html = await res.text(); - - const redirectMatch = html.match(/window\.location\.href\s*=\s*['"](https?:\/\/[^'"]+)['"]/); - if (redirectMatch) { - res = await fetch(redirectMatch[1], { - headers: { - 'User-Agent': USER_AGENT, - 'Referer': 'https://anihq.cc/' - } - }); - html = await res.text(); - } - - const mirrorUrl = res.url; - - const scriptMatch = html.match(/