Compare commits

..

No commits in common. "main" and "v0.63.1" have entirely different histories.

230 changed files with 2191 additions and 49123 deletions

View file

@ -1,38 +0,0 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: bug
assignees: ''
---
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Desktop (please complete the following information):**
- OS: [e.g. iOS]
- Browser [e.g. chrome, safari]
- Version [e.g. 22]
**Smartphone (please complete the following information):**
- Device: [e.g. iPhone6]
- OS: [e.g. iOS8.1]
- Browser [e.g. stock browser, safari]
- Version [e.g. 22]
**Additional context**
Add any other context about the problem here.

View file

@ -1,20 +0,0 @@
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: enhancement
assignees: ''
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.

View file

@ -1,23 +0,0 @@
---
name: Request source/extractor
about: Request a source or extractor to get URLs from
title: Request to add <source/extractor>
labels: enhancement
assignees: ''
---
**What is the site you want to get added?**
A link to the source or embed hoster
**What is the benefit of adding this?**
More content is not a good reason. If it's already covered via an existing source/extractor, why should we add another one?
**Are you aware of any protection the site uses?**
E.g. rate-limits or Cloudflare captchas and such
**What languages does this relate to?**
E.g. multi, German, ..
**Example**
A movie/series IMDb/TMDB ID + source link or embed URL to test with.

View file

@ -9,19 +9,19 @@ jobs:
steps: steps:
- -
name: Login to Docker Hub name: Login to Docker Hub
uses: docker/login-action@v4 uses: docker/login-action@v3
with: with:
username: ${{ vars.DOCKERHUB_USERNAME }} username: ${{ vars.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }} password: ${{ secrets.DOCKERHUB_TOKEN }}
- -
name: Set up QEMU (for cross-arch) name: Set up QEMU (for cross-arch)
uses: docker/setup-qemu-action@v4 uses: docker/setup-qemu-action@v3
- -
name: Set up Docker Buildx name: Set up Docker Buildx
uses: docker/setup-buildx-action@v4 uses: docker/setup-buildx-action@v3
- -
name: Build and push name: Build and push
uses: docker/build-push-action@v7 uses: docker/build-push-action@v6
with: with:
push: true push: true
platforms: linux/amd64,linux/arm64 platforms: linux/amd64,linux/arm64

View file

@ -9,10 +9,10 @@ jobs:
steps: steps:
- -
name: Set up Docker Buildx name: Set up Docker Buildx
uses: docker/setup-buildx-action@v4 uses: docker/setup-buildx-action@v3
- -
name: Build and push name: Build and push
uses: docker/build-push-action@v7 uses: docker/build-push-action@v6
with: with:
push: false push: false
tags: webstreamr/webstreamr:latest tags: webstreamr/webstreamr:latest

View file

@ -1,3 +1,3 @@
{ {
".": "0.69.1" ".": "0.63.1"
} }

View file

@ -1,460 +1,5 @@
# Changelog # Changelog
## [0.69.1](https://github.com/webstreamr/webstreamr/compare/v0.69.0...v0.69.1) (2026-03-27)
### Bug Fixes
* **source:** exclude ad videos in HDHub4u ([65191cf](https://github.com/webstreamr/webstreamr/commit/65191cfc8dad8f58b44e2c355b9adc600b99b2bf))
* **source:** remove stray console.log ([bd2dec0](https://github.com/webstreamr/webstreamr/commit/bd2dec03925d8b7760044dbfaaaec00b48f7cb66))
## [0.69.0](https://github.com/webstreamr/webstreamr/compare/v0.68.0...v0.69.0) (2026-03-27)
### Miscellaneous Chores
* **deps:** update dependency axios to v1.14.0 ([#800](https://github.com/webstreamr/webstreamr/issues/800)) ([ad47aec](https://github.com/webstreamr/webstreamr/commit/ad47aecea3f3d34700add442e023bd54f73451c8))
* **extractor:** detect languages from HubCloud title ([89e57d4](https://github.com/webstreamr/webstreamr/commit/89e57d48d95a6f8dd6446048ae72de51dd481f37))
* **extractor:** detect resolution from HubCloud title ([f192fd0](https://github.com/webstreamr/webstreamr/commit/f192fd0b7523094746148989e0cf06717db8152e))
* remove duplicate URLs ([b87bf62](https://github.com/webstreamr/webstreamr/commit/b87bf62362f3cd6b3ea055ecdaec44511bf2ec84))
### Features
* **source:** add HDHub4u ([43f0445](https://github.com/webstreamr/webstreamr/commit/43f04455f17063e459df7e7a34af44de36afd6fc))
### Bug Fixes
* **extractor:** don't fail for HubDrive if HubCloud link is missing ([557efd2](https://github.com/webstreamr/webstreamr/commit/557efd207945ea7ada0bcaf475b0b9b9d60d8f5b))
### Code Refactoring
* **source:** extract hd hub link redirect resolver ([43637a2](https://github.com/webstreamr/webstreamr/commit/43637a2ff4280db208ec9c94c0a5d52a49dc6672))
## [0.68.0](https://github.com/webstreamr/webstreamr/compare/v0.67.0...v0.68.0) (2026-03-26)
### Features
* exclude resolution config options ([4c7da5d](https://github.com/webstreamr/webstreamr/commit/4c7da5dc208a1854a17aa43a26553fb6c83e7287))
## [0.67.0](https://github.com/webstreamr/webstreamr/compare/v0.66.16...v0.67.0) (2026-03-25)
### Miscellaneous Chores
* **deps:** update dependency typescript-eslint to v8.57.2 ([#795](https://github.com/webstreamr/webstreamr/issues/795)) ([5cffa11](https://github.com/webstreamr/webstreamr/commit/5cffa112bac29ee4eb18958f5345f0a3ae68ff30))
### Features
* **extractor:** support FSLv2 server in HubCloud ([e36d460](https://github.com/webstreamr/webstreamr/commit/e36d460d57bdc071fc111b1459ea26184a3233e3))
## [0.66.16](https://github.com/webstreamr/webstreamr/compare/v0.66.15...v0.66.16) (2026-03-23)
### Documentation
* remove mention of XDMovies ([b60496b](https://github.com/webstreamr/webstreamr/commit/b60496bf224f1869626bceaa7e3eebabfdec8754))
### Bug Fixes
* **source:** remove XDMovies ([ff39c59](https://github.com/webstreamr/webstreamr/commit/ff39c594755b586ec4214d942c04026b873854fd))
## [0.66.15](https://github.com/webstreamr/webstreamr/compare/v0.66.14...v0.66.15) (2026-03-23)
### Miscellaneous Chores
* **deps:** lock file maintenance ([#792](https://github.com/webstreamr/webstreamr/issues/792)) ([fc3d61b](https://github.com/webstreamr/webstreamr/commit/fc3d61b05a31c00607c7309ed04c8438c8f344f7))
* **deps:** update dependency cacheable to v2.3.4 ([#789](https://github.com/webstreamr/webstreamr/issues/789)) ([b2b9760](https://github.com/webstreamr/webstreamr/commit/b2b9760445f7b1a987f5aa795ef3a5302e753178))
### Bug Fixes
* **extractor:** hard-code referer for Dropload and SuperVideo for now ([eecf9c4](https://github.com/webstreamr/webstreamr/commit/eecf9c42c5f95266fe1ec0deba1042741efe7306))
## [0.66.14](https://github.com/webstreamr/webstreamr/compare/v0.66.13...v0.66.14) (2026-03-17)
### Miscellaneous Chores
* **deps:** lock file maintenance ([#784](https://github.com/webstreamr/webstreamr/issues/784)) ([9eca05e](https://github.com/webstreamr/webstreamr/commit/9eca05efc5c56dc0c008b6cac6314c2849e11382))
* **deps:** update dependency typescript-eslint to v8.57.1 ([#786](https://github.com/webstreamr/webstreamr/issues/786)) ([b769cd0](https://github.com/webstreamr/webstreamr/commit/b769cd0aa1f8284c921f68c620fa01565097952b))
* **extractor:** add cacheVersion and bump it for HubCloud and HubDrive ([ee3effa](https://github.com/webstreamr/webstreamr/commit/ee3effaf0079ee932d6b8a93ead0f095ea7e4906))
### Bug Fixes
* **extractor:** add PixelDrain referer to HubCloud extractor ([693a77e](https://github.com/webstreamr/webstreamr/commit/693a77e73e984e81aee9a702092c5ef098d4e48f))
* **extractor:** reduce HubCloud + HubDrive ttl to 12h ([296f047](https://github.com/webstreamr/webstreamr/commit/296f0478b03c4dfd4927c0e53037ce8f9de64872))
## [0.66.13](https://github.com/webstreamr/webstreamr/compare/v0.66.12...v0.66.13) (2026-03-14)
### Bug Fixes
* downgrade sqlite for now ([66ee72b](https://github.com/webstreamr/webstreamr/commit/66ee72baf02560ca4bed0864869ab8046e85d0eb))
## [0.66.12](https://github.com/webstreamr/webstreamr/compare/v0.66.11...v0.66.12) (2026-03-14)
### Miscellaneous Chores
* **deps:** lock file maintenance ([#779](https://github.com/webstreamr/webstreamr/issues/779)) ([b7093ed](https://github.com/webstreamr/webstreamr/commit/b7093ed4ae37cc4e4a2603bd6c8dac0118f8e617))
* **deps:** update dependency slugify to v1.6.8 ([#777](https://github.com/webstreamr/webstreamr/issues/777)) ([20289ea](https://github.com/webstreamr/webstreamr/commit/20289eaeaf8710c4cfb60d661061c62a3cfa4aeb))
### Bug Fixes
* require sqlite with alpine fix ([0f004dc](https://github.com/webstreamr/webstreamr/commit/0f004dc878c1c1a24cae553100426c61d45841a9))
## [0.66.11](https://github.com/webstreamr/webstreamr/compare/v0.66.10...v0.66.11) (2026-03-13)
### Miscellaneous Chores
* **deps:** lock file maintenance ([#764](https://github.com/webstreamr/webstreamr/issues/764)) ([394dc91](https://github.com/webstreamr/webstreamr/commit/394dc91bfa0a2382ad7d084f02a2f99b7eb91ca5))
* **deps:** update dependency @types/node to v24.12.0 ([#763](https://github.com/webstreamr/webstreamr/issues/763)) ([7de0468](https://github.com/webstreamr/webstreamr/commit/7de046838d8c851caf7ec164c441b77907705c89))
* **deps:** update dependency express-rate-limit to v8.3.1 ([#765](https://github.com/webstreamr/webstreamr/issues/765)) ([e90b558](https://github.com/webstreamr/webstreamr/commit/e90b5583a7c2d005e53b60f8152eb4e37dd6591b))
* **deps:** update dependency tough-cookie to v6.0.1 ([#773](https://github.com/webstreamr/webstreamr/issues/773)) ([2734fb4](https://github.com/webstreamr/webstreamr/commit/2734fb4d0db6c658022ba1d6a89b90c7194d84b9))
* **deps:** update dependency typescript-eslint to v8.57.0 ([#766](https://github.com/webstreamr/webstreamr/issues/766)) ([ad3d0b3](https://github.com/webstreamr/webstreamr/commit/ad3d0b317e476621bef309b95fd683bd0b47fa38))
* **deps:** update eslint monorepo to v9.39.4 ([#761](https://github.com/webstreamr/webstreamr/issues/761)) ([955872a](https://github.com/webstreamr/webstreamr/commit/955872a8254e1ab93e298df720ae1e618d2fd3bc))
* **deps:** update jest monorepo to v30.3.0 ([#767](https://github.com/webstreamr/webstreamr/issues/767)) ([b522314](https://github.com/webstreamr/webstreamr/commit/b5223148c7ed336136c4182aaaa59f031ea6dc2a))
### Bug Fixes
* **deps:** update dependency sqlite3 to v6 ([#772](https://github.com/webstreamr/webstreamr/issues/772)) ([930e819](https://github.com/webstreamr/webstreamr/commit/930e8191beac055e8b82ee9a79bd78f56b2613a2))
* **extractor:** add missing VOE domain ([c78c1ad](https://github.com/webstreamr/webstreamr/commit/c78c1ad628c81391bdead00273e3a346983b1f45))
* **source:** switch to new Frembed URL and resolve link redirects ([8fe4cc5](https://github.com/webstreamr/webstreamr/commit/8fe4cc5a9bf37612647ed348cf76702fdbf6857e))
## [0.66.10](https://github.com/webstreamr/webstreamr/compare/v0.66.9...v0.66.10) (2026-03-06)
### Miscellaneous Chores
* **deps:** update dependency @stylistic/eslint-plugin to v5.10.0 ([#760](https://github.com/webstreamr/webstreamr/issues/760)) ([4e43650](https://github.com/webstreamr/webstreamr/commit/4e436509bf8b6bed5d1d879756f7cccba28b0d6a))
* **deps:** update dependency axios-cache-interceptor to v1.12.0 ([#755](https://github.com/webstreamr/webstreamr/issues/755)) ([edebd86](https://github.com/webstreamr/webstreamr/commit/edebd860aa3c4c01b6444c0296e21279ea3231ff))
* **deps:** update dependency express-rate-limit to v8.3.0 ([#758](https://github.com/webstreamr/webstreamr/issues/758)) ([f58e0e1](https://github.com/webstreamr/webstreamr/commit/f58e0e1f4f6c4db1e4efbeba6278a5358d1f6a56))
* **deps:** update docker/build-push-action action to v7 ([#759](https://github.com/webstreamr/webstreamr/issues/759)) ([737a806](https://github.com/webstreamr/webstreamr/commit/737a8063a8921a8fd0247e2cb3c053030b018294))
* **deps:** update docker/login-action action to v4 ([#750](https://github.com/webstreamr/webstreamr/issues/750)) ([6b8363b](https://github.com/webstreamr/webstreamr/commit/6b8363bd9c970b8760a1412a66086b120422567f))
* **deps:** update docker/setup-buildx-action action to v4 ([#757](https://github.com/webstreamr/webstreamr/issues/757)) ([d2e72b0](https://github.com/webstreamr/webstreamr/commit/d2e72b0756e8a86d64e6c70e168b689429d4b3d7))
### Bug Fixes
* **extractor:** use Dropload hosting URL origin as Referer ([423abf2](https://github.com/webstreamr/webstreamr/commit/423abf2479b7dffde3138c6043eb1f2854e4b077))
## [0.66.9](https://github.com/webstreamr/webstreamr/compare/v0.66.8...v0.66.9) (2026-03-04)
### Miscellaneous Chores
* add referral ([a5e429f](https://github.com/webstreamr/webstreamr/commit/a5e429fea365ee04a3bd32f07676a852511be852))
* **deps:** update docker/setup-qemu-action action to v4 ([#749](https://github.com/webstreamr/webstreamr/issues/749)) ([b36e148](https://github.com/webstreamr/webstreamr/commit/b36e1484eb51b7d86352c6f78f2f4c21adba28d0))
### Documentation
* use default branch for tests badge ([6d5870c](https://github.com/webstreamr/webstreamr/commit/6d5870ccb219bcb6448aac732914d02f59b8b602))
## [0.66.8](https://github.com/webstreamr/webstreamr/compare/v0.66.7...v0.66.8) (2026-03-02)
### Documentation
* add known issues / limitations section ([438387f](https://github.com/webstreamr/webstreamr/commit/438387faee8fb8604f4de7c1a7876be40d79fa79))
* add more limitations ([aa820e1](https://github.com/webstreamr/webstreamr/commit/aa820e1f6463d216ad12c44587b7134f424e1c9a))
* add more references ([38d0ac5](https://github.com/webstreamr/webstreamr/commit/38d0ac53059ed338718a759c76c425a2458fa5c2))
### Bug Fixes
* **extractor:** use Dropload playlist headers also internally ([7dfc599](https://github.com/webstreamr/webstreamr/commit/7dfc599de900c34703e41eeea5c4e459da6380cf))
## [0.66.7](https://github.com/webstreamr/webstreamr/compare/v0.66.6...v0.66.7) (2026-03-02)
### Miscellaneous Chores
* **deps:** lock file maintenance ([#745](https://github.com/webstreamr/webstreamr/issues/745)) ([8ea6d4f](https://github.com/webstreamr/webstreamr/commit/8ea6d4fe3709067c1a2c30dcbf53567e10f102dc))
* **deps:** update dependency @types/node to v24.11.0 ([#744](https://github.com/webstreamr/webstreamr/issues/744)) ([282b3d0](https://github.com/webstreamr/webstreamr/commit/282b3d05b32bbcc6e2ac2137e3cb96974ee4ddfb))
* **deps:** update dependency axios to v1.13.6 ([#736](https://github.com/webstreamr/webstreamr/issues/736)) ([50e024a](https://github.com/webstreamr/webstreamr/commit/50e024a3ea1b2326fad7f2fcb59324d34a8561a2))
* **deps:** update dependency cacheable to v2.3.3 ([#737](https://github.com/webstreamr/webstreamr/issues/737)) ([168d028](https://github.com/webstreamr/webstreamr/commit/168d0280dcef9402815e353bc162af5bbf11af84))
### Bug Fixes
* **extractor:** add referer as proxy header for Dropload ([bbb80f3](https://github.com/webstreamr/webstreamr/commit/bbb80f3cf0b918668149f5f6be1a2c38157a414b))
## [0.66.6](https://github.com/webstreamr/webstreamr/compare/v0.66.5...v0.66.6) (2026-02-25)
### Miscellaneous Chores
* **deps:** update dependency minimatch to v10.2.3 ([#715](https://github.com/webstreamr/webstreamr/issues/715)) ([ce4637e](https://github.com/webstreamr/webstreamr/commit/ce4637ea80adaee5f7c325defd9676533dfb884e))
* **deps:** update dependency minimatch to v10.2.4 ([#735](https://github.com/webstreamr/webstreamr/issues/735)) ([354c273](https://github.com/webstreamr/webstreamr/commit/354c2731d8ffe1948f5ff8647a7be668c6ce5cbd))
* **deps:** update dependency typescript-eslint to v8.56.1 ([#734](https://github.com/webstreamr/webstreamr/issues/734)) ([73ce5f3](https://github.com/webstreamr/webstreamr/commit/73ce5f372d5c2c2be39d1f36fa104afbdee41b77))
* **fetcher:** cache whole flaresolverr solution and also use status from it ([221fa98](https://github.com/webstreamr/webstreamr/commit/221fa989f4c51e13308a41e59dd088a2b0128e45))
## [0.66.5](https://github.com/webstreamr/webstreamr/compare/v0.66.4...v0.66.5) (2026-02-23)
### Miscellaneous Chores
* **deps:** lock file maintenance ([#730](https://github.com/webstreamr/webstreamr/issues/730)) ([6c10236](https://github.com/webstreamr/webstreamr/commit/6c102362fde48af0a6857f8ab66bc42385a3411a))
### Bug Fixes
* **extractor:** remove StreamUp ([556b20e](https://github.com/webstreamr/webstreamr/commit/556b20e6690c251e86e10740b45ca0b4c614b222))
* **source:** add support for old XDMovies uploads without URL protector ([964e979](https://github.com/webstreamr/webstreamr/commit/964e9794695201367900ae6e4eda4ad439652222))
### Performance Improvements
* cache all non-error requests for 15m, tune axios caching ([ae10810](https://github.com/webstreamr/webstreamr/commit/ae10810caaebb909ffe5c51c37dc4a01184391a9))
## [0.66.4](https://github.com/webstreamr/webstreamr/compare/v0.66.3...v0.66.4) (2026-02-21)
### Miscellaneous Chores
* **deps:** lock file maintenance ([#708](https://github.com/webstreamr/webstreamr/issues/708)) ([ccdd460](https://github.com/webstreamr/webstreamr/commit/ccdd4600bba1041b5f2f2515c730856eb729991f))
* **deps:** lock file maintenance ([#718](https://github.com/webstreamr/webstreamr/issues/718)) ([d0f3e0f](https://github.com/webstreamr/webstreamr/commit/d0f3e0f9316770fe47d0395269dafe155fa1e17d))
* **deps:** update dependency @stylistic/eslint-plugin to v5.8.0 ([#709](https://github.com/webstreamr/webstreamr/issues/709)) ([1ae12fa](https://github.com/webstreamr/webstreamr/commit/1ae12fa0f790566193bfe42f3457fe9d4e976502))
* **deps:** update dependency @stylistic/eslint-plugin to v5.9.0 ([#723](https://github.com/webstreamr/webstreamr/issues/723)) ([bd160eb](https://github.com/webstreamr/webstreamr/commit/bd160eb32ce3719bfbebb468a5b2e45d9b4a35ce))
* **deps:** update dependency @types/node to v24.10.12 ([#707](https://github.com/webstreamr/webstreamr/issues/707)) ([3f35ecf](https://github.com/webstreamr/webstreamr/commit/3f35ecf6f3eab3c2c789a176be73d1a80539762d))
* **deps:** update dependency @types/node to v24.10.13 ([#717](https://github.com/webstreamr/webstreamr/issues/717)) ([524630d](https://github.com/webstreamr/webstreamr/commit/524630d671a74dd844ce0f629b4ccae1f88cf6e6))
* **deps:** update dependency axios to v1.13.5 ([#705](https://github.com/webstreamr/webstreamr/issues/705)) ([de13209](https://github.com/webstreamr/webstreamr/commit/de13209709071f8f5241f209a0dbc75232925c3c))
* **deps:** update dependency glob to v13.0.1 ([#698](https://github.com/webstreamr/webstreamr/issues/698)) ([72c191f](https://github.com/webstreamr/webstreamr/commit/72c191fbc10ed9524e698609736f01de0f236c43))
* **deps:** update dependency glob to v13.0.2 ([#711](https://github.com/webstreamr/webstreamr/issues/711)) ([eccea52](https://github.com/webstreamr/webstreamr/commit/eccea520b7cf8b997a694c6f4fded3cbc74b960a))
* **deps:** update dependency glob to v13.0.3 ([#714](https://github.com/webstreamr/webstreamr/issues/714)) ([65a0e57](https://github.com/webstreamr/webstreamr/commit/65a0e57ab9694648977822f73d89e641feabf893))
* **deps:** update dependency glob to v13.0.4 ([#720](https://github.com/webstreamr/webstreamr/issues/720)) ([245dcf6](https://github.com/webstreamr/webstreamr/commit/245dcf6007b6e02d767246463b224e18eecaccb8))
* **deps:** update dependency glob to v13.0.5 ([#721](https://github.com/webstreamr/webstreamr/issues/721)) ([fb354b4](https://github.com/webstreamr/webstreamr/commit/fb354b47461f58a25c245dcac65ca2de26302207))
* **deps:** update dependency glob to v13.0.6 ([#724](https://github.com/webstreamr/webstreamr/issues/724)) ([23db19d](https://github.com/webstreamr/webstreamr/commit/23db19d07317350d007b646c6915bb9fef60b165))
* **deps:** update dependency nodemon to v3.1.12 ([#725](https://github.com/webstreamr/webstreamr/issues/725)) ([5bfbd94](https://github.com/webstreamr/webstreamr/commit/5bfbd94e51e1c7291e12ac912578fcbf6bb39232))
* **deps:** update dependency nodemon to v3.1.13 ([#726](https://github.com/webstreamr/webstreamr/issues/726)) ([728ed7e](https://github.com/webstreamr/webstreamr/commit/728ed7ec0631d8de8df12626cdea857b1aad1059))
* **deps:** update dependency nodemon to v3.1.14 ([#728](https://github.com/webstreamr/webstreamr/issues/728)) ([3bb7a80](https://github.com/webstreamr/webstreamr/commit/3bb7a800e3662e0bd2ae31ec4b4a61eaee5dde6c))
* **deps:** update dependency typescript-eslint to v8.55.0 ([#710](https://github.com/webstreamr/webstreamr/issues/710)) ([7ec9c5b](https://github.com/webstreamr/webstreamr/commit/7ec9c5b1473e1e04203421ebbdd0c8d904744e99))
* **deps:** update dependency typescript-eslint to v8.56.0 ([#719](https://github.com/webstreamr/webstreamr/issues/719)) ([94f5c74](https://github.com/webstreamr/webstreamr/commit/94f5c7438d82f96edfb0692e55eb071642d008a9))
* **deps:** update eslint monorepo to v9.39.3 ([#727](https://github.com/webstreamr/webstreamr/issues/727)) ([26b6143](https://github.com/webstreamr/webstreamr/commit/26b6143152b8b15f2d79f747dbdb8cb48137a46a))
* **extractor:** adapt mixdrop host check ([34500ea](https://github.com/webstreamr/webstreamr/commit/34500ea3fc11376eb99a86a08c179137239d612d))
### Bug Fixes
* **source:** handle new XDMovies URL protection ([cf8fb4c](https://github.com/webstreamr/webstreamr/commit/cf8fb4cfa47741ef8cb3fd214e7eff24ecc72375))
## [0.66.3](https://github.com/webstreamr/webstreamr/compare/v0.66.2...v0.66.3) (2026-02-03)
### Performance Improvements
* **fetcher:** simplify FlareSolverr integration by just using a request per host ([31da8aa](https://github.com/webstreamr/webstreamr/commit/31da8aa92c48618b0b52fd2194262685c947e02e))
## [0.66.2](https://github.com/webstreamr/webstreamr/compare/v0.66.1...v0.66.2) (2026-02-03)
### Performance Improvements
* **fetcher:** improve FlareSolverr integration ([ae5829d](https://github.com/webstreamr/webstreamr/commit/ae5829dcb0f8064e939c06d6457f891b1c7051c8))
## [0.66.1](https://github.com/webstreamr/webstreamr/compare/v0.66.0...v0.66.1) (2026-02-02)
### Bug Fixes
* **source:** make XDMovies a fallback source to avoid hubcloud and many duplicates ([2612860](https://github.com/webstreamr/webstreamr/commit/2612860f1525a8f803e6d37aabdf5fd28b3d287f))
## [0.66.0](https://github.com/webstreamr/webstreamr/compare/v0.65.10...v0.66.0) (2026-02-02)
### Miscellaneous Chores
* **deps:** lock file maintenance ([#692](https://github.com/webstreamr/webstreamr/issues/692)) ([455d84d](https://github.com/webstreamr/webstreamr/commit/455d84d5b186ff916734977bd2b4cb0b355ca485))
### Features
* **source:** add XDMovies ([1f4d81b](https://github.com/webstreamr/webstreamr/commit/1f4d81bfc99066bfe6dafd3da7ffc8b13cdfffc1))
### Bug Fixes
* **fetcher:** never block flaresolverr timeouts ([c23ffa3](https://github.com/webstreamr/webstreamr/commit/c23ffa382d862ced1a385cf36d895f75ad3b7e97))
## [0.65.10](https://github.com/webstreamr/webstreamr/compare/v0.65.9...v0.65.10) (2026-01-28)
### Miscellaneous Chores
* **deps:** lock file maintenance ([#686](https://github.com/webstreamr/webstreamr/issues/686)) ([0743111](https://github.com/webstreamr/webstreamr/commit/074311107a96cb3ed3c3dd2af6828a9a28bbe705))
* **deps:** update dependency axios to v1.13.3 ([#685](https://github.com/webstreamr/webstreamr/issues/685)) ([19a73b3](https://github.com/webstreamr/webstreamr/commit/19a73b38669a809a473e69872be5816807da5d13))
* **deps:** update dependency axios to v1.13.4 ([#689](https://github.com/webstreamr/webstreamr/issues/689)) ([5c87c5d](https://github.com/webstreamr/webstreamr/commit/5c87c5d9e2b52aeb1665212144d06cca7e6147a4))
* **deps:** update dependency typescript-eslint to v8.54.0 ([#687](https://github.com/webstreamr/webstreamr/issues/687)) ([8f8ecb8](https://github.com/webstreamr/webstreamr/commit/8f8ecb868e5fb1dc03073ff0b53d416087ca5437))
* **extractor:** add new VOE domain ([75c9509](https://github.com/webstreamr/webstreamr/commit/75c9509793f582fd566ece0694fc6961df5f7f61))
* **extractor:** increase Fsst TTL to 3 hours ([a876c9b](https://github.com/webstreamr/webstreamr/commit/a876c9b14489f713460e56a32bcf39a3e4897796))
* **extractor:** increase StreamEmbed TTL to 3d ([e52cee2](https://github.com/webstreamr/webstreamr/commit/e52cee212508a1945bc810bda5ce07c3322769a2))
### Bug Fixes
* **extractor:** avoid caching results with empty meta, add some self-healing ([2ba6e4f](https://github.com/webstreamr/webstreamr/commit/2ba6e4fa358ca89aa522e1e97b4e2ed3ded7114a))
* **extractor:** ensure every result has a ttl ([db860c2](https://github.com/webstreamr/webstreamr/commit/db860c25c687b87bbec34bc72995ed47aa9115aa))
### Code Refactoring
* **extractor:** introduce internal type to reduce common code ([50a7e55](https://github.com/webstreamr/webstreamr/commit/50a7e5559bfa98305e006f8b7833aa2952d65029))
## [0.65.9](https://github.com/webstreamr/webstreamr/compare/v0.65.8...v0.65.9) (2026-01-23)
### Miscellaneous Chores
* **deps:** update dependency @keyv/sqlite to v4.0.8 ([#677](https://github.com/webstreamr/webstreamr/issues/677)) ([e5197fd](https://github.com/webstreamr/webstreamr/commit/e5197fdb8be200235514fe9de5d5e1ad98fb6a12))
* **deps:** update dependency @stylistic/eslint-plugin to v5.7.1 ([#682](https://github.com/webstreamr/webstreamr/issues/682)) ([622b1b3](https://github.com/webstreamr/webstreamr/commit/622b1b3bcc6890e5d926611184c90b392959caaa))
* **deps:** update dependency axios-cache-interceptor to v1.11.4 ([#678](https://github.com/webstreamr/webstreamr/issues/678)) ([d3db3fc](https://github.com/webstreamr/webstreamr/commit/d3db3fc5129e3450630d384c849cec4ae83158f8))
* **deps:** update dependency cheerio to v1.2.0 ([#683](https://github.com/webstreamr/webstreamr/issues/683)) ([43e16f5](https://github.com/webstreamr/webstreamr/commit/43e16f5bfa8447b22ae402928aa9b7c18ce14299))
### Bug Fixes
* **extractor:** use full cached meta to avoid invalid cache states ([a90d7b1](https://github.com/webstreamr/webstreamr/commit/a90d7b1cad8501a2fa74aa8e457e2249bde4e2ae))
### Code Refactoring
* **cache:** extract clearCache function ([12ea135](https://github.com/webstreamr/webstreamr/commit/12ea135feb4d7f363a4eefb48588f063815eeaf0))
* **cache:** make code more dry and return in-memory cache for test env ([a5539bc](https://github.com/webstreamr/webstreamr/commit/a5539bcf595761a973fafda77db8741f8d0c35a8))
## [0.65.8](https://github.com/webstreamr/webstreamr/compare/v0.65.7...v0.65.8) (2026-01-20)
### Miscellaneous Chores
* add env var for one-time cache file deletion ([93fe1ae](https://github.com/webstreamr/webstreamr/commit/93fe1ae871a91b5a94b79a91e7b1e97497086c29))
* **deps:** update dependency typescript-eslint to v8.53.1 ([#674](https://github.com/webstreamr/webstreamr/issues/674)) ([7c88658](https://github.com/webstreamr/webstreamr/commit/7c886583c97ffa6edc92690c8412e7241a7b3f86))
* **extractor:** add lauradaydo.com to VOE ([3c979e7](https://github.com/webstreamr/webstreamr/commit/3c979e77cc3f6790e17bb3982012aad668c202db))
* npm audit fix ([28a83e2](https://github.com/webstreamr/webstreamr/commit/28a83e2f29ed6ca10a58ba61d9dcdee2d591b2ad))
### Bug Fixes
* **extractor:** never use external URL results for lazy URL caching to avoid clashes ([1ddc8d9](https://github.com/webstreamr/webstreamr/commit/1ddc8d99d6443f36381b36fd7daaf69eec5b39c2))
* **extractor:** use MediaFlow Proxy for DoodStream ([#676](https://github.com/webstreamr/webstreamr/issues/676)) ([a00fa2c](https://github.com/webstreamr/webstreamr/commit/a00fa2c3d65ace25783532066e33d105a17b2853))
## [0.65.7](https://github.com/webstreamr/webstreamr/compare/v0.65.6...v0.65.7) (2026-01-19)
### Bug Fixes
* pass empty array instead of undefined if meta has no countries ([e8ed29e](https://github.com/webstreamr/webstreamr/commit/e8ed29eb9dea2bfe52fc2c2f07c8c245b08bee3e))
## [0.65.6](https://github.com/webstreamr/webstreamr/compare/v0.65.5...v0.65.6) (2026-01-19)
### Miscellaneous Chores
* **deps:** lock file maintenance ([#669](https://github.com/webstreamr/webstreamr/issues/669)) ([7c99e4d](https://github.com/webstreamr/webstreamr/commit/7c99e4d1c1d1195235b18639f21ac5d38d29e722))
* **deps:** update dependency @types/node to v24.10.9 ([#668](https://github.com/webstreamr/webstreamr/issues/668)) ([aeb15d8](https://github.com/webstreamr/webstreamr/commit/aeb15d86400c16d9594cd8e9f29fc2a366db69f7))
### Bug Fixes
* **extractor:** use correct referer for rgshows, treat vidzee response as block ([d259587](https://github.com/webstreamr/webstreamr/commit/d25958749119c0d4600609197323dd8e5463d65d))
* log all unhandled errors inside next handlers, terminate app properly for unhandled error outside ([646e75d](https://github.com/webstreamr/webstreamr/commit/646e75d5f88b3083f8fe491a238d1b5e061909a9))
## [0.65.5](https://github.com/webstreamr/webstreamr/compare/v0.65.4...v0.65.5) (2026-01-18)
### Miscellaneous Chores
* add issue templates ([5fd6202](https://github.com/webstreamr/webstreamr/commit/5fd62028ce56e03750a4aa415760076cfed793ce))
* add priority for sorting, move VixSrc up and RgShows down ([7b708e2](https://github.com/webstreamr/webstreamr/commit/7b708e23851ce191439cbfbe625db07f6554ac8f))
* **deps:** update dependency cacheable to v2.3.2 ([#667](https://github.com/webstreamr/webstreamr/issues/667)) ([8aa1344](https://github.com/webstreamr/webstreamr/commit/8aa1344fa590b7ab1fdeecf43f5a55472186805a))
* **fetcher:** tune FlareSolverr timeouts and use other cookie variants too ([5b49dd0](https://github.com/webstreamr/webstreamr/commit/5b49dd07356efce2e542fde8bc1fdba7bdf39b32))
### Bug Fixes
* **extractor:** only use bytes and height from meta cache to avoid clashes ([a9c281c](https://github.com/webstreamr/webstreamr/commit/a9c281c8c4c0d215dc78fedd6a34072e0aec9f31))
## [0.65.4](https://github.com/webstreamr/webstreamr/compare/v0.65.3...v0.65.4) (2026-01-16)
### Miscellaneous Chores
* extract HubDrive handling into own extractor re-using HubCloud for better caching, increase both TTLs ([986db2c](https://github.com/webstreamr/webstreamr/commit/986db2cc670dba5ce5c01e69d280803140bda24d))
* **extractor:** simplify cache expiration handling ([507b960](https://github.com/webstreamr/webstreamr/commit/507b96014c8cce1ebf4f836f084e6ce3af67acfb))
## [0.65.3](https://github.com/webstreamr/webstreamr/compare/v0.65.2...v0.65.3) (2026-01-16)
### Documentation
* add tmp mount for persistent cache to Docker run example ([231a12f](https://github.com/webstreamr/webstreamr/commit/231a12f685e56aeaab7fd377c4b953e992bcce7e))
* mention FlareSolverr support / env var ([e54b54b](https://github.com/webstreamr/webstreamr/commit/e54b54bfb3e13d417b52be001bcd646edfcf4bcf))
### Bug Fixes
* **fetcher:** more FlareSolverr related stats, fix clearance cookie expiration ([4cfbf73](https://github.com/webstreamr/webstreamr/commit/4cfbf731b87873e70a76119f96984e2f1a958fdf))
## [0.65.2](https://github.com/webstreamr/webstreamr/compare/v0.65.1...v0.65.2) (2026-01-16)
### Miscellaneous Chores
* **deps:** update dependency @tsconfig/node24 to v24.0.4 ([#662](https://github.com/webstreamr/webstreamr/issues/662)) ([90c56de](https://github.com/webstreamr/webstreamr/commit/90c56debfe2e52812f16c9043da601404c6dfbbc))
### Bug Fixes
* **fetcher:** make FlareSolverr work again, use single session and pass proxy ([59c8495](https://github.com/webstreamr/webstreamr/commit/59c84952ede26df776cc33c6da57e75ef9dfc258))
* remove leftover logging ([9cf9c44](https://github.com/webstreamr/webstreamr/commit/9cf9c4498c610cc84af4f5bf28967f169fda214a))
## [0.65.1](https://github.com/webstreamr/webstreamr/compare/v0.65.0...v0.65.1) (2026-01-15)
### Bug Fixes
* calculate fallback count properly, only use VidSrc when no other normal source provided results ([5ef6119](https://github.com/webstreamr/webstreamr/commit/5ef61192948b42240ea21ddde7940e881f921aaf))
* **extractor:** use lazy url/meta cache also for extractors without a ttl ([26278aa](https://github.com/webstreamr/webstreamr/commit/26278aadba170948107c909c9bf9426e6379b10a))
* **extractor:** use milliseconds instead of incorrect seconds for ttl ([17e70c1](https://github.com/webstreamr/webstreamr/commit/17e70c169b6e26ee674c2d608e4bef1bdbb3a08c))
* **source:** be resilient against missing heights in 4KHDHub ([79c8e7f](https://github.com/webstreamr/webstreamr/commit/79c8e7fc3255333ae011c12262410ef1739f304b))
## [0.65.0](https://github.com/webstreamr/webstreamr/compare/v0.64.0...v0.65.0) (2026-01-15)
### Miscellaneous Chores
* make cache immutable, add rate limit ([7593d3d](https://github.com/webstreamr/webstreamr/commit/7593d3d62e638168c9cfbab5cd71f514745ed42a))
### Features
* add fetcher http stats ([4cf08fc](https://github.com/webstreamr/webstreamr/commit/4cf08fc6d55dbcc1de551091d14f731265b89fd5))
* introduce fallback sources and mark VidSrc and RgShows as such ([bad1170](https://github.com/webstreamr/webstreamr/commit/bad1170421298ef6aa5f1c69a6214065fe184773))
### Bug Fixes
* **extractor:** make VixSrc fall back to multi instead of it if language cannot be determined ([ce11a80](https://github.com/webstreamr/webstreamr/commit/ce11a80ba9d71def7f4eab29666eb606e1f5ad59))
## [0.64.0](https://github.com/webstreamr/webstreamr/compare/v0.63.1...v0.64.0) (2026-01-14)
### Features
* **extractor:** add back VidSrc ([9ee91df](https://github.com/webstreamr/webstreamr/commit/9ee91dff31636d6bf980614bfd0f375135c735e7))
* **source:** bring back VidSrc as multi source ([381fb89](https://github.com/webstreamr/webstreamr/commit/381fb89cfba8ff3c985ec2ddb11f65467f59c230))
## [0.63.1](https://github.com/webstreamr/webstreamr/compare/v0.63.0...v0.63.1) (2026-01-14) ## [0.63.1](https://github.com/webstreamr/webstreamr/compare/v0.63.0...v0.63.1) (2026-01-14)

View file

@ -1,28 +1,15 @@
# WebStreamr # WebStreamr
[![Tests](https://github.com/webstreamr/webstreamr/actions/workflows/tests.yml/badge.svg)](https://github.com/webstreamr/webstreamr/actions/workflows/tests.yml) [![Tests](https://github.com/webstreamr/webstreamr/workflows/Tests/badge.svg)](https://github.com/webstreamr/webstreamr/actions/workflows/tests.yml)
[![GitHub release](https://img.shields.io/github/v/release/webstreamr/webstreamr)](https://github.com/webstreamr/webstreamr/releases) [![GitHub release](https://img.shields.io/github/v/release/webstreamr/webstreamr)](https://github.com/webstreamr/webstreamr/releases)
![GitHub License](https://img.shields.io/github/license/webstreamr/webstreamr) ![GitHub License](https://img.shields.io/github/license/webstreamr/webstreamr)
[Stremio](https://www.stremio.com/) add-on which provides HTTP URLs from streaming websites. [Stremio](https://www.stremio.com/) add-on which provides HTTP URLs from streaming websites.
HTTP streams have limitations.
For a better experience, I'd advise using a Debrid service and WebStreamr as fallback.
[TorBox](https://torbox.app/subscription?referral=f22eb00d-27ce-4e20-85fc-68da3d018b99) is working very well.
## Public instance ## Public instance
A public instance is available at https://webstreamr.hayd.uk. Hosting infrastructure for this instance is donated by [ElfHosted](https://elfhosted.com), and independently maintained by [Hayduk](https://hayd.uk). A public instance is available at https://webstreamr.hayd.uk. Hosting infrastructure for this instance is donated by [ElfHosted](https://elfhosted.com), and independently maintained by [Hayduk](https://hayd.uk).
## Known issues / limitations
- PixelServer / pixeldrain has a daily limit of 6 GB per IP: https://pixeldrain.dev
- Dropload and SuperVideo on Android do not work because Stremio does not use the `Referer` header properly via HLS playlists: https://github.com/Stremio/stremio-bugs/issues/2389, maybe https://github.com/Stremio/stremio-bugs/issues/1579
- MediaFlow proxy has to be used in an inefficient way because Stremio on Android or its players cannot deal with HLS playlist with redirects: https://github.com/Stremio/stremio-bugs/issues/1574
- FlareSolverr cookies cannot be used because Cloudflare does techniques like TLS fingerprinting most likely. But FlareSolverr uses a session per host and should be quick.
- VidSrc works but rate limits heavily and is therefore only queried as fallback if nothing else is found.
- RgShows detects shared usage and blocks IPs. It therefore only works on private instances.
## MediaFlow Proxy ## MediaFlow Proxy
[MediaFlow Proxy](https://github.com/mhdzumair/mediaflow-proxy/) can be added when configuration the add-on to gain access to a couple of more file hosters. [MediaFlow Proxy](https://github.com/mhdzumair/mediaflow-proxy/) can be added when configuration the add-on to gain access to a couple of more file hosters.
@ -64,7 +51,6 @@ You can run the latest WebStreamr via Docker. E.g.
--pull always \ --pull always \
--publish 51546:51546 \ --publish 51546:51546 \
--env TMDB_ACCESS_TOKEN="YOUR_TOKEN" \ --env TMDB_ACCESS_TOKEN="YOUR_TOKEN" \
--volume /tmp:/tmp \
webstreamr/webstreamr webstreamr/webstreamr
``` ```
@ -86,11 +72,6 @@ Optional. Comma separated list of extractors which should be disabled. E.g. `doo
Optional. Comma separated list of sources which should be disabled. E.g. `frembed,vidsrc` Optional. Comma separated list of sources which should be disabled. E.g. `frembed,vidsrc`
#### `FLARESOLVERR_ENDPOINT`
Optional. If domains show Cloudflare challenges, FlareSolverr can be used to work around them. E.g. `http://flaresolverr:8191`
Proxy configuration is passed-through and only a single session is used to save resources. Byparr is not supported.
#### `MANIFEST_ID` #### `MANIFEST_ID`
Optional. Add-on manifest ID. Default: `webstreamr` Optional. Add-on manifest ID. Default: `webstreamr`

2501
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -1,7 +1,7 @@
{ {
"name": "webstreamr", "name": "webstreamr",
"description": "Provides HTTP URLs from streaming websites.", "description": "Provides HTTP URLs from streaming websites.",
"version": "0.69.1", "version": "0.63.1",
"type": "commonjs", "type": "commonjs",
"scripts": { "scripts": {
"analyse": "tsc --noEmit --project ./tsconfig.dev.json", "analyse": "tsc --noEmit --project ./tsconfig.dev.json",
@ -51,9 +51,7 @@
"cacheable": "^2.0.0", "cacheable": "^2.0.0",
"cheerio": "^1.0.0", "cheerio": "^1.0.0",
"express": "^5.1.0", "express": "^5.1.0",
"express-rate-limit": "^8.2.1",
"fast-levenshtein": "^3.0.0", "fast-levenshtein": "^3.0.0",
"glob": "^13.0.0",
"http-proxy-agent": "^7.0.2", "http-proxy-agent": "^7.0.2",
"https-proxy-agent": "^7.0.6", "https-proxy-agent": "^7.0.6",
"memoizee": "^0.4.17", "memoizee": "^0.4.17",

View file

@ -56,7 +56,7 @@ export class StreamController {
const { streams, ttl } = await this.streamResolver.resolve(ctx, sources, type, id); const { streams, ttl } = await this.streamResolver.resolve(ctx, sources, type, id);
if (ttl && envIsProd()) { if (ttl && envIsProd()) {
res.setHeader('Cache-Control', `public, max-age=${Math.floor(ttl / 1000)}, immutable`); res.setHeader('Cache-Control', `max-age=${Math.floor(ttl / 1000)}, public`);
} }
res.setHeader('Content-Type', 'application/json'); res.setHeader('Content-Type', 'application/json');

View file

@ -7,17 +7,25 @@ import { ExtractorRegistry } from './ExtractorRegistry';
const logger = winston.createLogger({ transports: [new winston.transports.Console({ level: 'nope' })] }); const logger = winston.createLogger({ transports: [new winston.transports.Console({ level: 'nope' })] });
const extractorRegistry = new ExtractorRegistry(logger, [new DoodStream(new FetcherMock(`${__dirname}/__fixtures__/DoodStream`))]); const extractorRegistry = new ExtractorRegistry(logger, [new DoodStream(new FetcherMock(`${__dirname}/__fixtures__/DoodStream`))]);
const ctx = createTestContext({ mediaFlowProxyUrl: 'https://mediaflow.test.org', mediaFlowProxyPassword: 'test' }); const ctx = createTestContext();
describe('DoodStream', () => { describe('DoodStream', () => {
test('dood.to', async () => { test('dood.to', async () => {
expect(await extractorRegistry.handle(ctx, new URL('http://dood.to/e/sk1m9eumzyjj'))).toMatchSnapshot(); expect(await extractorRegistry.handle(ctx, new URL('http://dood.to/e/sk1m9eumzyjj'))).toMatchSnapshot();
}); });
test('missing pass_md5 -> not found', async () => {
expect(await extractorRegistry.handle(ctx, new URL('https://dood.to/e/gy8l8mb2i311'))).toMatchSnapshot();
});
test('can guess height from title', async () => { test('can guess height from title', async () => {
expect(await extractorRegistry.handle(ctx, new URL('https://do7go.com/e/dfx8me4un4ul'))).toMatchSnapshot(); expect(await extractorRegistry.handle(ctx, new URL('https://do7go.com/e/dfx8me4un4ul'))).toMatchSnapshot();
}); });
test('cloudflare storage', async () => {
expect(await extractorRegistry.handle(ctx, new URL('https://doodstream.com/e/wfpwtsgyr1xi'))).toMatchSnapshot();
});
test('not found', async () => { test('not found', async () => {
expect(await extractorRegistry.handle(ctx, new URL('https://myvidplay.com/e/cz7cus0bvlzr'))).toMatchSnapshot(); expect(await extractorRegistry.handle(ctx, new URL('https://myvidplay.com/e/cz7cus0bvlzr'))).toMatchSnapshot();
}); });

View file

@ -1,8 +1,8 @@
import bytes from 'bytes'; import bytes from 'bytes';
import * as cheerio from 'cheerio'; import * as cheerio from 'cheerio';
import randomstring from 'randomstring';
import { NotFoundError } from '../error'; import { NotFoundError } from '../error';
import { Context, Format, InternalUrlResult, Meta } from '../types'; import { Context, Format, Meta, UrlResult } from '../types';
import { buildMediaFlowProxyExtractorRedirectUrl, supportsMediaFlowProxy } from '../utils';
import { Extractor } from './Extractor'; import { Extractor } from './Extractor';
export class DoodStream extends Extractor { export class DoodStream extends Extractor {
@ -12,11 +12,9 @@ export class DoodStream extends Extractor {
public override readonly ttl: number = 21600000; // 6h public override readonly ttl: number = 21600000; // 6h
public override viaMediaFlowProxy = true;
/** @see https://github.com/Gujal00/ResolveURL/blob/master/script.module.resolveurl/lib/resolveurl/plugins/doodstream.py */ /** @see https://github.com/Gujal00/ResolveURL/blob/master/script.module.resolveurl/lib/resolveurl/plugins/doodstream.py */
public supports(ctx: Context, url: URL): boolean { public supports(_ctx: Context, url: URL): boolean {
return null !== url.host.match(/dood|do[0-9]go|doood|dooood|ds2play|ds2video|dsvplay|d0o0d|do0od|d0000d|d000d|myvidplay|vidply|all3do|doply|vide0|vvide0|d-s/) && supportsMediaFlowProxy(ctx); return null !== url.host.match(/dood|do[0-9]go|doood|dooood|ds2play|ds2video|dsvplay|d0o0d|do0od|d0000d|d000d|myvidplay|vidply|all3do|doply|vide0|vvide0|d-s/);
}; };
public override normalize(url: URL): URL { public override normalize(url: URL): URL {
@ -25,7 +23,7 @@ export class DoodStream extends Extractor {
return new URL(`http://dood.to/e/${videoId}`); return new URL(`http://dood.to/e/${videoId}`);
}; };
protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<InternalUrlResult[]> { protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<UrlResult[]> {
const headers = { Referer: meta.referer ?? url.href }; const headers = { Referer: meta.referer ?? url.href };
const html = await this.fetcher.text(ctx, url, { headers }); const html = await this.fetcher.text(ctx, url, { headers });
@ -34,21 +32,38 @@ export class DoodStream extends Extractor {
throw new NotFoundError(); throw new NotFoundError();
} }
const passMd5Match = html.match(/\/pass_md5\/[\w-]+\/([\w-]+)/) as string[];
const token = passMd5Match[1] as string;
const baseUrl = await this.fetcher.text(ctx, new URL(passMd5Match[0] as string, url.origin), { headers: { Referer: url.href } });
const $ = cheerio.load(html); const $ = cheerio.load(html);
const title = $('title').text().trim().replace(/ - DoodStream$/, '').trim(); const title = $('title').text().trim().replace(/ - DoodStream$/, '').trim();
const downloadHtml = await this.fetcher.text(ctx, new URL(url.href.replace('/e/', '/d/'))); const downloadHtml = await this.fetcher.text(ctx, new URL(url.href.replace('/e/', '/d/')));
const sizeMatch = downloadHtml.match(/([\d.]+ ?[GM]B)/); const sizeMatch = downloadHtml.match(/([\d.]+ ?[GM]B)/);
let mp4Url: URL;
if (baseUrl.includes('cloudflarestorage')) {
mp4Url = new URL(baseUrl);
} else {
mp4Url = new URL(`${baseUrl}${randomstring.generate(10)}?token=${token}&expiry=${Date.now()}`);
}
return [ return [
{ {
url: buildMediaFlowProxyExtractorRedirectUrl(ctx, 'Doodstream', url, headers), url: mp4Url,
format: Format.mp4, format: Format.mp4,
label: this.label,
ttl: this.ttl,
meta: { meta: {
...meta, ...meta,
title, title,
...(sizeMatch && { bytes: bytes.parse(sizeMatch[1] as string) as number }), ...(sizeMatch && { bytes: bytes.parse(sizeMatch[1] as string) as number }),
}, },
requestHeaders: {
Referer: url.origin,
},
}, },
]; ];
}; };

View file

@ -1,7 +1,7 @@
import bytes from 'bytes'; import bytes from 'bytes';
import * as cheerio from 'cheerio'; import * as cheerio from 'cheerio';
import { NotFoundError } from '../error'; import { NotFoundError } from '../error';
import { Context, Format, InternalUrlResult, Meta } from '../types'; import { Context, Format, Meta, UrlResult } from '../types';
import { extractUrlFromPacked, guessHeightFromPlaylist } from '../utils'; import { extractUrlFromPacked, guessHeightFromPlaylist } from '../utils';
import { Extractor } from './Extractor'; import { Extractor } from './Extractor';
@ -13,12 +13,12 @@ export class Dropload extends Extractor {
public override readonly ttl: number = 10800000; // 3h public override readonly ttl: number = 10800000; // 3h
public supports(_ctx: Context, url: URL): boolean { public supports(_ctx: Context, url: URL): boolean {
return null !== url.host.match(/dropload|dr0pstream/); return null !== url.host.match(/dropload/);
} }
public override readonly normalize = (url: URL): URL => new URL(url.href.replace('/d/', '/').replace('/e/', '/').replace('/embed-', '/')); public override readonly normalize = (url: URL): URL => new URL(url.href.replace('/d/', '/').replace('/e/', '/').replace('/embed-', '/'));
protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<InternalUrlResult[]> { protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<UrlResult[]> {
const headers = { Referer: meta.referer ?? url.href }; const headers = { Referer: meta.referer ?? url.href };
const html = await this.fetcher.text(ctx, url, { headers }); const html = await this.fetcher.text(ctx, url, { headers });
@ -28,12 +28,11 @@ export class Dropload extends Extractor {
} }
const playlistUrl = extractUrlFromPacked(html, [/sources:\[{file:"(.*?)"/]); const playlistUrl = extractUrlFromPacked(html, [/sources:\[{file:"(.*?)"/]);
const playlistHeaders = { Referer: 'https://dr0pstream.com/' };
const heightMatch = html.match(/\d{3,}x(\d{3,}),/); const heightMatch = html.match(/\d{3,}x(\d{3,}),/);
const height = heightMatch const height = heightMatch
? parseInt(heightMatch[1] as string) ? parseInt(heightMatch[1] as string)
: meta.height ?? await guessHeightFromPlaylist(ctx, this.fetcher, playlistUrl, { headers: playlistHeaders }); : meta.height ?? await guessHeightFromPlaylist(ctx, this.fetcher, playlistUrl);
const sizeMatch = html.match(/([\d.]+ ?[GM]B)/); const sizeMatch = html.match(/([\d.]+ ?[GM]B)/);
const size = sizeMatch ? bytes.parse(sizeMatch[1] as string) as number : undefined; const size = sizeMatch ? bytes.parse(sizeMatch[1] as string) as number : undefined;
@ -45,13 +44,14 @@ export class Dropload extends Extractor {
{ {
url: playlistUrl, url: playlistUrl,
format: Format.hls, format: Format.hls,
label: this.label,
ttl: this.ttl,
meta: { meta: {
...meta, ...meta,
title, title,
...(size && { bytes: size }), ...(size && { bytes: size }),
...(height && { height }), ...(height && { height }),
}, },
requestHeaders: playlistHeaders,
}, },
]; ];
}; };

View file

@ -1,4 +1,4 @@
import { Context, Format, InternalUrlResult, Meta } from '../types'; import { Context, Format, Meta, UrlResult } from '../types';
import { showExternalUrls } from '../utils'; import { showExternalUrls } from '../utils';
import { Extractor } from './Extractor'; import { Extractor } from './Extractor';
@ -13,13 +13,14 @@ export class ExternalUrl extends Extractor {
return showExternalUrls(ctx.config) && null !== url.host.match(/.*/); return showExternalUrls(ctx.config) && null !== url.host.match(/.*/);
} }
protected async extractInternal(_ctx: Context, url: URL, meta: Meta): Promise<InternalUrlResult[]> { protected async extractInternal(_ctx: Context, url: URL, meta: Meta): Promise<UrlResult[]> {
return [ return [
{ {
url: url, url: url,
format: Format.unknown, format: Format.unknown,
isExternal: true, isExternal: true,
label: `${url.host}`, label: `${url.host}`,
ttl: this.ttl,
meta, meta,
}, },
]; ];

View file

@ -1,5 +1,5 @@
import { NotFoundError } from '../error'; import { NotFoundError } from '../error';
import { Context, Format, InternalUrlResult, Meta, UrlResult } from '../types'; import { Context, Format, Meta, UrlResult } from '../types';
import { Fetcher } from '../utils'; import { Fetcher } from '../utils';
export abstract class Extractor { export abstract class Extractor {
@ -9,8 +9,6 @@ export abstract class Extractor {
public readonly ttl: number = 900000; // 15m public readonly ttl: number = 900000; // 15m
public readonly cacheVersion: number | undefined = undefined;
public readonly viaMediaFlowProxy: boolean = false; public readonly viaMediaFlowProxy: boolean = false;
protected readonly fetcher: Fetcher; protected readonly fetcher: Fetcher;
@ -25,17 +23,12 @@ export abstract class Extractor {
return url; return url;
}; };
protected abstract extractInternal(ctx: Context, url: URL, meta: Meta): Promise<InternalUrlResult[]>; protected abstract extractInternal(ctx: Context, url: URL, meta: Meta): Promise<UrlResult[]>;
public async extract(ctx: Context, url: URL, meta: Meta): Promise<UrlResult[]> { public async extract(ctx: Context, url: URL, meta: Meta): Promise<UrlResult[]> {
try { try {
return (await this.extractInternal(ctx, url, meta)).map( return (await this.extractInternal(ctx, url, meta)).map(
urlResult => ({ urlResult => ({ ...urlResult, label: this.formatLabel(urlResult.label) }),
...urlResult,
label: this.formatLabel(urlResult.label ?? this.label),
ttl: this.ttl,
}),
); );
} catch (error) { } catch (error) {
if (error instanceof NotFoundError) { if (error instanceof NotFoundError) {
@ -49,7 +42,6 @@ export abstract class Extractor {
isExternal: true, isExternal: true,
error, error,
label: this.formatLabel(this.label), label: this.formatLabel(this.label),
ttl: 0,
meta, meta,
}, },
]; ];

View file

@ -49,11 +49,6 @@ describe('ExtractorRegistry', () => {
expect(urlResults).toMatchSnapshot(); expect(urlResults).toMatchSnapshot();
}); });
test('empty results are cached', async () => {
const urlResults = await extractorRegistry.handle(ctx, new URL('https://dropload.io/asdfghijklmn.html'), { title: 'title' });
expect(urlResults).toMatchSnapshot();
});
test('stats returns something', async () => { test('stats returns something', async () => {
const stats = extractorRegistry.stats(); const stats = extractorRegistry.stats();

View file

@ -1,7 +1,9 @@
// eslint-disable-next-line import/no-named-as-default
import KeyvSqlite from '@keyv/sqlite';
import { Cacheable, CacheableMemory, Keyv } from 'cacheable'; import { Cacheable, CacheableMemory, Keyv } from 'cacheable';
import winston from 'winston'; import winston from 'winston';
import { Context, Format, Meta, UrlResult } from '../types'; import { Context, Format, Meta, UrlResult } from '../types';
import { createKeyvSqlite, envGet, isExtractorDisabled } from '../utils'; import { envGet, getCacheDir, isExtractorDisabled, scheduleKeyvSqliteCleanup } from '../utils';
import { Extractor } from './Extractor'; import { Extractor } from './Extractor';
export class ExtractorRegistry { export class ExtractorRegistry {
@ -15,19 +17,23 @@ export class ExtractorRegistry {
this.logger = logger; this.logger = logger;
this.extractors = extractors; this.extractors = extractors;
const urlResultKeyvSqlite = new KeyvSqlite(`sqlite://${getCacheDir()}/webstreamr-extractor-cache.sqlite`);
this.urlResultCache = new Cacheable({ this.urlResultCache = new Cacheable({
nonBlocking: true, nonBlocking: true,
primary: new Keyv({ store: new CacheableMemory({ lruSize: 1024 }) }), primary: new Keyv({ store: new CacheableMemory({ lruSize: 1024 }) }),
secondary: createKeyvSqlite('extractor-cache'), secondary: new Keyv(urlResultKeyvSqlite),
stats: true, stats: true,
}); });
scheduleKeyvSqliteCleanup(urlResultKeyvSqlite);
const lazyUrlResultKeyvSqlite = new KeyvSqlite(`sqlite://${getCacheDir()}/webstreamr-extractor-lazy-cache.sqlite`);
this.lazyUrlResultCache = new Cacheable({ this.lazyUrlResultCache = new Cacheable({
nonBlocking: true, nonBlocking: true,
primary: new Keyv({ store: new CacheableMemory({ lruSize: 1024 }) }), primary: new Keyv({ store: new CacheableMemory({ lruSize: 1024 }) }),
secondary: createKeyvSqlite('extractor-lazy-cache'), secondary: new Keyv(lazyUrlResultKeyvSqlite),
stats: true, stats: true,
}); });
scheduleKeyvSqliteCleanup(lazyUrlResultKeyvSqlite);
} }
public stats() { public stats() {
@ -44,16 +50,20 @@ export class ExtractorRegistry {
} }
const normalizedUrl = extractor.normalize(url); const normalizedUrl = extractor.normalize(url);
const cacheKey = this.determineCacheKey(ctx, extractor, normalizedUrl); const cacheKey = extractor.viaMediaFlowProxy
? `${extractor.id}_${normalizedUrl}_${ctx.config.mediaFlowProxyUrl}`
: `${extractor.id}_${normalizedUrl}`;
const storedDataRaw = await this.urlResultCache.getRaw<UrlResult[]>(cacheKey); const storedDataRaw = await this.urlResultCache.getRaw<UrlResult[]>(cacheKey);
const expires = storedDataRaw?.expires; const expires = storedDataRaw?.expires;
if (storedDataRaw && expires) { if (storedDataRaw && expires) {
const ttl = expires - Date.now(); // Ignore the cache randomly after at least 2/3 of the TTL passed to start refreshing results slowly
const refreshTimestamp = this.randomInteger(expires - extractor.ttl * (2 / 3), expires);
const now = Date.now();
/* istanbul ignore if */ /* istanbul ignore if */
if (ttl > 0) { if (refreshTimestamp > now) {
return (storedDataRaw.value as UrlResult[]).map(urlResult => ({ ...urlResult, ttl, url: new URL(urlResult.url) })); return (storedDataRaw.value as UrlResult[]).map(urlResult => ({ ...urlResult, ttl: expires - now, url: new URL(urlResult.url) }));
} }
} }
@ -61,7 +71,7 @@ export class ExtractorRegistry {
/* istanbul ignore next */ /* istanbul ignore next */
if ( if (
lazyUrlResults.length && allowLazy && !extractor.viaMediaFlowProxy lazyUrlResults.length && allowLazy && !extractor.viaMediaFlowProxy && extractor.id !== 'external'
&& lazyUrlResults.every(urlResult => urlResult.format !== Format.hls) // related to Android issues, e.g. https://github.com/Stremio/stremio-bugs/issues/1574 or https://github.com/Stremio/stremio-bugs/issues/1579 && lazyUrlResults.every(urlResult => urlResult.format !== Format.hls) // related to Android issues, e.g. https://github.com/Stremio/stremio-bugs/issues/1574 or https://github.com/Stremio/stremio-bugs/issues/1579
) { ) {
// generate lazy extract urls // generate lazy extract urls
@ -77,36 +87,29 @@ export class ExtractorRegistry {
this.logger.info(`Extract ${url} using ${extractor.id} extractor`, ctx); this.logger.info(`Extract ${url} using ${extractor.id} extractor`, ctx);
const mergedMeta: Meta = { ...meta, ...lazyUrlResults[0]?.meta }; const urlResults = await extractor.extract(
const urlResults = await extractor.extract(ctx, normalizedUrl, { extractorId: extractor.id, ...mergedMeta }); ctx,
normalizedUrl,
{
...meta,
...lazyUrlResults[0]?.meta,
extractorId: meta?.extractorId ?? extractor.id,
},
);
if (!Object.keys(mergedMeta).length || urlResults.some(urlResult => urlResult.error)) { if (!urlResults.length) {
await this.urlResultCache.delete(cacheKey); await this.urlResultCache.set<UrlResult[]>(cacheKey, urlResults, 43200000); // 12h
} else if (!urlResults.some(urlResult => urlResult.error) && extractor.ttl) {
await this.urlResultCache.set<UrlResult[]>(cacheKey, urlResults, extractor.ttl);
await this.lazyUrlResultCache.set<UrlResult[]>(normalizedUrl.href, urlResults, 2628000); // 1 month
} else {
await this.lazyUrlResultCache.delete(normalizedUrl.href); await this.lazyUrlResultCache.delete(normalizedUrl.href);
return urlResults;
}
const ttl = urlResults.length ? extractor.ttl : 43200000; // 12h
await this.urlResultCache.set<UrlResult[]>(cacheKey, urlResults, ttl);
if (extractor.id !== 'external') {
await this.lazyUrlResultCache.set<UrlResult[]>(normalizedUrl.href, urlResults, 2629800000); // 1 month
} }
return urlResults; return urlResults;
}; };
private determineCacheKey(ctx: Context, extractor: Extractor, url: URL): string { private randomInteger(min: number, max: number) {
let suffix = ''; return Math.floor(Math.random() * (max - min + 1)) + min;
if (extractor.viaMediaFlowProxy) {
suffix += `_${ctx.config.mediaFlowProxyUrl}`;
}
if (extractor.cacheVersion) {
suffix += `_${extractor.cacheVersion}`;
}
return `${extractor.id}_${url}${suffix}`;
} }
} }

View file

@ -1,6 +1,6 @@
import bytes from 'bytes'; import bytes from 'bytes';
import { NotFoundError } from '../error'; import { NotFoundError } from '../error';
import { Context, Format, InternalUrlResult, Meta } from '../types'; import { Context, Format, Meta, UrlResult } from '../types';
import { buildMediaFlowProxyExtractorStreamUrl, supportsMediaFlowProxy } from '../utils'; import { buildMediaFlowProxyExtractorStreamUrl, supportsMediaFlowProxy } from '../utils';
import { Extractor } from './Extractor'; import { Extractor } from './Extractor';
@ -19,7 +19,7 @@ export class Fastream extends Extractor {
return new URL(url.href.replace('/e/', '/embed-').replace('/d/', '/embed-')); return new URL(url.href.replace('/e/', '/embed-').replace('/d/', '/embed-'));
} }
protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<InternalUrlResult[]> { protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<UrlResult[]> {
const headers = { Referer: meta.referer ?? url.href }; const headers = { Referer: meta.referer ?? url.href };
const downloadUrl = new URL(url.href.replace('/embed-', '/d/')); const downloadUrl = new URL(url.href.replace('/embed-', '/d/'));
@ -38,6 +38,8 @@ export class Fastream extends Extractor {
{ {
url: playlistUrl, url: playlistUrl,
format: Format.hls, format: Format.hls,
label: this.label,
ttl: this.ttl,
meta: { meta: {
...meta, ...meta,
bytes: bytes.parse(heightAndSizeMatch[2] as string) as number, bytes: bytes.parse(heightAndSizeMatch[2] as string) as number,

View file

@ -1,7 +1,7 @@
import bytes from 'bytes'; import bytes from 'bytes';
import * as cheerio from 'cheerio'; import * as cheerio from 'cheerio';
import { NotFoundError } from '../error'; import { NotFoundError } from '../error';
import { Context, Format, InternalUrlResult, Meta } from '../types'; import { Context, Format, Meta, UrlResult } from '../types';
import { buildMediaFlowProxyExtractorStreamUrl, supportsMediaFlowProxy, unpackEval } from '../utils'; import { buildMediaFlowProxyExtractorStreamUrl, supportsMediaFlowProxy, unpackEval } from '../utils';
import { Extractor } from './Extractor'; import { Extractor } from './Extractor';
@ -62,7 +62,7 @@ export class FileLions extends Extractor {
return new URL(url.href.replace('/v/', '/f/').replace('/download/', '/f/').replace('/file/', '/f/')); return new URL(url.href.replace('/v/', '/f/').replace('/download/', '/f/').replace('/file/', '/f/'));
} }
protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<InternalUrlResult[]> { protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<UrlResult[]> {
const headers = { Referer: meta.referer ?? url.href }; const headers = { Referer: meta.referer ?? url.href };
const html = await this.fetcher.text(ctx, url, { headers }); const html = await this.fetcher.text(ctx, url, { headers });
@ -87,6 +87,8 @@ export class FileLions extends Extractor {
{ {
url: await buildMediaFlowProxyExtractorStreamUrl(ctx, this.fetcher, 'FileLions', url, headers), url: await buildMediaFlowProxyExtractorStreamUrl(ctx, this.fetcher, 'FileLions', url, headers),
format: Format.hls, format: Format.hls,
label: this.label,
ttl: this.ttl,
meta: { meta: {
...meta, ...meta,
height: parseInt(heightMatch[1] as string), height: parseInt(heightMatch[1] as string),

View file

@ -1,6 +1,6 @@
import * as cheerio from 'cheerio'; import * as cheerio from 'cheerio';
import { NotFoundError } from '../error'; import { NotFoundError } from '../error';
import { Context, Format, InternalUrlResult, Meta } from '../types'; import { Context, Format, Meta, UrlResult } from '../types';
import { import {
buildMediaFlowProxyExtractorStreamUrl, buildMediaFlowProxyExtractorStreamUrl,
supportsMediaFlowProxy, supportsMediaFlowProxy,
@ -45,7 +45,7 @@ export class FileMoon extends Extractor {
return new URL(url.href.replace('/e/', '/d/')); return new URL(url.href.replace('/e/', '/d/'));
} }
protected async extractInternal(ctx: Context, url: URL, meta: Meta, originalUrl?: URL): Promise<InternalUrlResult[]> { protected async extractInternal(ctx: Context, url: URL, meta: Meta, originalUrl?: URL): Promise<UrlResult[]> {
const headers = { Referer: meta.referer ?? url.href }; const headers = { Referer: meta.referer ?? url.href };
const html = await this.fetcher.text(ctx, url, { headers }); const html = await this.fetcher.text(ctx, url, { headers });
@ -72,6 +72,8 @@ export class FileMoon extends Extractor {
{ {
url: playlistUrl, url: playlistUrl,
format: Format.hls, format: Format.hls,
label: this.label,
ttl: this.ttl,
meta: { meta: {
...meta, ...meta,
...(heightMatch && { height: parseInt(heightMatch[1] as string) }), ...(heightMatch && { height: parseInt(heightMatch[1] as string) }),

View file

@ -1,5 +1,5 @@
import * as cheerio from 'cheerio'; import * as cheerio from 'cheerio';
import { Context, Format, InternalUrlResult, Meta } from '../types'; import { Context, Format, Meta, UrlResult } from '../types';
import { Extractor } from './Extractor'; import { Extractor } from './Extractor';
export class Fsst extends Extractor { export class Fsst extends Extractor {
@ -7,13 +7,11 @@ export class Fsst extends Extractor {
public readonly label = 'Fsst'; public readonly label = 'Fsst';
public override readonly ttl: number = 10800000; // 3h
public supports(_ctx: Context, url: URL): boolean { public supports(_ctx: Context, url: URL): boolean {
return null !== url.host.match(/fsst/); return null !== url.host.match(/fsst/);
}; };
protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<InternalUrlResult[]> { protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<UrlResult[]> {
const headers = { Referer: meta.referer ?? url.href }; const headers = { Referer: meta.referer ?? url.href };
const html = await this.fetcher.text(ctx, url, { headers, noProxyHeaders: true }); const html = await this.fetcher.text(ctx, url, { headers, noProxyHeaders: true });
@ -31,6 +29,7 @@ export class Fsst extends Extractor {
return [{ return [{
url: await this.fetcher.getFinalRedirectUrl(ctx, new URL(fileHref), { headers, noProxyHeaders: true }, 1), url: await this.fetcher.getFinalRedirectUrl(ctx, new URL(fileHref), { headers, noProxyHeaders: true }, 1),
format: Format.mp4, format: Format.mp4,
label: this.label,
meta: { meta: {
...meta, ...meta,
height: parseInt(heightAndUrlMatch[1] as string), height: parseInt(heightAndUrlMatch[1] as string),

View file

@ -21,8 +21,4 @@ describe('HubCloud', () => {
test('handle dark 2017 s03e08', async () => { test('handle dark 2017 s03e08', async () => {
expect(await extractorRegistry.handle(ctx, new URL('https://hubcloud.one/drive/nknlofk8snfnknh'))).toMatchSnapshot(); expect(await extractorRegistry.handle(ctx, new URL('https://hubcloud.one/drive/nknlofk8snfnknh'))).toMatchSnapshot();
}); });
test('handle goat 2026', async () => {
expect(await extractorRegistry.handle(ctx, new URL('https://hubcloud.foo/drive/p94k4dccjwxjcx4'))).toMatchSnapshot();
});
}); });

View file

@ -1,7 +1,6 @@
import bytes from 'bytes'; import bytes from 'bytes';
import * as cheerio from 'cheerio'; import * as cheerio from 'cheerio';
import { Context, Format, InternalUrlResult, Meta } from '../types'; import { Context, Format, Meta, UrlResult } from '../types';
import { findCountryCodes, findHeight } from '../utils';
import { Extractor } from './Extractor'; import { Extractor } from './Extractor';
export class HubCloud extends Extractor { export class HubCloud extends Extractor {
@ -9,15 +8,13 @@ export class HubCloud extends Extractor {
public readonly label = 'HubCloud'; public readonly label = 'HubCloud';
public override readonly ttl: number = 43200000; // 12h public override readonly ttl: number = 259200000; // 3d
public override readonly cacheVersion = 1;
public supports(_ctx: Context, url: URL): boolean { public supports(_ctx: Context, url: URL): boolean {
return null !== url.host.match(/hubcloud/); return null !== url.host.match(/hubcloud/);
} }
protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<InternalUrlResult[]> { protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<UrlResult[]> {
const headers = { Referer: meta.referer ?? url.href }; const headers = { Referer: meta.referer ?? url.href };
const redirectHtml = await this.fetcher.text(ctx, url, { headers }); const redirectHtml = await this.fetcher.text(ctx, url, { headers });
@ -26,10 +23,6 @@ export class HubCloud extends Extractor {
const linksHtml = await this.fetcher.text(ctx, new URL(redirectUrlMatch[1] as string), { headers: { Referer: url.href } }); const linksHtml = await this.fetcher.text(ctx, new URL(redirectUrlMatch[1] as string), { headers: { Referer: url.href } });
const $ = cheerio.load(linksHtml); const $ = cheerio.load(linksHtml);
const title = $('title').text().trim();
const countryCodes = [...new Set([...meta.countryCodes ?? [], ...findCountryCodes(title)])];
const height = meta.height ?? findHeight(title);
return Promise.all([ return Promise.all([
...$('a') ...$('a')
.filter((_i, el) => { .filter((_i, el) => {
@ -43,58 +36,30 @@ export class HubCloud extends Extractor {
url, url,
format: Format.unknown, format: Format.unknown,
label: `${this.label} (FSL)`, label: `${this.label} (FSL)`,
ttl: this.ttl,
meta: { meta: {
...meta, ...meta,
bytes: bytes.parse($('#size').text()) as number, bytes: bytes.parse($('#size').text()) as number,
extractorId: `${this.id}_fsl`, extractorId: `${this.id}_fsl`,
countryCodes, title: $('title').text().trim(),
height,
title,
},
};
}).toArray(),
...$('a')
.filter((_i, el) => {
const text = $(el).text();
return text.includes('FSLv2');
})
.map((_i, el) => {
const url = new URL($(el).attr('href') as string);
return {
url,
format: Format.unknown,
label: `${this.label} (FSLv2)`,
meta: {
...meta,
bytes: bytes.parse($('#size').text()) as number,
extractorId: `${this.id}_fslv2`,
countryCodes,
height,
title,
}, },
}; };
}).toArray(), }).toArray(),
...$('a') ...$('a')
.filter((_i, el) => $(el).text().includes('PixelServer')) .filter((_i, el) => $(el).text().includes('PixelServer'))
.map((_i, el) => { .map((_i, el) => {
const userUrl = new URL(($(el).attr('href') as string).replace('/api/file/', '/u/')); const url = new URL(($(el).attr('href') as string).replace('/u/', '/api/file/'));
const url = new URL(userUrl.href.replace('/u/', '/api/file/'));
url.searchParams.set('download', '');
return { return {
url, url,
format: Format.unknown, format: Format.unknown,
label: `${this.label} (PixelServer)`, label: `${this.label} (PixelServer)`,
ttl: this.ttl,
meta: { meta: {
...meta, ...meta,
bytes: bytes.parse($('#size').text()) as number, bytes: bytes.parse($('#size').text()) as number,
extractorId: `${this.id}_pixelserver`, extractorId: `${this.id}_pixelserver`,
countryCodes, title: $('title').text().trim(),
height,
title,
}, },
requestHeaders: { Referer: userUrl.href },
}; };
}).toArray(), }).toArray(),
]); ]);

View file

@ -1,29 +0,0 @@
import winston from 'winston';
import { createTestContext } from '../test';
import { FetcherMock } from '../utils';
import { ExtractorRegistry } from './ExtractorRegistry';
import { HubCloud } from './HubCloud';
import { HubDrive } from './HubDrive';
const logger = winston.createLogger({ transports: [new winston.transports.Console({ level: 'nope' })] });
const extractorRegistry = new ExtractorRegistry(
logger,
[
new HubDrive(
new FetcherMock(`${__dirname}/__fixtures__/HubDrive`),
new HubCloud(new FetcherMock(`${__dirname}/__fixtures__/HubDrive/HubCloud`)),
),
],
);
const ctx = createTestContext();
describe('HubDrive', () => {
test('handle avatar', async () => {
expect(await extractorRegistry.handle(ctx, new URL('https://hubdrive.space/file/7283903021'))).toMatchSnapshot();
});
test('handle missing hubcloud', async () => {
expect(await extractorRegistry.handle(ctx, new URL('https://hubdrive.space/file/2243124026'))).toMatchSnapshot();
});
});

View file

@ -1,40 +0,0 @@
import * as cheerio from 'cheerio';
import { Context, InternalUrlResult, Meta } from '../types';
import { Fetcher } from '../utils';
import { Extractor } from './Extractor';
import { HubCloud } from './HubCloud';
export class HubDrive extends Extractor {
public readonly id = 'hubdrive';
public readonly label = 'HubDrive';
public override readonly ttl: number = 43200000; // 12h
public override readonly cacheVersion = 1;
private readonly hubCloud: HubCloud;
public constructor(fetcher: Fetcher, hubCloud: HubCloud) {
super(fetcher);
this.hubCloud = hubCloud;
}
public supports(_ctx: Context, url: URL): boolean {
return null !== url.host.match(/hubdrive/);
}
protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<InternalUrlResult[]> {
const headers = { Referer: meta.referer ?? url.href };
const html = await this.fetcher.text(ctx, url, { headers });
const $ = cheerio.load(html);
const hubCloudUrl = $('a:contains("HubCloud")')
.map((_i, el) => new URL($(el).attr('href') as string))
.get(0);
return hubCloudUrl ? this.hubCloud.extract(ctx, hubCloudUrl, meta) : [];
};
}

View file

@ -1,5 +1,5 @@
import crypto from 'crypto'; import crypto from 'crypto';
import { Context, Format, InternalUrlResult, Meta } from '../types'; import { Context, Format, Meta, UrlResult } from '../types';
import { guessHeightFromPlaylist } from '../utils'; import { guessHeightFromPlaylist } from '../utils';
import { Extractor } from './Extractor'; import { Extractor } from './Extractor';
@ -43,7 +43,7 @@ export class KinoGer extends Extractor {
return new URL(`${url.origin}/api/v1/video?id=${url.hash.slice(1)}`); return new URL(`${url.origin}/api/v1/video?id=${url.hash.slice(1)}`);
} }
protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<InternalUrlResult[]> { protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<UrlResult[]> {
const headers = { const headers = {
'Origin': url.origin, 'Origin': url.origin,
'Referer': url.origin + '/', 'Referer': url.origin + '/',
@ -66,6 +66,8 @@ export class KinoGer extends Extractor {
{ {
url: m3u8Url, url: m3u8Url,
format: Format.hls, format: Format.hls,
label: this.label,
ttl: this.ttl,
meta: { meta: {
...meta, ...meta,
height: meta.height ?? await guessHeightFromPlaylist(ctx, this.fetcher, m3u8Url, { headers }), height: meta.height ?? await guessHeightFromPlaylist(ctx, this.fetcher, m3u8Url, { headers }),

View file

@ -1,7 +1,7 @@
import bytes from 'bytes'; import bytes from 'bytes';
import * as cheerio from 'cheerio'; import * as cheerio from 'cheerio';
import { NotFoundError } from '../error'; import { NotFoundError } from '../error';
import { Context, Format, InternalUrlResult, Meta } from '../types'; import { Context, Format, Meta, UrlResult } from '../types';
import { import {
buildMediaFlowProxyExtractorStreamUrl, buildMediaFlowProxyExtractorStreamUrl,
supportsMediaFlowProxy, supportsMediaFlowProxy,
@ -34,7 +34,7 @@ export class LuluStream extends Extractor {
return new URL(`/e/${videoId}`, url); return new URL(`/e/${videoId}`, url);
} }
protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<InternalUrlResult[]> { protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<UrlResult[]> {
const headers = { Referer: meta.referer ?? url.href }; const headers = { Referer: meta.referer ?? url.href };
const fileUrl = new URL(url.href.replace('/e/', '/d/')); const fileUrl = new URL(url.href.replace('/e/', '/d/'));
@ -55,6 +55,8 @@ export class LuluStream extends Extractor {
{ {
url: playlistUrl, url: playlistUrl,
format: Format.hls, format: Format.hls,
label: this.label,
ttl: this.ttl,
meta: { meta: {
...meta, ...meta,
title, title,

View file

@ -1,7 +1,7 @@
import bytes from 'bytes'; import bytes from 'bytes';
import * as cheerio from 'cheerio'; import * as cheerio from 'cheerio';
import { NotFoundError } from '../error'; import { NotFoundError } from '../error';
import { Context, Format, InternalUrlResult, Meta } from '../types'; import { Context, Format, Meta, UrlResult } from '../types';
import { buildMediaFlowProxyExtractorRedirectUrl, supportsMediaFlowProxy } from '../utils'; import { buildMediaFlowProxyExtractorRedirectUrl, supportsMediaFlowProxy } from '../utils';
import { Extractor } from './Extractor'; import { Extractor } from './Extractor';
@ -13,12 +13,12 @@ export class Mixdrop extends Extractor {
public override viaMediaFlowProxy = true; public override viaMediaFlowProxy = true;
public supports(ctx: Context, url: URL): boolean { public supports(ctx: Context, url: URL): boolean {
return null !== url.host.match(/mixdrop|mixdrp|mixdroop|m1xdrop/) && supportsMediaFlowProxy(ctx); return null !== url.host.match(/mixdrop/) && supportsMediaFlowProxy(ctx);
} }
public override readonly normalize = (url: URL): URL => new URL(url.href.replace('/f/', '/e/')); public override readonly normalize = (url: URL): URL => new URL(url.href.replace('/f/', '/e/'));
protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<InternalUrlResult[]> { protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<UrlResult[]> {
const fileUrl = new URL(url.href.replace('/e/', '/f/')); const fileUrl = new URL(url.href.replace('/e/', '/f/'));
const html = await this.fetcher.text(ctx, fileUrl); const html = await this.fetcher.text(ctx, fileUrl);
@ -35,6 +35,8 @@ export class Mixdrop extends Extractor {
{ {
url: buildMediaFlowProxyExtractorRedirectUrl(ctx, 'Mixdrop', url), url: buildMediaFlowProxyExtractorRedirectUrl(ctx, 'Mixdrop', url),
format: Format.mp4, format: Format.mp4,
label: this.label,
ttl: this.ttl,
meta: { meta: {
...meta, ...meta,
bytes: bytes.parse((sizeMatch[1] as string).replace(',', '')) as number, bytes: bytes.parse((sizeMatch[1] as string).replace(',', '')) as number,

View file

@ -1,5 +1,4 @@
import { BlockedError } from '../error'; import { Context, Format, Meta, UrlResult } from '../types';
import { BlockedReason, Context, Format, InternalUrlResult, Meta } from '../types';
import { guessHeightFromPlaylist } from '../utils'; import { guessHeightFromPlaylist } from '../utils';
import { Extractor } from './Extractor'; import { Extractor } from './Extractor';
@ -20,17 +19,14 @@ export class RgShows extends Extractor {
return null !== url.host.match(/rgshows/); return null !== url.host.match(/rgshows/);
} }
protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<InternalUrlResult[]> { protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<UrlResult[]> {
const headers = { 'Referer': 'https://www.rgshows.ru/', 'Origin': 'https://www.rgshows.ru', 'User-Agent': 'Mozilla' }; const nonSubDomainUrl = new URL(url);
nonSubDomainUrl.hostname = nonSubDomainUrl.hostname.split('.').slice(-2).join('.');
const headers = { 'Referer': `${nonSubDomainUrl.origin}/`, 'Origin': nonSubDomainUrl.origin, 'User-Agent': 'Mozilla' };
const data = await this.fetcher.json(ctx, url, { headers }) as RgShowsApiData; const data = await this.fetcher.json(ctx, url, { headers }) as RgShowsApiData;
const streamUrl = new URL(data.stream.url); const streamUrl = new URL(data.stream.url);
/* istanbul ignore if */
if (streamUrl.host.includes('vidzee')) {
throw new BlockedError(url, BlockedReason.unknown, {});
}
const isMp4 = streamUrl.href.includes('mp4'); const isMp4 = streamUrl.href.includes('mp4');
const isHls = streamUrl.href.includes('m3u8') || streamUrl.href.includes('txt'); const isHls = streamUrl.href.includes('m3u8') || streamUrl.href.includes('txt');
@ -38,6 +34,8 @@ export class RgShows extends Extractor {
{ {
url: streamUrl, url: streamUrl,
format: isMp4 ? Format.mp4 : (isHls ? Format.hls : /* istanbul ignore next */ Format.unknown), format: isMp4 ? Format.mp4 : (isHls ? Format.hls : /* istanbul ignore next */ Format.unknown),
label: this.label,
ttl: this.ttl,
meta: { meta: {
...meta, ...meta,
...(isHls && { height: meta.height ?? await guessHeightFromPlaylist(ctx, this.fetcher, streamUrl, { headers }) }), ...(isHls && { height: meta.height ?? await guessHeightFromPlaylist(ctx, this.fetcher, streamUrl, { headers }) }),

View file

@ -1,6 +1,6 @@
import * as cheerio from 'cheerio'; import * as cheerio from 'cheerio';
import { NotFoundError } from '../error'; import { NotFoundError } from '../error';
import { Context, Format, InternalUrlResult, Meta } from '../types'; import { Context, Format, Meta, UrlResult } from '../types';
import { Extractor } from './Extractor'; import { Extractor } from './Extractor';
export class SaveFiles extends Extractor { export class SaveFiles extends Extractor {
@ -18,7 +18,7 @@ export class SaveFiles extends Extractor {
return new URL(url.href.replace('/e/', '/').replace('/d/', '/')); return new URL(url.href.replace('/e/', '/').replace('/d/', '/'));
} }
protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<InternalUrlResult[]> { protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<UrlResult[]> {
const headers = { Referer: meta.referer ?? url.href }; const headers = { Referer: meta.referer ?? url.href };
const html = await this.fetcher.text(ctx, url, { headers }); const html = await this.fetcher.text(ctx, url, { headers });
@ -37,6 +37,8 @@ export class SaveFiles extends Extractor {
{ {
url: new URL(fileMatch[1] as string), url: new URL(fileMatch[1] as string),
format: Format.hls, format: Format.hls,
label: this.label,
ttl: this.ttl,
meta: { meta: {
...meta, ...meta,
title, title,

View file

@ -1,5 +1,5 @@
import { NotFoundError } from '../error'; import { NotFoundError } from '../error';
import { Context, Format, InternalUrlResult, Meta } from '../types'; import { Context, Format, Meta, UrlResult } from '../types';
import { Extractor } from './Extractor'; import { Extractor } from './Extractor';
export class StreamEmbed extends Extractor { export class StreamEmbed extends Extractor {
@ -7,13 +7,11 @@ export class StreamEmbed extends Extractor {
public readonly label = 'StreamEmbed'; public readonly label = 'StreamEmbed';
public override readonly ttl: number = 259200000; // 3d
public supports(_ctx: Context, url: URL): boolean { public supports(_ctx: Context, url: URL): boolean {
return null !== url.host.match(/bullstream|mp4player|watch\.gxplayer/); return null !== url.host.match(/bullstream|mp4player|watch\.gxplayer/);
} }
protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<InternalUrlResult[]> { protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<UrlResult[]> {
const headers = { Referer: meta.referer ?? url.href }; const headers = { Referer: meta.referer ?? url.href };
const html = await this.fetcher.text(ctx, url, { headers }); const html = await this.fetcher.text(ctx, url, { headers });
@ -28,6 +26,8 @@ export class StreamEmbed extends Extractor {
{ {
url: new URL(`/m3u8/${video.uid}/${video.md5}/master.txt?s=1&id=${video.id}&cache=${video.status}`, url.origin), url: new URL(`/m3u8/${video.uid}/${video.md5}/master.txt?s=1&id=${video.id}&cache=${video.status}`, url.origin),
format: Format.hls, format: Format.hls,
label: this.label,
ttl: this.ttl,
meta: { meta: {
...meta, ...meta,
height: parseInt(JSON.parse(video.quality)[0]), height: parseInt(JSON.parse(video.quality)[0]),

View file

@ -0,0 +1,16 @@
import winston from 'winston';
import { createTestContext } from '../test';
import { FetcherMock } from '../utils';
import { ExtractorRegistry } from './ExtractorRegistry';
import { StreamUp } from './StreamUp';
const logger = winston.createLogger({ transports: [new winston.transports.Console({ level: 'nope' })] });
const extractorRegistry = new ExtractorRegistry(logger, [new StreamUp(new FetcherMock(`${__dirname}/__fixtures__/StreamUp`))]);
const ctx = createTestContext();
describe('StreamUp', () => {
test('handle one battle after another', async () => {
expect(await extractorRegistry.handle(ctx, new URL('https://strmup.to/6950ae79eaa4c'))).toMatchSnapshot();
});
});

49
src/extractor/StreamUp.ts Normal file
View file

@ -0,0 +1,49 @@
import * as cheerio from 'cheerio';
import { Context, Format, Meta, UrlResult } from '../types';
import { guessHeightFromPlaylist } from '../utils';
import { Extractor } from './Extractor';
interface StreamUpApiData {
streaming_url: string;
}
/** @see https://github.com/Gujal00/ResolveURL/blob/master/script.module.resolveurl/lib/resolveurl/plugins/streamup.py */
export class StreamUp extends Extractor {
public readonly id = 'streamup';
public readonly label = 'StreamUP';
public override readonly ttl: number = 10800000; // 3h
public supports(_ctx: Context, url: URL): boolean {
return null !== url.host.match(/streamup|strmup/) || [
'vfaststream.com',
].includes(url.host);
}
protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<UrlResult[]> {
const headers = { Referer: `${url.origin}/`, Origin: url.origin };
const html = await this.fetcher.text(ctx, url, { headers });
const data = await this.fetcher.json(ctx, new URL(`/ajax/stream?filecode=${url.pathname.split('/').at(-1)}`, url), { headers }) as StreamUpApiData;
const playlistUrl = new URL(data.streaming_url);
const $ = cheerio.load(html);
const title = $('title').text().trim();
return [
{
url: playlistUrl,
format: Format.hls,
label: this.label,
ttl: this.ttl,
meta: {
...meta,
height: meta.height ?? await guessHeightFromPlaylist(ctx, this.fetcher, playlistUrl),
title,
},
},
];
}
}

View file

@ -1,7 +1,10 @@
import bytes from 'bytes'; import bytes from 'bytes';
import * as cheerio from 'cheerio'; import * as cheerio from 'cheerio';
import { Context, Format, InternalUrlResult, Meta } from '../types'; import { Context, Format, Meta, UrlResult } from '../types';
import { buildMediaFlowProxyExtractorRedirectUrl, supportsMediaFlowProxy } from '../utils'; import {
buildMediaFlowProxyExtractorRedirectUrl,
supportsMediaFlowProxy,
} from '../utils';
import { Extractor } from './Extractor'; import { Extractor } from './Extractor';
export class Streamtape extends Extractor { export class Streamtape extends Extractor {
@ -42,7 +45,7 @@ export class Streamtape extends Extractor {
return new URL(url.href.replace('/e/', '/v/')); return new URL(url.href.replace('/e/', '/v/'));
} }
protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<InternalUrlResult[]> { protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<UrlResult[]> {
const headers = { Referer: meta.referer ?? url.href }; const headers = { Referer: meta.referer ?? url.href };
// Only needed to properly find non-existing files via 404 response // Only needed to properly find non-existing files via 404 response
@ -59,6 +62,8 @@ export class Streamtape extends Extractor {
{ {
url: buildMediaFlowProxyExtractorRedirectUrl(ctx, 'Streamtape', url, headers), url: buildMediaFlowProxyExtractorRedirectUrl(ctx, 'Streamtape', url, headers),
format: Format.mp4, format: Format.mp4,
label: this.label,
ttl: this.ttl,
meta: { meta: {
...meta, ...meta,
title, title,

View file

@ -1,7 +1,7 @@
import bytes from 'bytes'; import bytes from 'bytes';
import * as cheerio from 'cheerio'; import * as cheerio from 'cheerio';
import { NotFoundError } from '../error'; import { NotFoundError } from '../error';
import { Context, Format, InternalUrlResult, Meta } from '../types'; import { Context, Format, Meta, UrlResult } from '../types';
import { extractUrlFromPacked, guessHeightFromPlaylist } from '../utils'; import { extractUrlFromPacked, guessHeightFromPlaylist } from '../utils';
import { Extractor } from './Extractor'; import { Extractor } from './Extractor';
@ -20,7 +20,7 @@ export class SuperVideo extends Extractor {
return new URL(url.href.replace('/e/', '/').replace('/k/', '/').replace('/embed-', '/')); return new URL(url.href.replace('/e/', '/').replace('/k/', '/').replace('/embed-', '/'));
} }
protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<InternalUrlResult[]> { protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<UrlResult[]> {
const headers = { Referer: meta.referer ?? url.href }; const headers = { Referer: meta.referer ?? url.href };
const html = await this.fetcher.text(ctx, url, { headers }); const html = await this.fetcher.text(ctx, url, { headers });
@ -33,29 +33,29 @@ export class SuperVideo extends Extractor {
throw new NotFoundError(); throw new NotFoundError();
} }
const playlistUrl = extractUrlFromPacked(html, [/sources:\[{file:"(.*?)"/]); const m3u8Url = extractUrlFromPacked(html, [/sources:\[{file:"(.*?)"/]);
const playlistHeaders = { Referer: 'https://supervideo.cc/' };
const heightAndSizeMatch = html.match(/\d{3,}x(\d{3,}), ([\d.]+ ?[GM]B)/); const heightAndSizeMatch = html.match(/\d{3,}x(\d{3,}), ([\d.]+ ?[GM]B)/);
const size = heightAndSizeMatch ? bytes.parse(heightAndSizeMatch[2] as string) as number : undefined; const size = heightAndSizeMatch ? bytes.parse(heightAndSizeMatch[2] as string) as number : undefined;
const height = heightAndSizeMatch const height = heightAndSizeMatch
? parseInt(heightAndSizeMatch[1] as string) ? parseInt(heightAndSizeMatch[1] as string)
: meta.height ?? await guessHeightFromPlaylist(ctx, this.fetcher, playlistUrl, { headers: playlistHeaders }); : meta.height ?? await guessHeightFromPlaylist(ctx, this.fetcher, m3u8Url, { headers: { Referer: url.href } });
const $ = cheerio.load(html); const $ = cheerio.load(html);
const title = $('.download__title').text().trim(); const title = $('.download__title').text().trim();
return [ return [
{ {
url: playlistUrl, url: m3u8Url,
format: Format.hls, format: Format.hls,
label: this.label,
ttl: this.ttl,
meta: { meta: {
...meta, ...meta,
title, title,
...(size && { bytes: size }), ...(size && { bytes: size }),
...(height && { height }), ...(height && { height }),
}, },
requestHeaders: playlistHeaders,
}, },
]; ];
}; };

View file

@ -1,6 +1,6 @@
import * as cheerio from 'cheerio'; import * as cheerio from 'cheerio';
import { NotFoundError } from '../error'; import { NotFoundError } from '../error';
import { Context, Format, InternalUrlResult, Meta } from '../types'; import { Context, Format, Meta, UrlResult } from '../types';
import { buildMediaFlowProxyExtractorRedirectUrl, supportsMediaFlowProxy } from '../utils'; import { buildMediaFlowProxyExtractorRedirectUrl, supportsMediaFlowProxy } from '../utils';
import { Extractor } from './Extractor'; import { Extractor } from './Extractor';
@ -19,7 +19,7 @@ export class Uqload extends Extractor {
return new URL(url.href.replace('/embed-', '/')); return new URL(url.href.replace('/embed-', '/'));
} }
protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<InternalUrlResult[]> { protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<UrlResult[]> {
const html = await this.fetcher.text(ctx, url); const html = await this.fetcher.text(ctx, url);
if (/File Not Found/.test(html)) { if (/File Not Found/.test(html)) {
@ -35,6 +35,8 @@ export class Uqload extends Extractor {
{ {
url: buildMediaFlowProxyExtractorRedirectUrl(ctx, 'Uqload', url), url: buildMediaFlowProxyExtractorRedirectUrl(ctx, 'Uqload', url),
format: Format.mp4, format: Format.mp4,
label: this.label,
ttl: this.ttl,
meta: { meta: {
...meta, ...meta,
title, title,

View file

@ -1,20 +0,0 @@
import winston from 'winston';
import { createTestContext } from '../test';
import { FetcherMock } from '../utils';
import { ExtractorRegistry } from './ExtractorRegistry';
import { VidSrc } from './VidSrc';
const logger = winston.createLogger({ transports: [new winston.transports.Console({ level: 'nope' })] });
const extractorRegistry = new ExtractorRegistry(logger, [new VidSrc(new FetcherMock(`${__dirname}/__fixtures__/VidSrc`), ['vidsrc-embed.ru'])]);
const ctx = createTestContext();
describe('VidSrc', () => {
test('Full Metal Jacket', async () => {
expect(await extractorRegistry.handle(ctx, new URL('https://vidsrc-embed.ru/embed/movie/tt0093058'))).toMatchSnapshot();
});
test('Black Mirror', async () => {
expect(await extractorRegistry.handle(ctx, new URL('https://vidsrc-embed.ru/embed/tv/tt2085059/4-2'))).toMatchSnapshot();
});
});

View file

@ -1,86 +0,0 @@
import * as cheerio from 'cheerio';
import { BlockedError, TooManyRequestsError } from '../error';
import { Context, Format, InternalUrlResult, Meta, NonEmptyArray } from '../types';
import { Fetcher, guessHeightFromPlaylist } from '../utils';
import { Extractor } from './Extractor';
export class VidSrc extends Extractor {
public readonly id = 'vidsrc';
public readonly label = 'VidSrc';
public override readonly ttl: number = 10800000; // 3h
private readonly domains: NonEmptyArray<string>;
public constructor(fetcher: Fetcher, domains: NonEmptyArray<string>) {
super(fetcher);
this.domains = domains;
}
public supports(_ctx: Context, url: URL): boolean {
return null !== url.host.match(/vidsrc|vsrc/);
}
protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<InternalUrlResult[]> {
// While this is a crappy thing to do, they seem to be blocking overly strict IMO
const randomIp = `${Math.floor(Math.random() * 223) + 1}.${Math.floor(Math.random() * 256)}.${Math.floor(Math.random() * 256)}.${Math.floor(Math.random() * 256)}`;
const newCtx = { ...ctx, ip: randomIp };
return this.extractUsingRandomDomain(newCtx, url, meta, [...this.domains]);
};
private async extractUsingRandomDomain(ctx: Context, url: URL, meta: Meta, domains: string[]): Promise<InternalUrlResult[]> {
const domainIndex = Math.floor(Math.random() * domains.length);
const [domain] = domains.splice(domainIndex, 1) as [string];
const newUrl = new URL(url);
newUrl.hostname = domain;
let html: string;
try {
html = await this.fetcher.text(ctx, newUrl, { queueLimit: 1 });
} catch (error) {
/* istanbul ignore next */
if (domains.length && (error instanceof TooManyRequestsError || error instanceof BlockedError)) {
return this.extractUsingRandomDomain(ctx, url, meta, domains);
}
/* istanbul ignore next */
throw error;
}
const $ = cheerio.load(html.replace('<!--', '').replace('-->', '')); // server HTML is commented-out
const iframeUrl = new URL(($('#player_iframe').attr('src') as string).replace(/^\/\//, 'https://'));
const title = $('title').text().trim();
return Promise.all(
$('.server')
.map((_i, el) => ({ serverName: $(el).text(), dataHash: $(el).data('hash') }))
.toArray()
.filter(({ serverName }) => serverName === 'CloudStream Pro')
.map(async ({ serverName, dataHash }) => {
const rcpUrl = new URL(`/rcp/${dataHash}`, iframeUrl.origin);
const iframeHtml = await this.fetcher.text(ctx, rcpUrl, { headers: { Referer: newUrl.origin } });
const srcMatch = iframeHtml.match(`src:\\s?'(.*)'`) as string[];
const playerHtml = await this.fetcher.text(ctx, new URL(srcMatch[1] as string, iframeUrl.origin), { headers: { Referer: rcpUrl.href } });
const fileMatch = playerHtml.match(`(https:\\/\\/.*?{v\\d}.*?) or`) as string[];
const m3u8Url = new URL((fileMatch[1] as string).replace(/{v\d}/, iframeUrl.host));
return {
url: m3u8Url,
format: Format.hls,
label: serverName,
meta: {
...meta,
height: await guessHeightFromPlaylist(ctx, this.fetcher, m3u8Url, { headers: { Referer: iframeUrl.href } }),
title,
},
};
}),
);
}
}

View file

@ -1,5 +1,5 @@
import * as cheerio from 'cheerio'; import * as cheerio from 'cheerio';
import { Context, Format, InternalUrlResult, Meta } from '../types'; import { Context, Format, Meta, UrlResult } from '../types';
import { extractUrlFromPacked, guessHeightFromPlaylist } from '../utils'; import { extractUrlFromPacked, guessHeightFromPlaylist } from '../utils';
import { Extractor } from './Extractor'; import { Extractor } from './Extractor';
@ -18,7 +18,7 @@ export class Vidora extends Extractor {
return new URL(url.href.replace('/embed/', '/')); return new URL(url.href.replace('/embed/', '/'));
} }
protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<InternalUrlResult[]> { protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<UrlResult[]> {
const html = await this.fetcher.text(ctx, url); const html = await this.fetcher.text(ctx, url);
const $ = cheerio.load(html); const $ = cheerio.load(html);
@ -31,6 +31,8 @@ export class Vidora extends Extractor {
{ {
url: m3u8Url, url: m3u8Url,
format: Format.hls, format: Format.hls,
label: this.label,
ttl: this.ttl,
meta: { meta: {
...meta, ...meta,
height: meta.height ?? await guessHeightFromPlaylist(ctx, this.fetcher, m3u8Url, { headers }), height: meta.height ?? await guessHeightFromPlaylist(ctx, this.fetcher, m3u8Url, { headers }),

View file

@ -7,7 +7,7 @@ import { VixSrc } from './VixSrc';
const logger = winston.createLogger({ transports: [new winston.transports.Console({ level: 'nope' })] }); const logger = winston.createLogger({ transports: [new winston.transports.Console({ level: 'nope' })] });
const extractorRegistry = new ExtractorRegistry(logger, [new VixSrc(new FetcherMock(`${__dirname}/__fixtures__/VixSrc`))]); const extractorRegistry = new ExtractorRegistry(logger, [new VixSrc(new FetcherMock(`${__dirname}/__fixtures__/VixSrc`))]);
const ctx = createTestContext(); const ctx = createTestContext({ de: 'on', en: 'on', it: 'on' });
describe('VixSrc', () => { describe('VixSrc', () => {
test('Full Metal Jacket', async () => { test('Full Metal Jacket', async () => {
@ -18,10 +18,6 @@ describe('VixSrc', () => {
expect(await extractorRegistry.handle(ctx, new URL('https://vixsrc.to/tv/42009/4/2'))).toMatchSnapshot(); expect(await extractorRegistry.handle(ctx, new URL('https://vixsrc.to/tv/42009/4/2'))).toMatchSnapshot();
}); });
test('Rental Family', async () => {
expect(await extractorRegistry.handle(ctx, new URL('https://vixsrc.to/movie/1208348'))).toMatchSnapshot();
});
test('Black Mirror is excluded if no matching language was found', async () => { test('Black Mirror is excluded if no matching language was found', async () => {
const ctx = createTestContext({ de: 'on' }); const ctx = createTestContext({ de: 'on' });

View file

@ -1,5 +1,9 @@
import { Context, CountryCode, Format, InternalUrlResult, Meta } from '../types'; import { Context, CountryCode, Format, Meta, UrlResult } from '../types';
import { CustomRequestConfig, guessHeightFromPlaylist, hasMultiEnabled, iso639FromCountryCode } from '../utils'; import {
CustomRequestConfig,
guessHeightFromPlaylist, hasMultiEnabled,
iso639FromCountryCode,
} from '../utils';
import { Extractor } from './Extractor'; import { Extractor } from './Extractor';
export class VixSrc extends Extractor { export class VixSrc extends Extractor {
@ -13,7 +17,7 @@ export class VixSrc extends Extractor {
return null !== url.host.match(/vixsrc/); return null !== url.host.match(/vixsrc/);
} }
protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<InternalUrlResult[]> { protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<UrlResult[]> {
const headers = { Referer: url.href }; const headers = { Referer: url.href };
const html = await this.fetcher.text(ctx, url); const html = await this.fetcher.text(ctx, url);
@ -28,7 +32,7 @@ export class VixSrc extends Extractor {
playlistUrl.searchParams.append('expires', expiresMatch[1] as string); playlistUrl.searchParams.append('expires', expiresMatch[1] as string);
playlistUrl.searchParams.append('h', '1'); playlistUrl.searchParams.append('h', '1');
const countryCodes = meta.countryCodes ?? [CountryCode.multi, ...(await this.determineCountryCodesFromPlaylist(ctx, playlistUrl, { headers }))]; const countryCodes = meta.countryCodes ?? await this.determineCountryCodesFromPlaylist(ctx, playlistUrl, { headers });
if (!hasMultiEnabled(ctx.config) && !countryCodes.some(countryCode => countryCode in ctx.config)) { if (!hasMultiEnabled(ctx.config) && !countryCodes.some(countryCode => countryCode in ctx.config)) {
return []; return [];
@ -38,6 +42,8 @@ export class VixSrc extends Extractor {
{ {
url: playlistUrl, url: playlistUrl,
format: Format.hls, format: Format.hls,
label: this.label,
ttl: this.ttl,
meta: { meta: {
...meta, ...meta,
countryCodes, countryCodes,
@ -50,7 +56,7 @@ export class VixSrc extends Extractor {
private async determineCountryCodesFromPlaylist(ctx: Context, playlistUrl: URL, init?: CustomRequestConfig): Promise<CountryCode[]> { private async determineCountryCodesFromPlaylist(ctx: Context, playlistUrl: URL, init?: CustomRequestConfig): Promise<CountryCode[]> {
const playlist = await this.fetcher.text(ctx, playlistUrl, init); const playlist = await this.fetcher.text(ctx, playlistUrl, init);
const countryCodes: CountryCode[] = []; const countryCodes: CountryCode[] = [CountryCode.it];
(Object.keys(CountryCode) as CountryCode[]).forEach((countryCode) => { (Object.keys(CountryCode) as CountryCode[]).forEach((countryCode) => {
const iso639 = iso639FromCountryCode(countryCode); const iso639 = iso639FromCountryCode(countryCode);

View file

@ -1,7 +1,7 @@
import bytes from 'bytes'; import bytes from 'bytes';
import * as cheerio from 'cheerio'; import * as cheerio from 'cheerio';
import { NotFoundError } from '../error'; import { NotFoundError } from '../error';
import { Context, Format, InternalUrlResult, Meta } from '../types'; import { Context, Format, Meta, UrlResult } from '../types';
import { import {
buildMediaFlowProxyExtractorStreamUrl, guessHeightFromPlaylist, buildMediaFlowProxyExtractorStreamUrl, guessHeightFromPlaylist,
supportsMediaFlowProxy, supportsMediaFlowProxy,
@ -74,9 +74,7 @@ export class Voe extends Extractor {
'kennethofficialitem.com', 'kennethofficialitem.com',
'kinoger.ru', 'kinoger.ru',
'kristiesoundsimply.com', 'kristiesoundsimply.com',
'lancewhosedifficult.com',
'launchreliantcleaverriver.com', 'launchreliantcleaverriver.com',
'lauradaydo.com',
'lisatrialidea.com', 'lisatrialidea.com',
'loriwithinfamily.com', 'loriwithinfamily.com',
'lukecomparetwo.com', 'lukecomparetwo.com',
@ -104,7 +102,6 @@ export class Voe extends Extractor {
'sethniceletter.com', 'sethniceletter.com',
'shannonpersonalcost.com', 'shannonpersonalcost.com',
'simpulumlamerop.com', 'simpulumlamerop.com',
'smoki.cc',
'stevenimaginelittle.com', 'stevenimaginelittle.com',
'strawberriesporail.com', 'strawberriesporail.com',
'telyn610zoanthropy.com', 'telyn610zoanthropy.com',
@ -126,7 +123,7 @@ export class Voe extends Extractor {
return new URL(`/${url.pathname.replace(/\/+$/, '').split('/').at(-1)}`, url); return new URL(`/${url.pathname.replace(/\/+$/, '').split('/').at(-1)}`, url);
} }
protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<InternalUrlResult[]> { protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<UrlResult[]> {
const headers = { Referer: meta.referer ?? url.href }; const headers = { Referer: meta.referer ?? url.href };
let html: string; let html: string;
@ -168,6 +165,8 @@ export class Voe extends Extractor {
{ {
url: playlistUrl, url: playlistUrl,
format: Format.hls, format: Format.hls,
label: this.label,
ttl: this.ttl,
meta: { meta: {
...meta, ...meta,
height, height,

View file

@ -1,4 +1,4 @@
import { Context, Format, InternalUrlResult, Meta } from '../types'; import { Context, Format, Meta, UrlResult } from '../types';
import { Extractor } from './Extractor'; import { Extractor } from './Extractor';
export class YouTube extends Extractor { export class YouTube extends Extractor {
@ -12,7 +12,7 @@ export class YouTube extends Extractor {
return null !== url.host.match(/youtube/) && url.searchParams.has('v'); return null !== url.host.match(/youtube/) && url.searchParams.has('v');
} }
protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<InternalUrlResult[]> { protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<UrlResult[]> {
const headers = { Referer: meta.referer ?? url.href }; const headers = { Referer: meta.referer ?? url.href };
const html = await this.fetcher.text(ctx, url, { headers }); const html = await this.fetcher.text(ctx, url, { headers });
@ -24,6 +24,8 @@ export class YouTube extends Extractor {
url, url,
format: Format.unknown, format: Format.unknown,
ytId: url.searchParams.get('v') as string, ytId: url.searchParams.get('v') as string,
label: this.label,
ttl: this.ttl,
meta: { meta: {
...meta, ...meta,
title: titleMatch[1] as string, title: titleMatch[1] as string,

View file

@ -0,0 +1 @@
{"server":"nginx","date":"Sun, 08 Jun 2025 19:20:59 GMT","content-type":"video/mp4","content-length":791702409,"last-modified":"Wed, 03 Apr 2024 09:53:31 GMT","connection":"keep-alive","etag":"660d271b-2f306b89","access-control-allow-origin":"*","accept-ranges":"bytes"}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1 @@
<!doctype html><html lang="en"><head> <meta charset="utf-8"> <title>Video not found | DoodStream</title> <link rel="preconnect" href="//i.doodcdn.io"><link rel="preconnect" href="//cdnjs.cloudflare.com"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> <link rel="stylesheet" href="//i.doodcdn.io/theme_2/css/bootstrap.min.css"> <link rel="stylesheet" type="text/css" href="//i.doodcdn.io/theme_2/css/style.css" /></head><body> <style type="text/css"> .not_found img {height:250px !important;} @media (max-width: 768px){.not_found h1{font-size:1.8rem;}.not_found img {height:200px !important;margin: 0 auto 15px;}} @media (max-width: 480px){.not_found h1{font-size:1.4rem;}.not_found img {height:120px !important;margin: 0 auto 15px;}.not_found p{margin-top: -5px;}} </style> <div class="container pt-5 not_found"> <div class="row"> <div class="col-md-12 pt-2 text-center"> <img src="//i.doodcdn.io/img/no_video_3.svg"> <h1>Not Found</h1> <p>video you are looking for is not found.</p> </div> </div> </div><script data-cfasync="false" src="//d1f05vr3sjsuy7.cloudfront.net/?srvfd=908056"></script><script data-cfasync="false" async type="text/javascript" src="//faqirsgoliard.top/gHzOaAdOhbZ/71405"></script><script data-cfasync="false" async type="text/javascript" src="//faqirsgoliard.top/r67c0fc81985e5/70849"></script><script type="text/javascript" data-cfasync="false">/*<![CDATA[/* */(function(){var g=window,r="ca0967284e67bc53cb5b626985619403",w=[["siteId",317+185*82*507-3600486],["minBid",0],["popundersPerIP","0"],["delayBetween",300],["default","https://strettechoco.com/iYa7dlULceKw/27615"],["defaultPerDay",0],["topmostLayer","never"]],n=["d3d3LmJsb2NrYWRzbm90LmNvbS9iYWphLm1pbi5jc3M=","ZG5oZmk1bm4yZHQ2Ny5jbG91ZGZyb250Lm5ldC9RVHd0eC91YWxnZWJyYS5taW4uanM=","d3d3LmJibHZwbGd1b21hLmNvbS9mYWphLm1pbi5jc3M=","d3d3LndqZ3BzcGt4empiZGd1LmNvbS9NTmlIWS9rYWxnZWJyYS5taW4uanM="],f=-1,v,q,h=function(){clearTimeout(q);f++;if(n[f]&&!(1766620801000<(new Date).getTime()&&1<f)){v=g.document.createElement("script");v.type="text/javascript";v.async=!0;var o=g.document.getElementsByTagName("script")[0];v.src="https://"+atob(n[f]);v.crossOrigin="anonymous";v.onerror=h;v.onload=function(){clearTimeout(q);g[r.slice(0,16)+r.slice(0,16)]||h()};q=setTimeout(h,5E3);o.parentNode.insertBefore(v,o)}};if(!g[r]){try{Object.freeze(g[r]=w)}catch(e){}h()}})();/*]]>/* */</script></body></html>

View file

@ -1,2 +1 @@
<!doctype html><html lang="en"><head> <meta charset="utf-8"> <title>Video not found | DoodStream</title> <link rel="preconnect" href="//i.doodcdn.io"><link rel="preconnect" href="//cdnjs.cloudflare.com"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> <link rel="stylesheet" href="//i.doodcdn.io/theme_2/css/bootstrap.min.css"> <link rel="stylesheet" type="text/css" href="//i.doodcdn.io/theme_2/css/style.css" /></head><body> <style type="text/css"> .not_found img {height:250px !important;} @media (max-width: 768px){.not_found h1{font-size:1.8rem;}.not_found img {height:200px !important;margin: 0 auto 15px;}} @media (max-width: 480px){.not_found h1{font-size:1.4rem;}.not_found img {height:120px !important;margin: 0 auto 15px;}.not_found p{margin-top: -5px;}} </style> <div class="container pt-5 not_found"> <div class="row"> <div class="col-md-12 pt-2 text-center"> <img src="//i.doodcdn.io/img/no_video_3.svg"> <h1>Not Found</h1> <p>video you are looking for is not found.</p> </div> </div> </div><script data-cfasync="false" src="//d1f05vr3sjsuy7.cloudfront.net/?srvfd=908056"></script><script data-cfasync="false" async type="text/javascript" src="//faqirsgoliard.top/gHzOaAdOhbZ/71405"></script><script data-cfasync="false" async type="text/javascript" src="//faqirsgoliard.top/r67c0fc81985e5/70849"></script><script type="text/javascript" data-cfasync="false">/*<![CDATA[/* */(function(){var g=window,r="ca0967284e67bc53cb5b626985619403",w=[["siteId",317+185*82*507-3600486],["minBid",0],["popundersPerIP","0"],["delayBetween",300],["default","https://strettechoco.com/iYa7dlULceKw/27615"],["defaultPerDay",0],["topmostLayer","never"]],n=["d3d3LmJsb2NrYWRzbm90LmNvbS9iYWphLm1pbi5jc3M=","ZG5oZmk1bm4yZHQ2Ny5jbG91ZGZyb250Lm5ldC9RVHd0eC91YWxnZWJyYS5taW4uanM=","d3d3LmJibHZwbGd1b21hLmNvbS9mYWphLm1pbi5jc3M=","d3d3LndqZ3BzcGt4empiZGd1LmNvbS9NTmlIWS9rYWxnZWJyYS5taW4uanM="],f=-1,v,q,h=function(){clearTimeout(q);f++;if(n[f]&&!(1766620801000<(new Date).getTime()&&1<f)){v=g.document.createElement("script");v.type="text/javascript";v.async=!0;var o=g.document.getElementsByTagName("script")[0];v.src="https://"+atob(n[f]);v.crossOrigin="anonymous";v.onerror=h;v.onload=function(){clearTimeout(q);g[r.slice(0,16)+r.slice(0,16)]||h()};q=setTimeout(h,5E3);o.parentNode.insertBefore(v,o)}};if(!g[r]){try{Object.freeze(g[r]=w)}catch(e){}h()}})();/*]]>/* */</script><script defer src="https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" integrity="sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==" data-cf-beacon='{"version":"2024.11.0","token":"1c76230f8ab248eab0b0f2bf7c205c51","server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}' crossorigin="anonymous"></script> <!doctype html><html lang="en"><head> <meta charset="utf-8"> <title>Video not found | DoodStream</title> <link rel="preconnect" href="//i.doodcdn.io"><link rel="preconnect" href="//cdnjs.cloudflare.com"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> <link rel="stylesheet" href="//i.doodcdn.io/theme_2/css/bootstrap.min.css"> <link rel="stylesheet" type="text/css" href="//i.doodcdn.io/theme_2/css/style.css" /></head><body> <style type="text/css"> .not_found img {height:250px !important;} @media (max-width: 768px){.not_found h1{font-size:1.8rem;}.not_found img {height:200px !important;margin: 0 auto 15px;}} @media (max-width: 480px){.not_found h1{font-size:1.4rem;}.not_found img {height:120px !important;margin: 0 auto 15px;}.not_found p{margin-top: -5px;}} </style> <div class="container pt-5 not_found"> <div class="row"> <div class="col-md-12 pt-2 text-center"> <img src="//i.doodcdn.io/img/no_video_3.svg"> <h1>Not Found</h1> <p>video you are looking for is not found.</p> </div> </div> </div><script data-cfasync="false" src="//d1f05vr3sjsuy7.cloudfront.net/?srvfd=908056"></script><script data-cfasync="false" async type="text/javascript" src="//faqirsgoliard.top/gHzOaAdOhbZ/71405"></script><script data-cfasync="false" async type="text/javascript" src="//faqirsgoliard.top/r67c0fc81985e5/70849"></script><script type="text/javascript" data-cfasync="false">/*<![CDATA[/* */(function(){var g=window,r="ca0967284e67bc53cb5b626985619403",w=[["siteId",317+185*82*507-3600486],["minBid",0],["popundersPerIP","0"],["delayBetween",300],["default","https://strettechoco.com/iYa7dlULceKw/27615"],["defaultPerDay",0],["topmostLayer","never"]],n=["d3d3LmJsb2NrYWRzbm90LmNvbS9iYWphLm1pbi5jc3M=","ZG5oZmk1bm4yZHQ2Ny5jbG91ZGZyb250Lm5ldC9RVHd0eC91YWxnZWJyYS5taW4uanM=","d3d3LmJibHZwbGd1b21hLmNvbS9mYWphLm1pbi5jc3M=","d3d3LndqZ3BzcGt4empiZGd1LmNvbS9NTmlIWS9rYWxnZWJyYS5taW4uanM="],f=-1,v,q,h=function(){clearTimeout(q);f++;if(n[f]&&!(1766620801000<(new Date).getTime()&&1<f)){v=g.document.createElement("script");v.type="text/javascript";v.async=!0;var o=g.document.getElementsByTagName("script")[0];v.src="https://"+atob(n[f]);v.crossOrigin="anonymous";v.onerror=h;v.onload=function(){clearTimeout(q);g[r.slice(0,16)+r.slice(0,16)]||h()};q=setTimeout(h,5E3);o.parentNode.insertBefore(v,o)}};if(!g[r]){try{Object.freeze(g[r]=w)}catch(e){}h()}})();/*]]>/* */</script></body></html>
</body></html>

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1 @@
<!doctype html><html lang="en"><head> <meta charset="utf-8"> <title>Video not found | DoodStream</title> <link rel="preconnect" href="//i.doodcdn.io"><link rel="preconnect" href="//cdnjs.cloudflare.com"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> <link rel="stylesheet" href="//i.doodcdn.io/theme_2/css/bootstrap.min.css"> <link rel="stylesheet" type="text/css" href="//i.doodcdn.io/theme_2/css/style.css" /></head><body> <style type="text/css"> .not_found img {height:250px !important;} @media (max-width: 768px){.not_found h1{font-size:1.8rem;}.not_found img {height:200px !important;margin: 0 auto 15px;}} @media (max-width: 480px){.not_found h1{font-size:1.4rem;}.not_found img {height:120px !important;margin: 0 auto 15px;}.not_found p{margin-top: -5px;}} </style> <div class="container pt-5 not_found"> <div class="row"> <div class="col-md-12 pt-2 text-center"> <img src="//i.doodcdn.io/img/no_video_3.svg"> <h1>Not Found</h1> <p>video you are looking for is not found.</p> </div> </div> </div><script data-cfasync="false" src="//d1f05vr3sjsuy7.cloudfront.net/?srvfd=908056"></script><script data-cfasync="false" async type="text/javascript" src="//faqirsgoliard.top/gHzOaAdOhbZ/71405"></script><script data-cfasync="false" async type="text/javascript" src="//faqirsgoliard.top/r67c0fc81985e5/70849"></script><script type="text/javascript" data-cfasync="false">/*<![CDATA[/* */(function(){var g=window,r="ca0967284e67bc53cb5b626985619403",w=[["siteId",317+185*82*507-3600486],["minBid",0],["popundersPerIP","0"],["delayBetween",300],["default","https://strettechoco.com/iYa7dlULceKw/27615"],["defaultPerDay",0],["topmostLayer","never"]],n=["d3d3LmJsb2NrYWRzbm90LmNvbS9iYWphLm1pbi5jc3M=","ZG5oZmk1bm4yZHQ2Ny5jbG91ZGZyb250Lm5ldC9RVHd0eC91YWxnZWJyYS5taW4uanM=","d3d3LmJibHZwbGd1b21hLmNvbS9mYWphLm1pbi5jc3M=","d3d3LndqZ3BzcGt4empiZGd1LmNvbS9NTmlIWS9rYWxnZWJyYS5taW4uanM="],f=-1,v,q,h=function(){clearTimeout(q);f++;if(n[f]&&!(1766620801000<(new Date).getTime()&&1<f)){v=g.document.createElement("script");v.type="text/javascript";v.async=!0;var o=g.document.getElementsByTagName("script")[0];v.src="https://"+atob(n[f]);v.crossOrigin="anonymous";v.onerror=h;v.onload=function(){clearTimeout(q);g[r.slice(0,16)+r.slice(0,16)]||h()};q=setTimeout(h,5E3);o.parentNode.insertBefore(v,o)}};if(!g[r]){try{Object.freeze(g[r]=w)}catch(e){}h()}})();/*]]>/* */</script></body></html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1 @@
https://ee317r.cloudatacdn.com/u5kj63yvxddlsdgge7qremqqka27irwiupc4k7o5cikbhjliz6xwv2xr53uq/lco4d3heif~

View file

@ -0,0 +1 @@
https://wec6bnh7rx7rw11bv9e9vslw4rud8nam.5f1ebd98099ce35faeeddb30c1752191.r2.cloudflarestorage.com/icxxqqdsfdc4?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ab085b515b950aae0a86cae59456cacd%2F20250714%2Fauto%2Fs3%2Faws4_request&X-Amz-Date=20250714T154400Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=845ebfa5feedd840027e431f31e013513dd4c4f74364b4e75a2c8ddb213bd97a

View file

@ -0,0 +1 @@
https://aa360cc.cloudatacdn.com/u5kjv4jxytd3sdgge5uogji5dg4huat2pxrm2qibdbm5rlyusvl46iz3u3ta/1f4isxg0tw~

View file

@ -1,350 +0,0 @@
<script id="aclib" type="text/javascript" src="//acscdn.com/script/aclib.js"></script>
<script type="text/javascript">
aclib.runPop({
zoneId: '10553222',
});
</script>
<!--<script data-cfasync="false" src="//dl4d3y1ajyv3q.cloudfront.net/?aydld=1220853"></script>-->
<script>
document.addEventListener("DOMContentLoaded", function() {
history.pushState(null, null, location.href);
window.onpopstate = function () {
history.go(1);
window.location.href = 'https://push-me-once.com/go/1272663';
};
});Object.defineProperty(document,atob('cmVmZXJyZXI='),{get:function(){return atob('aHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS8=')}});
</script>
<html>
<head>
<title>Crayon Shinchan Action Kamen vs Demon (1993) 1080p BluRay REMUX AVC [Hindi DD 2.0 + Japanese FLAC 2.0] (PitiPati-Ionicboy) (4kHDHub.com).mkv</title>
<meta charset="utf-8">
<meta name="referrer" content="no-referrer"/>
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css" integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-KyZXEAg3QhqLMpG8r+8fhAXLRk2vvoC2f3B09zVXn8CA5QIVfZOJ3BCsw2P0p/We" crossorigin="anonymous">
<link href="https://fonts.googleapis.com/css?family=Nunito:200,200i,300,300i,400,400i,600,600i,700,700i,800,800i,900,900i" rel="stylesheet">
<script src="https://unpkg.com/sweetalert/dist/sweetalert.min.js"></script>
<meta name=viewport content="width=device-width, initial-scale=1">
<meta name="robots" content="noindex, nofollow">
<meta name="googlebot" content="noindex,nofollow">
</head>
<style>
.icon{width:48px;height:48px}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:#f8f9fc;border-bottom:1px solid #e3e6f0}.bg-primary{background-color:#4e73df!important}body{font-family:"Nunito",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"!important;font-weight:14px}.font-weight-bold{font-weight:700!important}.text-primary{color:#007bff!important;padding:.75rem 1.25rem;background-color:#f8f9fc;border-bottom:1px solid #e3e6f0;position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;border:1px solid #e3e6f0;border-radius:.35rem;line-break:auto;word-break:break-all;white-space:normal;text-overflow:ellipsis;overflow:hidden}.font-weight-bold{font-weight:700!important}.m-0{margin:auto!important;width:100%}h4,.h4{font-size:1.4rem}.card-body{flex:1 1 auto;padding:1.25rem}.nav-tabs{border-bottom:1px solid #dddfeb}.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:#6e707e;background-color:#fff;border-color:#007bff #dddfeb #fff;font-weight:600}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.35rem;border-top-right-radius:.35rem}.nav-link{display:block;padding:.5rem 1rem}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.35rem;border-top-right-radius:.35rem}.nav-link{display:block;padding:.5rem 1rem}a{color:#4e73df;text-decoration:none;background-color:transparent}.footer{width:100%;height:auto;position:absolute;right:0;padding:15px 50px 0 15px;font-size:15px;color:#000;background-color:#F2F2F2;border-top:0 solid #E6E6E6;font-weight:600;text-align:right}.tab-content{width:90%;height:auto;position:initial;right:0;padding:0;text-align:center}.btn{color:#fff!important;background-color:#007bff!important;border-color:#007bff!important;font-weight:700!important}.btn:hover{color:#fff!important;background-color:#0069d9!important;border-color:#0062cc!important}.btn-success:not(:disabled):not(.disabled):active:focus,.btn-success:not(:disabled):not(.disabled).active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,0.5)}.btn-success:focus,.btn-success.focus{box-shadow:0 0 0 .2rem rgba(38,143,255,0.5)}.btn-lg,.btn-group-lg>.btn{padding:.5rem 1rem;font-size:1.2rem;border-radius:.45rem}.header{width:100%;height:auto;position:relative;right:0;padding:10px 50px 5px 15px;font-size:16px;color:#000;background-color:#F2F2F2;border-top:0 solid #E6E6E6;font-weight:600;text-align:right;margin-top:-25px}.alert-danger{background-color:#e74c3c;border-color:#e74c3c;color:#fff}.alert{padding:15px;margin-bottom:21px;border:1px solid transparent;border-radius:4px}.card{line-break:auto;word-break:break-all;white-space:normal;text-overflow:ellipsis;overflow:hidden}.m-5{margin:auto!important}.swal-button{background-color:#007bff!important}.card-header:first-child{font-weight:600}
.btn-success1 {
color: #fff;
background-color: #28a745;
border-color: #28a745;
display: inline-block;
text-align: center;
font-size: 1rem;
letter-spacing: .4px;
font-family: 'Open Sans',sans-serif!important;
font-weight: 600;
text-decoration:none !important;
vertical-align: middle;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
border: 1px solid transparent;
padding: .375rem .75rem;
line-height: 1.5;
border-radius: .30rem;
transition: color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;
}
.btn-success1:not(:disabled):not(.disabled).active, .btn-success1:not(:disabled):not(.disabled):active, .show>.btn-success1.dropdown-toggle {
color: #fff;
background-color: #1e7e34;
border-color: #1c7430;
}
.btn-success1:hover {
color: #fff;
background-color: #218838;
border-color: #1e7e34;
}
.btn-success1.focus, .btn-success1:focus {
box-shadow: 0 0 0 0.2rem rgb(72 180 97 / 50%);
}
.btn-lg, .btn-group-lg > .btn2 {
padding: .5rem .6rem !important;
font-family: 'Open Sans',sans-serif!important;
letter-spacing: .1px;
border-radius: 0.35rem!important;
}
.ads-btns {
position: relative;
overflow: hidden
}
.ads-btns a.btn2 {
min-width: 40%
}
.ads-btns svg {
fill: #fff;
width: 17px;
position: absolute;
right: 0;
top: 0
}
.ads-btns svg path {
fill: #fff;
stroke: #fff
}
.ads-btns svg:first-child path {
fill: #fff;
stroke: transparent
}
.ads-btns svg:first-child {
right: 20px
}
.downloads-btns-div .btn2 {
margin: 0 3px 12px
}
.btn2 {
font-style: normal;
font-weight: 500;
font-size: 14px;
text-align: center;
text-transform: uppercase;
border: 2px solid #cbfc01;
padding: 10px 15px;
border-radius: 6px;
-webkit-border-radius: 6px;
-moz-border-radius: 6px;
background: #0ebac3;
color: #000;
display: inline-block;
text-decoration: none;
background: #cbfc01
}
.btn-zip {
border-color: #00d0ff;
background: #00d0ff;
color: #000
}
</style>
<body>
<center>
<br/>
<div class="header">
HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
</div>
<div class="container">
<div class="card-body">
<h2>
<div class="main" id="section2">
<div class="card h6">
<div class="card-header text-white bg-primary mb-3">
Crayon Shinchan Action Kamen vs Demon (1993) 1080p BluRay REMUX AVC [Hindi DD 2.0 + Japanese FLAC 2.0] (PitiPati-Ionicboy) (4kHDHub.com).mkv </div>
<div class="card-body">
<ul class="list-group">
<li class="list-group-item d-flex justify-content-between align-items-center">File Size<i id="size">26.59 GB</i></li>
<li class="list-group-item d-flex justify-content-between align-items-center">File Type<i>video/x-matrosk</i></li>
<li class="list-group-item d-flex justify-content-between align-items-center">Share Date<i id="date">13-Aug-2025 04:20:43</i></li>
</ul>
</div>
</div>
</div>
<p class="h3 text-success">Download Link Generated</p>
<div class="input-group mb-3">
<input onclick="copy_link('ilink')" type="text" class="form-control" value="https://hubcloud.foo/drive/bffzqlpqfllfcld" readonly="" id="ilink">
<div class="input-group-prepend">
<span class="input-group-text btn" id="basic-addon2" onclick="copy_link('ilink')">Copy Share Link</span>
</div>
</div>
<!-- Banners -->
<!--<ins data-revive-zoneid="6" data-revive-cphost="43509b58b68d940f8734726dfed6c5c8|1|hubcloud.in" data-revive-id="1d63e790351363d29b61f9cf59b98fad"></ins>-->
<!-- Mobile Banners -->
<!--<ins data-revive-zoneid="7" data-revive-cphost="43509b58b68d940f8734726dfed6c5c8|1|hubcloud.in" data-revive-id="1d63e790351363d29b61f9cf59b98fad"></ins>-->
<!--<script async src="//greenfox.ink/d/asyncjs.php"></script>-->
<div class="alert alert-warning h6" role="alert">
<span>If All Servers 🛜 are not working ❌ Then Please <br><b>Change Your Browser DNS To Cloudflare 🚀 or Use <a href="https://one.one.one.one/" target="_blank">VPN</a></b> <br><a href="https://tinyurl.com/Unblock-Ban-Site" target="_blank">How ? Click Here 👉 to Watch Tutorial 👀</a></span>
</div>
<div class="ad-container"></div>
<div class="ad-containerx"></div>
<a href="https://hub.oreao-cdn.buzz/e35ec4a9a4efb5a154d0d10f9481dafc?token=1774428754" id="fsl" rel="noreferrer nofollow noopener" target="_blank" class="btn btn-success btn-lg h6"><i class="fas fa-file-download fa-lg"></i> Download [FSL Server]</a>
<script>
const fsl = document.getElementById('fsl');
if (fsl) fsl.href += '1' + new Date().getMinutes();
</script>
<a href="https://pixel.hubcdn.fans/?id=5c7253dc7782ea14f891ed9f4c4d7f7ee43284d5e72e6ff401de6f1906046db7713b6d892a040a4b3dd31c9f47eee611a17924f224fc27dd70a921d4e9025c6b7d8b937e11b44e737bd4d5cfd203e361f77a8496dd75025ad8ce3e200905ef3f::853f8b4709e1acb8413ec14270adf205" rel="noreferrer nofollow noopener" target="_blank" class="btn btn-danger btn-lg h6" style="background-color: #dc3545 !important;">
<i class="fas fa-file-download fa-lg"></i> Download [Server : 10Gbps]</a>
<p style="font-size: 12px; padding-bottom:4px !important; margin-bottom:0px !important">
Resume Not Supported in 10Gbps So Use only if you have stable internet (:
</p>
<a href="https://hidden-boat-e87c.hivegic619569.workers.dev/1397962425/53eaea70751039409adff7a1b54377f9aa8e590cd610a6452c849a7cbd2e40af66e667588bada714c63a9cf5360712f266b304e379bfde1d12c46aa2ccedf6eb::6170837909b2ffc3fc7f892bc959bd7e/Crayon Shinchan Action Kamen vs Demon (1993) 1080p BluRay REMUX AVC [Hindi DD 2.0 + Japanese FLAC 2.0] (PitiPati-Ionicboy) (4kHDHub.com).mkv" download="Crayon Shinchan Action Kamen vs Demon (1993) 1080p BluRay REMUX AVC [Hindi DD 2.0 + Japanese FLAC 2.0] (PitiPati-Ionicboy) (4kHDHub.com).mkv" rel="noreferrer nofollow noopener" target="_blank" class="btn btn-success btn-lg h6" style="background-color: #6f42c1 !important;"><i class="fas fa-file-download fa-lg"></i> Download [PDL Server]</a>
<script>
fetch('https://ping.rojgaartakkar.com/bmRFb0YweUVYZ1QvZys0OTRsNk53T2JMRG13QWRxYW5YcWYxYzNHYjhHZz0=');
</script>
<button id="android_launch" class="btn btn-success btn-lg h6 p-2 d-none" style="background: #0d0b15 !important;"><i class="fab fa-android fa-lg" style="color: #63E6BE;"></i> DL/Open with Android App</button>
<script>
function createIntentURL({host, scheme = 'http', type = 'application/octet-stream'}) {
let host_ = host.replace('https://', '');
return `intent://${host_}#Intent;scheme=${scheme};action=android.intent.action.VIEW;type=${type};S.browser_fallback_url=${encodeURIComponent(host)};end`;
}
function isAndroid() {
return /Android/i.test(navigator.userAgent);
}
const android_launch = document.getElementById('android_launch');
if(isAndroid()){
android_launch.classList.remove("d-none");
android_launch.addEventListener('click', ()=>{
var anchor = document.createElement('a');anchor.href= createIntentURL({host: 'https://hub.oreao-cdn.buzz/e35ec4a9a4efb5a154d0d10f9481dafc?token=1774428754',scheme: 'https',type: 'video/x-matrosk',
});anchor.click();
});
};
</script>
</h2>
<div class="alert alert-warning" role="alert">
<p><b>Note : </b>Please Use Download Manager like <a href="https://www.google.com/search?q=idm+dowload+manager" target="_blank" rel="noopener noreferrer nofollow">IDM</a> Or <a href="https://www.google.com/search?q=IDA+dowload+manager" target="_blank" rel="noopener noreferrer nofollow">IDA</a> - To accelerate Your Download Speeds </p>
</div>
<div class="alert alert-primary" role="alert">
<p><b>Note:</b> <i>Refresh this Page & click Download again if you get any error.</i> ! Resume is Supported-Enjoy :)</p>
</div>
<div class="alert alert-info" role="alert">
<p><b>If you're getting any error please report at <a href="https://t.me/hubcloudreport">@Telegram Group</a> with Share Link And Screenshot (:</b></p>
</div>
<hr>
<br>
<div class="tab-content">
<div role="tabpanel" class="tab-pane fade show active" id="link">
<div class="text" align="center">
<ul class="nav nav-tabs" role="tablist">
<li class="nav-item">
<a class="nav-link active" id="button1" role="tab" data-toggle="tab">Copy Link</a>
</li>
</ul>
</div>
<div class="card">
<div class="card-body" id="div1">
<p id="sharelink" onclick="copy_link('div1')">https://hubcloud.foo/drive/bffzqlpqfllfcld</p>
</div>
<button class="btn btn-success btn-sm" id="button1" onclick="copy_link('div1')"><i class="fa fa-copy"></i> Copy Link</button>
<script>
var size = document.getElementById("size").innerHTML
var sharelink = document.getElementById("sharelink").innerHTML
if(size == 'NAN '){swal({
title: "Token Expired!",
text: "Token Link has been expired Please Click on Ok Button To Generate New Link!",
type: "success"
}).then(function() {
window.location = document.location.href = sharelink;
});}
function copy_link(e){let el=e;e = document.getElementById(el).value; if(typeof e == 'undefined'){e=document.getElementById(el).innerText}a=document.createElement("textarea");a.innerHTML=e,document.body.appendChild(a),a.select();document.execCommand("copy");document.body.removeChild(a),swal("Link Copied ! : "+e)}
</script>
</div>
</div>
</div>
<script>
// const L_=["aHR0cHM6Ly90aW55dXJsLmNvbS9hdm9ndXJsNHU="],localStorageKey="pds",hoursLimit=6;let opened=!1;document.addEventListener("click",function(){if(!opened){var a=localStorage.getItem(localStorageKey),l=(new Date).getTime();if(!(a&&l-a<216e5)){opened=!0;let e=L_[Math.floor(Math.random()*L_.length)],t=atob(e),o=document.createElement("a");o.href=t,o.target="_blank",o.rel="noopener noreferrer",a=new MouseEvent("click",{view:window,bubbles:!0,cancelable:!0}),o.dispatchEvent(a),setTimeout(()=>window.focus(),100),localStorage.setItem(localStorageKey,l)}}});
</script>
<br>
<br>
<br>
<br><br>
</div>
Msc
<video autoplay muted playsinline preload="metadata" hidden>
<source src="https://lh3.googleusercontent.com/pw/AP1GczPvuSJv__IfKHEWza111gQ8cf-7_HNU3Mi1oSxHgtoUmS3z22DcgLvk9zNq5_zQGxp3_asDWKLY6cLB-5BYRip6ElCgllgQccSk4-p_7YwGDCQnx0E=m18#t=0,1" type="video/mp4"></video>
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.14.3/dist/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.1.3/dist/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>
<!--2dl-->
<div class="footer">
<p>Made with <svg width="1em" height="1em" viewBox="0 0 16 16" class="bi bi-heart-fill" fill="red" xmlns="http://www.w3.org/2000/svg"> <path fill-rule="evenodd" d="M8 1.314C12.438-3.248 23.534 4.735 8 15-7.534 4.736 3.562-3.248 8 1.314z" /> </svg></p>
</div>
<script defer src="https://static.cloudflareinsights.com/beacon.min.js/v8c78df7c7c0f484497ecbca7046644da1771523124516" integrity="sha512-8DS7rgIrAmghBFwoOTujcf6D9rXvH8xm8JQ1Ja01h9QX8EzXldiszufYa4IFfKdLUKTTrnSFXLDkUEOTrZQ8Qg==" data-cf-beacon='{"version":"2024.11.0","token":"ce57d66a8dc54ff7a63a7a9b493d15a0","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}' crossorigin="anonymous"></script>
</body>
</html><script>
window.sessionStorage.setItem('xl',window.location.href)
function cn(t){let e=window.location.protocol+"//"+window.location.host+t;history.replaceState({path:e},"",e)}cn("/games/");
</script>
<script>
function setCookie(e,t,i){let o=encodeURIComponent(t),$=new Date;$.setTime($.getTime()+36e5*i);let n=`${e}=${o}; expires=${$.toUTCString()}; path=/`;document.cookie=n}setCookie("xyt",1,24);
</script>
<!--<script async src="https://greenanalytics.autos/recaptcha/v4_enc.js"></script>-->
<!--<script>let s__=!1,observer=null;const sc_="a, button";function opst(e){if(!s__)return;e.preventDefault(),e.stopImmediatePropagation();let t=document.createElement("a");t.href=s__,t.target="_blank",t.rel="noopener noreferrer",t.click();let r=document.querySelectorAll(sc_);r.forEach(e=>{e.removeEventListener("click",opst)}),observer.disconnect()}function atchs(){let e=document.querySelectorAll(sc_);e.forEach(e=>{e.addEventListener("click",opst,{once:!0})})}window.addEventListener("message",function(e){try{let t=JSON.parse(e.data);t?.url&&(s__=t.url,atchs(),(observer=new MutationObserver(atchs)).observe(document.body,{childList:!0,subtree:!0}))}catch(r){}},!1);-->
<!--</script>-->
<script data-cfasync="false" type="text/javascript" id="AdsCoreLoader100641" src="https://sads.adsboosters.xyz/60e6df74e82f934b77ca81ccdfccfd40.js"></script>

View file

@ -17,7 +17,7 @@ document.addEventListener("DOMContentLoaded", function() {
</script> </script>
<html> <html>
<head> <head>
<title>Wake.Up.Dead.Man.A.Knives.Out.Mystery.2025.2160p.NF.WEB-DL.DUAL.DDP5.1.Atmos.H.265-4kHDHub.Com.mkv</title> <title>Crayon Shinchan Action Kamen vs Demon (1993) 1080p BluRay REMUX AVC [Hindi DD 2.0 + Japanese FLAC 2.0] (PitiPati-Ionicboy) (4kHDHub.com).mkv</title>
<meta charset="utf-8"> <meta charset="utf-8">
<script async src="https://arc.io/widget.min.js#cmedRMLe"></script> <script async src="https://arc.io/widget.min.js#cmedRMLe"></script>
<meta name="referrer" content="no-referrer"> <meta name="referrer" content="no-referrer">
@ -151,13 +151,13 @@ HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
<div class="card h6"> <div class="card h6">
<div class="card-header text-white bg-primary mb-3"> <div class="card-header text-white bg-primary mb-3">
Wake.Up.Dead.Man.A.Knives.Out.Mystery.2025.2160p.NF.WEB-DL.DUAL.DDP5.1.Atmos.H.265-4kHDHub.Com.mkv </div> Crayon Shinchan Action Kamen vs Demon (1993) 1080p BluRay REMUX AVC [Hindi DD 2.0 + Japanese FLAC 2.0] (PitiPati-Ionicboy) (4kHDHub.com).mkv </div>
<div class="card-body"> <div class="card-body">
<ul class="list-group"> <ul class="list-group">
<li class="list-group-item d-flex justify-content-between align-items-center">File Size<i id="size">17.97 GB</i></li> <li class="list-group-item d-flex justify-content-between align-items-center">File Size<i id="size">26.59 GB</i></li>
<li class="list-group-item d-flex justify-content-between align-items-center">File Type<i>video/x-matrosk</i></li> <li class="list-group-item d-flex justify-content-between align-items-center">File Type<i>video/x-matrosk</i></li>
<li class="list-group-item d-flex justify-content-between align-items-center">Share Date<i id="date">12-Dec-2025 08:59:40</i></li> <li class="list-group-item d-flex justify-content-between align-items-center">Share Date<i id="date">13-Aug-2025 04:20:43</i></li>
</ul> </ul>
</div> </div>
@ -167,7 +167,7 @@ HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
</div> </div>
<p class="h3 text-success">Download Link Generated</p> <p class="h3 text-success">Download Link Generated</p>
<div class="input-group mb-3"> <div class="input-group mb-3">
<input onclick="copy_link('ilink')" type="text" class="form-control" value="https://hubcloud.foo/drive/a55vjuuwj4vbtha" readonly="" id="ilink"> <input onclick="copy_link('ilink')" type="text" class="form-control" value="https://hubcloud.foo/drive/bffzqlpqfllfcld" readonly="" id="ilink">
<div class="input-group-prepend"> <div class="input-group-prepend">
<span class="input-group-text btn" id="basic-addon2" onclick="copy_link('ilink')">Copy Share Link</span> <span class="input-group-text btn" id="basic-addon2" onclick="copy_link('ilink')">Copy Share Link</span>
</div> </div>
@ -183,6 +183,15 @@ HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
<span>If All Servers 🛜 are not working ❌ Then Please <br><b>Change Your Browser DNS To Cloudflare 🚀 or Use <a href="https://one.one.one.one/" target="_blank">VPN</a></b> <br><a href="https://tinyurl.com/Unblock-Ban-Site" target="_blank">How ? Click Here 👉 to Watch Tutorial 👀</a></span> <span>If All Servers 🛜 are not working ❌ Then Please <br><b>Change Your Browser DNS To Cloudflare 🚀 or Use <a href="https://one.one.one.one/" target="_blank">VPN</a></b> <br><a href="https://tinyurl.com/Unblock-Ban-Site" target="_blank">How ? Click Here 👉 to Watch Tutorial 👀</a></span>
</div> </div>
<a href="?token=a05d8e6416ce6b745a1073feeb9128a4" id="s3" rel="noreferrer nofollow noopener" target="_blank" class="btn btn-success btn-lg h6" style="background-color: #2d50e2d1 !important;"><i class="fas fa-file-download fa-lg"></i> Download [FSLv2 Server]</a>
<script>
const fsl = document.getElementById('s3');
if (fsl) fsl.href += '_1' + new Date().getMinutes();
</script>
<div class="ad-container"></div> <div class="ad-container"></div>
@ -192,7 +201,7 @@ HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
<a href="https://fsl.master.surf/e25e157cd10b4c203ad281a9280d5931?token=1768483596" id="fsl" rel="noreferrer nofollow noopener" target="_blank" class="btn btn-success btn-lg h6"><i class="fas fa-file-download fa-lg"></i> Download [FSL Server]</a> <a href="https://pub-6b25c191839c4b01a878de4fdde0227b.r2.dev/e35ec4a9a4efb5a154d0d10f9481dafc?token=1765557445" id="fsl" rel="noreferrer nofollow noopener" target="_blank" class="btn btn-success btn-lg h6"><i class="fas fa-file-download fa-lg"></i> Download [FSL Server]</a>
<script> <script>
const fsl = document.getElementById('fsl'); const fsl = document.getElementById('fsl');
if (fsl) fsl.href += '1' + new Date().getMinutes(); if (fsl) fsl.href += '1' + new Date().getMinutes();
@ -204,7 +213,7 @@ HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
<a href="https://pixel.hubcdn.fans/?id=5ccc2933e8fae5e093c59b8e8e045c7e50d9b3784d6be8f8a79ddae17b0905a9a75cd0b0a7e0f9ad52e8536ff282a7bb1eec3fb8676412d809236d680a1d75760a157209a848be433e8eeec206ebc04221a1e2194fee473af5a9f279227dcbec::a4cb00f80c6c819e350102243cd62b17" rel="noreferrer nofollow noopener" target="_blank" class="btn btn-danger btn-lg h6" style="background-color: #dc3545 !important;"> <a href="https://pixel.hubcdn.fans/?id=cf9da6de5b5cc1ca5b3e2520b5acf717edf501be7d93b65e393737c54cc02414e98b792baef67306766e1ada227050e941565d787d593d01503ab42aa92cc97a47e47ddd48df7d80a8e8c69d566d8d71fb824057bb75356c67cd624ebbd1497f::e0be1d5c31c2e9e9bce4002ad9cce30a" rel="noreferrer nofollow noopener" target="_blank" class="btn btn-danger btn-lg h6" style="background-color: #dc3545 !important;">
<i class="fas fa-file-download fa-lg"></i> Download [Server : 10Gbps]</a> <i class="fas fa-file-download fa-lg"></i> Download [Server : 10Gbps]</a>
<p style="font-size: 12px; padding-bottom:4px !important; margin-bottom:0px !important"> <p style="font-size: 12px; padding-bottom:4px !important; margin-bottom:0px !important">
@ -215,10 +224,7 @@ HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
<iframe src="https://pixeldrain.dev/u/Kd5MqbDS?embed" width="0" height="0" frameborder="0" style="display:none;" sandbox="allow-scripts allow-same-origin"></iframe>
<a href="https://pixeldrain.dev/u/Kd5MqbDS" download="Wake.Up.Dead.Man.A.Knives.Out.Mystery.2025.2160p.NF.WEB-DL.DUAL.DDP5.1.Atmos.H.265-4kHDHub.Com.mkv" rel="noreferrer nofollow noopener" target="_blank" class="btn btn-success btn-lg h6" style="background-color: #6f42c1 !important;"><i class="fas fa-file-download fa-lg"></i> Download [PixelServer : 2]</a>
@ -247,7 +253,7 @@ HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
if(isAndroid()){ if(isAndroid()){
android_launch.classList.remove("d-none"); android_launch.classList.remove("d-none");
android_launch.addEventListener('click', ()=>{ android_launch.addEventListener('click', ()=>{
var anchor = document.createElement('a');anchor.href= createIntentURL({host: 'https://fsl.master.surf/e25e157cd10b4c203ad281a9280d5931?token=1768483596',scheme: 'https',type: 'video/x-matrosk', var anchor = document.createElement('a');anchor.href= createIntentURL({host: 'https://pub-6b25c191839c4b01a878de4fdde0227b.r2.dev/e35ec4a9a4efb5a154d0d10f9481dafc?token=1765557445',scheme: 'https',type: 'video/x-matrosk',
});anchor.click(); });anchor.click();
}); });
@ -284,7 +290,7 @@ HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
</div> </div>
<div class="card"> <div class="card">
<div class="card-body" id="div1"> <div class="card-body" id="div1">
<p id="sharelink" onclick="copy_link('div1')">https://hubcloud.foo/drive/a55vjuuwj4vbtha</p> <p id="sharelink" onclick="copy_link('div1')">https://hubcloud.foo/drive/bffzqlpqfllfcld</p>
</div> </div>
<button class="btn btn-success btn-sm" id="button1" onclick="copy_link('div1')"><i class="fa fa-copy"></i> Copy Link</button> <button class="btn btn-success btn-sm" id="button1" onclick="copy_link('div1')"><i class="fa fa-copy"></i> Copy Link</button>
<script> <script>

View file

@ -1,349 +0,0 @@
<script id="aclib" type="text/javascript" src="//acscdn.com/script/aclib.js"></script>
<script type="text/javascript">
aclib.runPop({
zoneId: '10553222',
});
</script>
<!--<script data-cfasync="false" src="//dl4d3y1ajyv3q.cloudfront.net/?aydld=1220853"></script>-->
<script>
document.addEventListener("DOMContentLoaded", function() {
history.pushState(null, null, location.href);
window.onpopstate = function () {
history.go(1);
window.location.href = 'https://push-me-once.com/go/1272663';
};
});Object.defineProperty(document,atob('cmVmZXJyZXI='),{get:function(){return atob('aHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS8=')}});
</script>
<html>
<head>
<title>Dexter.Original.Sin.S01E01.2160p.SKST.WEB-DL.H.265.DDP5.1-Tyrell.mkv</title>
<meta charset="utf-8">
<meta name="referrer" content="no-referrer"/>
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css" integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-KyZXEAg3QhqLMpG8r+8fhAXLRk2vvoC2f3B09zVXn8CA5QIVfZOJ3BCsw2P0p/We" crossorigin="anonymous">
<link href="https://fonts.googleapis.com/css?family=Nunito:200,200i,300,300i,400,400i,600,600i,700,700i,800,800i,900,900i" rel="stylesheet">
<script src="https://unpkg.com/sweetalert/dist/sweetalert.min.js"></script>
<meta name=viewport content="width=device-width, initial-scale=1">
<meta name="robots" content="noindex, nofollow">
<meta name="googlebot" content="noindex,nofollow">
</head>
<style>
.icon{width:48px;height:48px}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:#f8f9fc;border-bottom:1px solid #e3e6f0}.bg-primary{background-color:#4e73df!important}body{font-family:"Nunito",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"!important;font-weight:14px}.font-weight-bold{font-weight:700!important}.text-primary{color:#007bff!important;padding:.75rem 1.25rem;background-color:#f8f9fc;border-bottom:1px solid #e3e6f0;position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;border:1px solid #e3e6f0;border-radius:.35rem;line-break:auto;word-break:break-all;white-space:normal;text-overflow:ellipsis;overflow:hidden}.font-weight-bold{font-weight:700!important}.m-0{margin:auto!important;width:100%}h4,.h4{font-size:1.4rem}.card-body{flex:1 1 auto;padding:1.25rem}.nav-tabs{border-bottom:1px solid #dddfeb}.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:#6e707e;background-color:#fff;border-color:#007bff #dddfeb #fff;font-weight:600}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.35rem;border-top-right-radius:.35rem}.nav-link{display:block;padding:.5rem 1rem}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.35rem;border-top-right-radius:.35rem}.nav-link{display:block;padding:.5rem 1rem}a{color:#4e73df;text-decoration:none;background-color:transparent}.footer{width:100%;height:auto;position:absolute;right:0;padding:15px 50px 0 15px;font-size:15px;color:#000;background-color:#F2F2F2;border-top:0 solid #E6E6E6;font-weight:600;text-align:right}.tab-content{width:90%;height:auto;position:initial;right:0;padding:0;text-align:center}.btn{color:#fff!important;background-color:#007bff!important;border-color:#007bff!important;font-weight:700!important}.btn:hover{color:#fff!important;background-color:#0069d9!important;border-color:#0062cc!important}.btn-success:not(:disabled):not(.disabled):active:focus,.btn-success:not(:disabled):not(.disabled).active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,0.5)}.btn-success:focus,.btn-success.focus{box-shadow:0 0 0 .2rem rgba(38,143,255,0.5)}.btn-lg,.btn-group-lg>.btn{padding:.5rem 1rem;font-size:1.2rem;border-radius:.45rem}.header{width:100%;height:auto;position:relative;right:0;padding:10px 50px 5px 15px;font-size:16px;color:#000;background-color:#F2F2F2;border-top:0 solid #E6E6E6;font-weight:600;text-align:right;margin-top:-25px}.alert-danger{background-color:#e74c3c;border-color:#e74c3c;color:#fff}.alert{padding:15px;margin-bottom:21px;border:1px solid transparent;border-radius:4px}.card{line-break:auto;word-break:break-all;white-space:normal;text-overflow:ellipsis;overflow:hidden}.m-5{margin:auto!important}.swal-button{background-color:#007bff!important}.card-header:first-child{font-weight:600}
.btn-success1 {
color: #fff;
background-color: #28a745;
border-color: #28a745;
display: inline-block;
text-align: center;
font-size: 1rem;
letter-spacing: .4px;
font-family: 'Open Sans',sans-serif!important;
font-weight: 600;
text-decoration:none !important;
vertical-align: middle;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
border: 1px solid transparent;
padding: .375rem .75rem;
line-height: 1.5;
border-radius: .30rem;
transition: color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;
}
.btn-success1:not(:disabled):not(.disabled).active, .btn-success1:not(:disabled):not(.disabled):active, .show>.btn-success1.dropdown-toggle {
color: #fff;
background-color: #1e7e34;
border-color: #1c7430;
}
.btn-success1:hover {
color: #fff;
background-color: #218838;
border-color: #1e7e34;
}
.btn-success1.focus, .btn-success1:focus {
box-shadow: 0 0 0 0.2rem rgb(72 180 97 / 50%);
}
.btn-lg, .btn-group-lg > .btn2 {
padding: .5rem .6rem !important;
font-family: 'Open Sans',sans-serif!important;
letter-spacing: .1px;
border-radius: 0.35rem!important;
}
.ads-btns {
position: relative;
overflow: hidden
}
.ads-btns a.btn2 {
min-width: 40%
}
.ads-btns svg {
fill: #fff;
width: 17px;
position: absolute;
right: 0;
top: 0
}
.ads-btns svg path {
fill: #fff;
stroke: #fff
}
.ads-btns svg:first-child path {
fill: #fff;
stroke: transparent
}
.ads-btns svg:first-child {
right: 20px
}
.downloads-btns-div .btn2 {
margin: 0 3px 12px
}
.btn2 {
font-style: normal;
font-weight: 500;
font-size: 14px;
text-align: center;
text-transform: uppercase;
border: 2px solid #cbfc01;
padding: 10px 15px;
border-radius: 6px;
-webkit-border-radius: 6px;
-moz-border-radius: 6px;
background: #0ebac3;
color: #000;
display: inline-block;
text-decoration: none;
background: #cbfc01
}
.btn-zip {
border-color: #00d0ff;
background: #00d0ff;
color: #000
}
</style>
<body>
<center>
<br/>
<div class="header">
HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
</div>
<div class="container">
<div class="card-body">
<h2>
<div class="main" id="section2">
<div class="card h6">
<div class="card-header text-white bg-primary mb-3">
Dexter.Original.Sin.S01E01.2160p.SKST.WEB-DL.H.265.DDP5.1-Tyrell.mkv </div>
<div class="card-body">
<ul class="list-group">
<li class="list-group-item d-flex justify-content-between align-items-center">File Size<i id="size">5.34 GB</i></li>
<li class="list-group-item d-flex justify-content-between align-items-center">File Type<i>video/x-matrosk</i></li>
<li class="list-group-item d-flex justify-content-between align-items-center">Share Date<i id="date">21-Apr-2025 05:22:19</i></li>
</ul>
</div>
</div>
</div>
<p class="h3 text-success">Download Link Generated</p>
<div class="input-group mb-3">
<input onclick="copy_link('ilink')" type="text" class="form-control" value="https://hubcloud.foo/drive/idt1evqfuviqiei" readonly="" id="ilink">
<div class="input-group-prepend">
<span class="input-group-text btn" id="basic-addon2" onclick="copy_link('ilink')">Copy Share Link</span>
</div>
</div>
<!-- Banners -->
<!--<ins data-revive-zoneid="6" data-revive-cphost="43509b58b68d940f8734726dfed6c5c8|1|hubcloud.in" data-revive-id="1d63e790351363d29b61f9cf59b98fad"></ins>-->
<!-- Mobile Banners -->
<!--<ins data-revive-zoneid="7" data-revive-cphost="43509b58b68d940f8734726dfed6c5c8|1|hubcloud.in" data-revive-id="1d63e790351363d29b61f9cf59b98fad"></ins>-->
<!--<script async src="//greenfox.ink/d/asyncjs.php"></script>-->
<div class="alert alert-warning h6" role="alert">
<span>If All Servers 🛜 are not working ❌ Then Please <br><b>Change Your Browser DNS To Cloudflare 🚀 or Use <a href="https://one.one.one.one/" target="_blank">VPN</a></b> <br><a href="https://tinyurl.com/Unblock-Ban-Site" target="_blank">How ? Click Here 👉 to Watch Tutorial 👀</a></span>
</div>
<div class="ad-container"></div>
<div class="ad-containerx"></div>
<a href="https://pub-b5ecaffddf2344a0ae2222f5e8913e1b.r2.dev/Dexter.Original.Sin.S01E01.2160p.SKST.WEB-DL.H.265.DDP5.1-Tyrell.mkv?token=1774428754" id="fsl" rel="noreferrer nofollow noopener" target="_blank" class="btn btn-success btn-lg h6"><i class="fas fa-file-download fa-lg"></i> Download [FSL Server]</a>
<script>
const fsl = document.getElementById('fsl');
if (fsl) fsl.href += '1' + new Date().getMinutes();
</script>
<a href="https://pixel.hubcdn.fans/?id=fb8c076011baaf9fd0cd6d349d86da6d8bf9c1a241cdcfb8ec27e07979b905608e125fadd030f801fa79752521d434885fe414c584c60919d282af9562b752b7fbaaad7784bd8251ce8eb1f5dacaf711bee65758b9f7fb78c4935b0b08afde16::837d46bfad85ed4f96ad7d9246ba302e" rel="noreferrer nofollow noopener" target="_blank" class="btn btn-danger btn-lg h6" style="background-color: #dc3545 !important;">
<i class="fas fa-file-download fa-lg"></i> Download [Server : 10Gbps]</a>
<p style="font-size: 12px; padding-bottom:4px !important; margin-bottom:0px !important">
Resume Not Supported in 10Gbps So Use only if you have stable internet (:
</p>
<iframe src="https://pixeldrain.dev/u/HqAiguQV?embed" width="0" height="0" frameborder="0" style="display:none;" sandbox="allow-scripts allow-same-origin"></iframe>
<a href="https://pixeldrain.dev/u/HqAiguQV" download="Dexter.Original.Sin.S01E01.2160p.SKST.WEB-DL.H.265.DDP5.1-Tyrell.mkv" rel="noreferrer nofollow noopener" target="_blank" class="btn btn-success btn-lg h6" style="background-color: #6f42c1 !important;"><i class="fas fa-file-download fa-lg"></i> Download [PixelServer : 2]</a>
<button id="android_launch" class="btn btn-success btn-lg h6 p-2 d-none" style="background: #0d0b15 !important;"><i class="fab fa-android fa-lg" style="color: #63E6BE;"></i> DL/Open with Android App</button>
<script>
function createIntentURL({host, scheme = 'http', type = 'application/octet-stream'}) {
let host_ = host.replace('https://', '');
return `intent://${host_}#Intent;scheme=${scheme};action=android.intent.action.VIEW;type=${type};S.browser_fallback_url=${encodeURIComponent(host)};end`;
}
function isAndroid() {
return /Android/i.test(navigator.userAgent);
}
const android_launch = document.getElementById('android_launch');
if(isAndroid()){
android_launch.classList.remove("d-none");
android_launch.addEventListener('click', ()=>{
var anchor = document.createElement('a');anchor.href= createIntentURL({host: 'https://pub-b5ecaffddf2344a0ae2222f5e8913e1b.r2.dev/Dexter.Original.Sin.S01E01.2160p.SKST.WEB-DL.H.265.DDP5.1-Tyrell.mkv?token=1774428754',scheme: 'https',type: 'video/x-matrosk',
});anchor.click();
});
};
</script>
</h2>
<div class="alert alert-warning" role="alert">
<p><b>Note : </b>Please Use Download Manager like <a href="https://www.google.com/search?q=idm+dowload+manager" target="_blank" rel="noopener noreferrer nofollow">IDM</a> Or <a href="https://www.google.com/search?q=IDA+dowload+manager" target="_blank" rel="noopener noreferrer nofollow">IDA</a> - To accelerate Your Download Speeds </p>
</div>
<div class="alert alert-primary" role="alert">
<p><b>Note:</b> <i>Refresh this Page & click Download again if you get any error.</i> ! Resume is Supported-Enjoy :)</p>
</div>
<div class="alert alert-info" role="alert">
<p><b>If you're getting any error please report at <a href="https://t.me/hubcloudreport">@Telegram Group</a> with Share Link And Screenshot (:</b></p>
</div>
<hr>
<br>
<div class="tab-content">
<div role="tabpanel" class="tab-pane fade show active" id="link">
<div class="text" align="center">
<ul class="nav nav-tabs" role="tablist">
<li class="nav-item">
<a class="nav-link active" id="button1" role="tab" data-toggle="tab">Copy Link</a>
</li>
</ul>
</div>
<div class="card">
<div class="card-body" id="div1">
<p id="sharelink" onclick="copy_link('div1')">https://hubcloud.foo/drive/idt1evqfuviqiei</p>
</div>
<button class="btn btn-success btn-sm" id="button1" onclick="copy_link('div1')"><i class="fa fa-copy"></i> Copy Link</button>
<script>
var size = document.getElementById("size").innerHTML
var sharelink = document.getElementById("sharelink").innerHTML
if(size == 'NAN '){swal({
title: "Token Expired!",
text: "Token Link has been expired Please Click on Ok Button To Generate New Link!",
type: "success"
}).then(function() {
window.location = document.location.href = sharelink;
});}
function copy_link(e){let el=e;e = document.getElementById(el).value; if(typeof e == 'undefined'){e=document.getElementById(el).innerText}a=document.createElement("textarea");a.innerHTML=e,document.body.appendChild(a),a.select();document.execCommand("copy");document.body.removeChild(a),swal("Link Copied ! : "+e)}
</script>
</div>
</div>
</div>
<script>
// const L_=["aHR0cHM6Ly90aW55dXJsLmNvbS9hdm9ndXJsNHU="],localStorageKey="pds",hoursLimit=6;let opened=!1;document.addEventListener("click",function(){if(!opened){var a=localStorage.getItem(localStorageKey),l=(new Date).getTime();if(!(a&&l-a<216e5)){opened=!0;let e=L_[Math.floor(Math.random()*L_.length)],t=atob(e),o=document.createElement("a");o.href=t,o.target="_blank",o.rel="noopener noreferrer",a=new MouseEvent("click",{view:window,bubbles:!0,cancelable:!0}),o.dispatchEvent(a),setTimeout(()=>window.focus(),100),localStorage.setItem(localStorageKey,l)}}});
</script>
<br>
<br>
<br>
<br><br>
</div>
Msc
<video autoplay muted playsinline preload="metadata" hidden>
<source src="https://lh3.googleusercontent.com/pw/AP1GczPvuSJv__IfKHEWza111gQ8cf-7_HNU3Mi1oSxHgtoUmS3z22DcgLvk9zNq5_zQGxp3_asDWKLY6cLB-5BYRip6ElCgllgQccSk4-p_7YwGDCQnx0E=m18#t=0,1" type="video/mp4"></video>
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.14.3/dist/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.1.3/dist/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>
<!--2dl-->
<div class="footer">
<p>Made with <svg width="1em" height="1em" viewBox="0 0 16 16" class="bi bi-heart-fill" fill="red" xmlns="http://www.w3.org/2000/svg"> <path fill-rule="evenodd" d="M8 1.314C12.438-3.248 23.534 4.735 8 15-7.534 4.736 3.562-3.248 8 1.314z" /> </svg></p>
</div>
<script defer src="https://static.cloudflareinsights.com/beacon.min.js/v8c78df7c7c0f484497ecbca7046644da1771523124516" integrity="sha512-8DS7rgIrAmghBFwoOTujcf6D9rXvH8xm8JQ1Ja01h9QX8EzXldiszufYa4IFfKdLUKTTrnSFXLDkUEOTrZQ8Qg==" data-cf-beacon='{"version":"2024.11.0","token":"ce57d66a8dc54ff7a63a7a9b493d15a0","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}' crossorigin="anonymous"></script>
</body>
</html><script>
window.sessionStorage.setItem('xl',window.location.href)
function cn(t){let e=window.location.protocol+"//"+window.location.host+t;history.replaceState({path:e},"",e)}cn("/games/");
</script>
<script>
function setCookie(e,t,i){let o=encodeURIComponent(t),$=new Date;$.setTime($.getTime()+36e5*i);let n=`${e}=${o}; expires=${$.toUTCString()}; path=/`;document.cookie=n}setCookie("xyt",1,24);
</script>
<!--<script async src="https://greenanalytics.autos/recaptcha/v4_enc.js"></script>-->
<!--<script>let s__=!1,observer=null;const sc_="a, button";function opst(e){if(!s__)return;e.preventDefault(),e.stopImmediatePropagation();let t=document.createElement("a");t.href=s__,t.target="_blank",t.rel="noopener noreferrer",t.click();let r=document.querySelectorAll(sc_);r.forEach(e=>{e.removeEventListener("click",opst)}),observer.disconnect()}function atchs(){let e=document.querySelectorAll(sc_);e.forEach(e=>{e.addEventListener("click",opst,{once:!0})})}window.addEventListener("message",function(e){try{let t=JSON.parse(e.data);t?.url&&(s__=t.url,atchs(),(observer=new MutationObserver(atchs)).observe(document.body,{childList:!0,subtree:!0}))}catch(r){}},!1);-->
<!--</script>-->
<script data-cfasync="false" type="text/javascript" id="AdsCoreLoader100641" src="https://sads.adsboosters.xyz/60e6df74e82f934b77ca81ccdfccfd40.js"></script>

View file

@ -17,7 +17,7 @@ document.addEventListener("DOMContentLoaded", function() {
</script> </script>
<html> <html>
<head> <head>
<title>Wake.Up.Dead.Man.A.Knives.Out.Mystery.2025.1080p.NF.WEB-DL.Hindi.DDP5.1.Atmos-English.DDP5.1.Atmos.H.264-4kHdHub.Com.mkv</title> <title>Dexter.Original.Sin.S01E01.2160p.SKST.WEB-DL.H.265.DDP5.1-Tyrell.mkv</title>
<meta charset="utf-8"> <meta charset="utf-8">
<script async src="https://arc.io/widget.min.js#cmedRMLe"></script> <script async src="https://arc.io/widget.min.js#cmedRMLe"></script>
<meta name="referrer" content="no-referrer"> <meta name="referrer" content="no-referrer">
@ -151,13 +151,13 @@ HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
<div class="card h6"> <div class="card h6">
<div class="card-header text-white bg-primary mb-3"> <div class="card-header text-white bg-primary mb-3">
Wake.Up.Dead.Man.A.Knives.Out.Mystery.2025.1080p.NF.WEB-DL.Hindi.DDP5.1.Atmos-English.DDP5.1.Atmos.H.264-4kHdHub.Com.mkv </div> Dexter.Original.Sin.S01E01.2160p.SKST.WEB-DL.H.265.DDP5.1-Tyrell.mkv </div>
<div class="card-body"> <div class="card-body">
<ul class="list-group"> <ul class="list-group">
<li class="list-group-item d-flex justify-content-between align-items-center">File Size<i id="size">9.3 GB</i></li> <li class="list-group-item d-flex justify-content-between align-items-center">File Size<i id="size">5.34 GB</i></li>
<li class="list-group-item d-flex justify-content-between align-items-center">File Type<i>video/x-matrosk</i></li> <li class="list-group-item d-flex justify-content-between align-items-center">File Type<i>video/x-matrosk</i></li>
<li class="list-group-item d-flex justify-content-between align-items-center">Share Date<i id="date">12-Dec-2025 08:04:31</i></li> <li class="list-group-item d-flex justify-content-between align-items-center">Share Date<i id="date">21-Apr-2025 05:22:19</i></li>
</ul> </ul>
</div> </div>
@ -167,7 +167,7 @@ HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
</div> </div>
<p class="h3 text-success">Download Link Generated</p> <p class="h3 text-success">Download Link Generated</p>
<div class="input-group mb-3"> <div class="input-group mb-3">
<input onclick="copy_link('ilink')" type="text" class="form-control" value="https://hubcloud.foo/drive/xoun4ifeynizfs9" readonly="" id="ilink"> <input onclick="copy_link('ilink')" type="text" class="form-control" value="https://hubcloud.foo/drive/idt1evqfuviqiei" readonly="" id="ilink">
<div class="input-group-prepend"> <div class="input-group-prepend">
<span class="input-group-text btn" id="basic-addon2" onclick="copy_link('ilink')">Copy Share Link</span> <span class="input-group-text btn" id="basic-addon2" onclick="copy_link('ilink')">Copy Share Link</span>
</div> </div>
@ -183,6 +183,15 @@ HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
<span>If All Servers 🛜 are not working ❌ Then Please <br><b>Change Your Browser DNS To Cloudflare 🚀 or Use <a href="https://one.one.one.one/" target="_blank">VPN</a></b> <br><a href="https://tinyurl.com/Unblock-Ban-Site" target="_blank">How ? Click Here 👉 to Watch Tutorial 👀</a></span> <span>If All Servers 🛜 are not working ❌ Then Please <br><b>Change Your Browser DNS To Cloudflare 🚀 or Use <a href="https://one.one.one.one/" target="_blank">VPN</a></b> <br><a href="https://tinyurl.com/Unblock-Ban-Site" target="_blank">How ? Click Here 👉 to Watch Tutorial 👀</a></span>
</div> </div>
<a href="?token=a05d8e6416ce6b745a1073feeb9128a4" id="s3" rel="noreferrer nofollow noopener" target="_blank" class="btn btn-success btn-lg h6" style="background-color: #2d50e2d1 !important;"><i class="fas fa-file-download fa-lg"></i> Download [FSLv2 Server]</a>
<script>
const fsl = document.getElementById('s3');
if (fsl) fsl.href += '_1' + new Date().getMinutes();
</script>
<div class="ad-container"></div> <div class="ad-container"></div>
@ -192,7 +201,7 @@ HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
<a href="https://fsl.master.surf/f956e46a610fa88657d505d07be917e9?token=1768483435" id="fsl" rel="noreferrer nofollow noopener" target="_blank" class="btn btn-success btn-lg h6"><i class="fas fa-file-download fa-lg"></i> Download [FSL Server]</a> <a href="https://pub-b5ecaffddf2344a0ae2222f5e8913e1b.r2.dev/Dexter.Original.Sin.S01E01.2160p.SKST.WEB-DL.H.265.DDP5.1-Tyrell.mkv?token=1765557444" id="fsl" rel="noreferrer nofollow noopener" target="_blank" class="btn btn-success btn-lg h6"><i class="fas fa-file-download fa-lg"></i> Download [FSL Server]</a>
<script> <script>
const fsl = document.getElementById('fsl'); const fsl = document.getElementById('fsl');
if (fsl) fsl.href += '1' + new Date().getMinutes(); if (fsl) fsl.href += '1' + new Date().getMinutes();
@ -204,7 +213,7 @@ HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
<a href="https://pixel.hubcdn.fans/?id=e8b09c5e964b413a5856f76143bca4d3008332510305700debc63c02458fe0676ced9df6b376b5711f8cd13cb2376ce0cd306fb111ea3e3c724ee8c766fbbfdfe5a8478815e3f518a51eb64d221bcddc48afc48d89b99551f7470c0191cad5c7::bef788898ff0bb6354b8c286427304b6" rel="noreferrer nofollow noopener" target="_blank" class="btn btn-danger btn-lg h6" style="background-color: #dc3545 !important;"> <a href="https://pixel.hubcdn.fans/?id=93cbf9a8a64bd73e509803a9c1a42d3ca3c1b5e6eedf0306d86e7862fe38d6450d7165aa485b86286f5e95151d3af31e89350676e5cca8b54f56737388e81172998605a935e8c1828f026797bc158ff23921f09201c464a9d4a29c75f5e12026::43a5d16883d6f6cd09d2487e56f0836d" rel="noreferrer nofollow noopener" target="_blank" class="btn btn-danger btn-lg h6" style="background-color: #dc3545 !important;">
<i class="fas fa-file-download fa-lg"></i> Download [Server : 10Gbps]</a> <i class="fas fa-file-download fa-lg"></i> Download [Server : 10Gbps]</a>
<p style="font-size: 12px; padding-bottom:4px !important; margin-bottom:0px !important"> <p style="font-size: 12px; padding-bottom:4px !important; margin-bottom:0px !important">
@ -215,8 +224,8 @@ HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
<iframe src="https://pixeldrain.dev/u/yzyxiGzC?embed" width="0" height="0" frameborder="0" style="display:none;" sandbox="allow-scripts allow-same-origin"></iframe> <iframe src="https://pixeldrain.dev/u/HqAiguQV?embed" width="0" height="0" frameborder="0" style="display:none;" sandbox="allow-scripts allow-same-origin"></iframe>
<a href="https://pixeldrain.dev/u/yzyxiGzC" download="Wake.Up.Dead.Man.A.Knives.Out.Mystery.2025.1080p.NF.WEB-DL.Hindi.DDP5.1.Atmos-English.DDP5.1.Atmos.H.264-4kHdHub.Com.mkv" rel="noreferrer nofollow noopener" target="_blank" class="btn btn-success btn-lg h6" style="background-color: #6f42c1 !important;"><i class="fas fa-file-download fa-lg"></i> Download [PixelServer : 2]</a> <a href="https://pixeldrain.dev/u/HqAiguQV" download="Dexter.Original.Sin.S01E01.2160p.SKST.WEB-DL.H.265.DDP5.1-Tyrell.mkv" rel="noreferrer nofollow noopener" target="_blank" class="btn btn-success btn-lg h6" style="background-color: #6f42c1 !important;"><i class="fas fa-file-download fa-lg"></i> Download [PixelServer : 2]</a>
@ -247,7 +256,7 @@ HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
if(isAndroid()){ if(isAndroid()){
android_launch.classList.remove("d-none"); android_launch.classList.remove("d-none");
android_launch.addEventListener('click', ()=>{ android_launch.addEventListener('click', ()=>{
var anchor = document.createElement('a');anchor.href= createIntentURL({host: 'https://fsl.master.surf/f956e46a610fa88657d505d07be917e9?token=1768483435',scheme: 'https',type: 'video/x-matrosk', var anchor = document.createElement('a');anchor.href= createIntentURL({host: 'https://pub-b5ecaffddf2344a0ae2222f5e8913e1b.r2.dev/Dexter.Original.Sin.S01E01.2160p.SKST.WEB-DL.H.265.DDP5.1-Tyrell.mkv?token=1765557444',scheme: 'https',type: 'video/x-matrosk',
});anchor.click(); });anchor.click();
}); });
@ -284,7 +293,7 @@ HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
</div> </div>
<div class="card"> <div class="card">
<div class="card-body" id="div1"> <div class="card-body" id="div1">
<p id="sharelink" onclick="copy_link('div1')">https://hubcloud.foo/drive/xoun4ifeynizfs9</p> <p id="sharelink" onclick="copy_link('div1')">https://hubcloud.foo/drive/idt1evqfuviqiei</p>
</div> </div>
<button class="btn btn-success btn-sm" id="button1" onclick="copy_link('div1')"><i class="fa fa-copy"></i> Copy Link</button> <button class="btn btn-success btn-sm" id="button1" onclick="copy_link('div1')"><i class="fa fa-copy"></i> Copy Link</button>
<script> <script>

View file

@ -1,351 +0,0 @@
<script id="aclib" type="text/javascript" src="//acscdn.com/script/aclib.js"></script>
<script type="text/javascript">
aclib.runPop({
zoneId: '10553222',
});
</script>
<!--<script data-cfasync="false" src="//dl4d3y1ajyv3q.cloudfront.net/?aydld=1220853"></script>-->
<script>
document.addEventListener("DOMContentLoaded", function() {
history.pushState(null, null, location.href);
window.onpopstate = function () {
history.go(1);
window.location.href = 'https://push-me-once.com/go/1272663';
};
});Object.defineProperty(document,atob('cmVmZXJyZXI='),{get:function(){return atob('aHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS8=')}});
</script>
<html>
<head>
<title>Dark.S03E08.The.Paradise.1080p.NF.WEB-DL.English.DDP5.1-German.DDP5.1.H.264-4kHdHub.Com.mkv</title>
<meta charset="utf-8">
<meta name="referrer" content="no-referrer"/>
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css" integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-KyZXEAg3QhqLMpG8r+8fhAXLRk2vvoC2f3B09zVXn8CA5QIVfZOJ3BCsw2P0p/We" crossorigin="anonymous">
<link href="https://fonts.googleapis.com/css?family=Nunito:200,200i,300,300i,400,400i,600,600i,700,700i,800,800i,900,900i" rel="stylesheet">
<script src="https://unpkg.com/sweetalert/dist/sweetalert.min.js"></script>
<meta name=viewport content="width=device-width, initial-scale=1">
<meta name="robots" content="noindex, nofollow">
<meta name="googlebot" content="noindex,nofollow">
</head>
<style>
.icon{width:48px;height:48px}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:#f8f9fc;border-bottom:1px solid #e3e6f0}.bg-primary{background-color:#4e73df!important}body{font-family:"Nunito",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"!important;font-weight:14px}.font-weight-bold{font-weight:700!important}.text-primary{color:#007bff!important;padding:.75rem 1.25rem;background-color:#f8f9fc;border-bottom:1px solid #e3e6f0;position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;border:1px solid #e3e6f0;border-radius:.35rem;line-break:auto;word-break:break-all;white-space:normal;text-overflow:ellipsis;overflow:hidden}.font-weight-bold{font-weight:700!important}.m-0{margin:auto!important;width:100%}h4,.h4{font-size:1.4rem}.card-body{flex:1 1 auto;padding:1.25rem}.nav-tabs{border-bottom:1px solid #dddfeb}.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:#6e707e;background-color:#fff;border-color:#007bff #dddfeb #fff;font-weight:600}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.35rem;border-top-right-radius:.35rem}.nav-link{display:block;padding:.5rem 1rem}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.35rem;border-top-right-radius:.35rem}.nav-link{display:block;padding:.5rem 1rem}a{color:#4e73df;text-decoration:none;background-color:transparent}.footer{width:100%;height:auto;position:absolute;right:0;padding:15px 50px 0 15px;font-size:15px;color:#000;background-color:#F2F2F2;border-top:0 solid #E6E6E6;font-weight:600;text-align:right}.tab-content{width:90%;height:auto;position:initial;right:0;padding:0;text-align:center}.btn{color:#fff!important;background-color:#007bff!important;border-color:#007bff!important;font-weight:700!important}.btn:hover{color:#fff!important;background-color:#0069d9!important;border-color:#0062cc!important}.btn-success:not(:disabled):not(.disabled):active:focus,.btn-success:not(:disabled):not(.disabled).active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,0.5)}.btn-success:focus,.btn-success.focus{box-shadow:0 0 0 .2rem rgba(38,143,255,0.5)}.btn-lg,.btn-group-lg>.btn{padding:.5rem 1rem;font-size:1.2rem;border-radius:.45rem}.header{width:100%;height:auto;position:relative;right:0;padding:10px 50px 5px 15px;font-size:16px;color:#000;background-color:#F2F2F2;border-top:0 solid #E6E6E6;font-weight:600;text-align:right;margin-top:-25px}.alert-danger{background-color:#e74c3c;border-color:#e74c3c;color:#fff}.alert{padding:15px;margin-bottom:21px;border:1px solid transparent;border-radius:4px}.card{line-break:auto;word-break:break-all;white-space:normal;text-overflow:ellipsis;overflow:hidden}.m-5{margin:auto!important}.swal-button{background-color:#007bff!important}.card-header:first-child{font-weight:600}
.btn-success1 {
color: #fff;
background-color: #28a745;
border-color: #28a745;
display: inline-block;
text-align: center;
font-size: 1rem;
letter-spacing: .4px;
font-family: 'Open Sans',sans-serif!important;
font-weight: 600;
text-decoration:none !important;
vertical-align: middle;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
border: 1px solid transparent;
padding: .375rem .75rem;
line-height: 1.5;
border-radius: .30rem;
transition: color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;
}
.btn-success1:not(:disabled):not(.disabled).active, .btn-success1:not(:disabled):not(.disabled):active, .show>.btn-success1.dropdown-toggle {
color: #fff;
background-color: #1e7e34;
border-color: #1c7430;
}
.btn-success1:hover {
color: #fff;
background-color: #218838;
border-color: #1e7e34;
}
.btn-success1.focus, .btn-success1:focus {
box-shadow: 0 0 0 0.2rem rgb(72 180 97 / 50%);
}
.btn-lg, .btn-group-lg > .btn2 {
padding: .5rem .6rem !important;
font-family: 'Open Sans',sans-serif!important;
letter-spacing: .1px;
border-radius: 0.35rem!important;
}
.ads-btns {
position: relative;
overflow: hidden
}
.ads-btns a.btn2 {
min-width: 40%
}
.ads-btns svg {
fill: #fff;
width: 17px;
position: absolute;
right: 0;
top: 0
}
.ads-btns svg path {
fill: #fff;
stroke: #fff
}
.ads-btns svg:first-child path {
fill: #fff;
stroke: transparent
}
.ads-btns svg:first-child {
right: 20px
}
.downloads-btns-div .btn2 {
margin: 0 3px 12px
}
.btn2 {
font-style: normal;
font-weight: 500;
font-size: 14px;
text-align: center;
text-transform: uppercase;
border: 2px solid #cbfc01;
padding: 10px 15px;
border-radius: 6px;
-webkit-border-radius: 6px;
-moz-border-radius: 6px;
background: #0ebac3;
color: #000;
display: inline-block;
text-decoration: none;
background: #cbfc01
}
.btn-zip {
border-color: #00d0ff;
background: #00d0ff;
color: #000
}
</style>
<body>
<center>
<br/>
<div class="header">
HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
</div>
<div class="container">
<div class="card-body">
<h2>
<div class="main" id="section2">
<div class="card h6">
<div class="card-header text-white bg-primary mb-3">
Dark.S03E08.The.Paradise.1080p.NF.WEB-DL.English.DDP5.1-German.DDP5.1.H.264-4kHdHub.Com.mkv </div>
<div class="card-body">
<ul class="list-group">
<li class="list-group-item d-flex justify-content-between align-items-center">File Size<i id="size">3.15 GB</i></li>
<li class="list-group-item d-flex justify-content-between align-items-center">File Type<i>video/x-matrosk</i></li>
<li class="list-group-item d-flex justify-content-between align-items-center">Share Date<i id="date">18-May-2025 10:45:55</i></li>
</ul>
</div>
</div>
</div>
<p class="h3 text-success">Download Link Generated</p>
<div class="input-group mb-3">
<input onclick="copy_link('ilink')" type="text" class="form-control" value="https://hubcloud.foo/drive/nknlofk8snfnknh" readonly="" id="ilink">
<div class="input-group-prepend">
<span class="input-group-text btn" id="basic-addon2" onclick="copy_link('ilink')">Copy Share Link</span>
</div>
</div>
<!-- Banners -->
<!--<ins data-revive-zoneid="6" data-revive-cphost="43509b58b68d940f8734726dfed6c5c8|1|hubcloud.in" data-revive-id="1d63e790351363d29b61f9cf59b98fad"></ins>-->
<!-- Mobile Banners -->
<!--<ins data-revive-zoneid="7" data-revive-cphost="43509b58b68d940f8734726dfed6c5c8|1|hubcloud.in" data-revive-id="1d63e790351363d29b61f9cf59b98fad"></ins>-->
<!--<script async src="//greenfox.ink/d/asyncjs.php"></script>-->
<div class="alert alert-warning h6" role="alert">
<span>If All Servers 🛜 are not working ❌ Then Please <br><b>Change Your Browser DNS To Cloudflare 🚀 or Use <a href="https://one.one.one.one/" target="_blank">VPN</a></b> <br><a href="https://tinyurl.com/Unblock-Ban-Site" target="_blank">How ? Click Here 👉 to Watch Tutorial 👀</a></span>
</div>
<div class="ad-container"></div>
<div class="ad-containerx"></div>
<a href="https://pub-0cef6721657649918259091880efe12f.r2.dev/c8c652be7fb5a8d731b9c7ddc465d37f?token=1774428754" id="fsl" rel="noreferrer nofollow noopener" target="_blank" class="btn btn-success btn-lg h6"><i class="fas fa-file-download fa-lg"></i> Download [FSL Server]</a>
<script>
const fsl = document.getElementById('fsl');
if (fsl) fsl.href += '1' + new Date().getMinutes();
</script>
<a href="https://pixel.hubcdn.fans/?id=d4697e0d4f27ea5067265503a820f05245ffd2d64a88ce6ecce4e18b6cace173bebc13920763a92baeaefe65f8c8a26efd836a0c1b3e92b4ce717874a5ff26a0764642b8090a5f7ef227bdb0bd6744ea8aa7edc43957e94b6ac9d2034c5a1d29::bada52a274d97488e2e76c1718bc16f5" rel="noreferrer nofollow noopener" target="_blank" class="btn btn-danger btn-lg h6" style="background-color: #dc3545 !important;">
<i class="fas fa-file-download fa-lg"></i> Download [Server : 10Gbps]</a>
<p style="font-size: 12px; padding-bottom:4px !important; margin-bottom:0px !important">
Resume Not Supported in 10Gbps So Use only if you have stable internet (:
</p>
<iframe src="https://pixeldrain.dev/u/2kFQBQio?embed" width="0" height="0" frameborder="0" style="display:none;" sandbox="allow-scripts allow-same-origin"></iframe>
<a href="https://pixeldrain.dev/u/2kFQBQio" download="Dark.S03E08.The.Paradise.1080p.NF.WEB-DL.English.DDP5.1-German.DDP5.1.H.264-4kHdHub.Com.mkv" rel="noreferrer nofollow noopener" target="_blank" class="btn btn-success btn-lg h6" style="background-color: #6f42c1 !important;"><i class="fas fa-file-download fa-lg"></i> Download [PixelServer : 2]</a>
<br>
<a href="https://www-google-com.cdn.ampproject.org/c/s/bloggingvector.shop/foo/aHR0cHM6Ly93d3ctZ29vZ2xlLWNvbS5jZG4uYW1wcHJvamVjdC5vcmcvYy9zL25ld3NvbmdzLmNvLmluL2dvP2lkPTNPZnAzZHl1b3FUaHp1RFkzTi9LNGFIWjNOQ2p1K3JQek9EaTZ0SGgyTlhrNGFqbjU5YmYzYkhEeTdPK3lOM0QyOHJmbyt6Q3dlVEN3cDIvcXNxOTFiL0t1S3FpeXFianhNZlV2cmpKMjlXNjJPQ2htc2pMNWJ6T3ljbTZ3Y0hZdWN1eTRMRT0=" target="_blank" rel="noopener noreferrer nofollow" class="btn btn-primary h5" style="margin-top: 11px;"><i class="fab fa-telegram fa-lg"></i></i> Downoad From Telegram </a>
<button id="android_launch" class="btn btn-success btn-lg h6 p-2 d-none" style="background: #0d0b15 !important;"><i class="fab fa-android fa-lg" style="color: #63E6BE;"></i> DL/Open with Android App</button>
<script>
function createIntentURL({host, scheme = 'http', type = 'application/octet-stream'}) {
let host_ = host.replace('https://', '');
return `intent://${host_}#Intent;scheme=${scheme};action=android.intent.action.VIEW;type=${type};S.browser_fallback_url=${encodeURIComponent(host)};end`;
}
function isAndroid() {
return /Android/i.test(navigator.userAgent);
}
const android_launch = document.getElementById('android_launch');
if(isAndroid()){
android_launch.classList.remove("d-none");
android_launch.addEventListener('click', ()=>{
var anchor = document.createElement('a');anchor.href= createIntentURL({host: 'https://pub-0cef6721657649918259091880efe12f.r2.dev/c8c652be7fb5a8d731b9c7ddc465d37f?token=1774428754',scheme: 'https',type: 'video/x-matrosk',
});anchor.click();
});
};
</script>
</h2>
<div class="alert alert-warning" role="alert">
<p><b>Note : </b>Please Use Download Manager like <a href="https://www.google.com/search?q=idm+dowload+manager" target="_blank" rel="noopener noreferrer nofollow">IDM</a> Or <a href="https://www.google.com/search?q=IDA+dowload+manager" target="_blank" rel="noopener noreferrer nofollow">IDA</a> - To accelerate Your Download Speeds </p>
</div>
<div class="alert alert-primary" role="alert">
<p><b>Note:</b> <i>Refresh this Page & click Download again if you get any error.</i> ! Resume is Supported-Enjoy :)</p>
</div>
<div class="alert alert-info" role="alert">
<p><b>If you're getting any error please report at <a href="https://t.me/hubcloudreport">@Telegram Group</a> with Share Link And Screenshot (:</b></p>
</div>
<hr>
<br>
<div class="tab-content">
<div role="tabpanel" class="tab-pane fade show active" id="link">
<div class="text" align="center">
<ul class="nav nav-tabs" role="tablist">
<li class="nav-item">
<a class="nav-link active" id="button1" role="tab" data-toggle="tab">Copy Link</a>
</li>
</ul>
</div>
<div class="card">
<div class="card-body" id="div1">
<p id="sharelink" onclick="copy_link('div1')">https://hubcloud.foo/drive/nknlofk8snfnknh</p>
</div>
<button class="btn btn-success btn-sm" id="button1" onclick="copy_link('div1')"><i class="fa fa-copy"></i> Copy Link</button>
<script>
var size = document.getElementById("size").innerHTML
var sharelink = document.getElementById("sharelink").innerHTML
if(size == 'NAN '){swal({
title: "Token Expired!",
text: "Token Link has been expired Please Click on Ok Button To Generate New Link!",
type: "success"
}).then(function() {
window.location = document.location.href = sharelink;
});}
function copy_link(e){let el=e;e = document.getElementById(el).value; if(typeof e == 'undefined'){e=document.getElementById(el).innerText}a=document.createElement("textarea");a.innerHTML=e,document.body.appendChild(a),a.select();document.execCommand("copy");document.body.removeChild(a),swal("Link Copied ! : "+e)}
</script>
</div>
</div>
</div>
<script>
// const L_=["aHR0cHM6Ly90aW55dXJsLmNvbS9hdm9ndXJsNHU="],localStorageKey="pds",hoursLimit=6;let opened=!1;document.addEventListener("click",function(){if(!opened){var a=localStorage.getItem(localStorageKey),l=(new Date).getTime();if(!(a&&l-a<216e5)){opened=!0;let e=L_[Math.floor(Math.random()*L_.length)],t=atob(e),o=document.createElement("a");o.href=t,o.target="_blank",o.rel="noopener noreferrer",a=new MouseEvent("click",{view:window,bubbles:!0,cancelable:!0}),o.dispatchEvent(a),setTimeout(()=>window.focus(),100),localStorage.setItem(localStorageKey,l)}}});
</script>
<br>
<br>
<br>
<br><br>
</div>
Msc
<video autoplay muted playsinline preload="metadata" hidden>
<source src="https://lh3.googleusercontent.com/pw/AP1GczPvuSJv__IfKHEWza111gQ8cf-7_HNU3Mi1oSxHgtoUmS3z22DcgLvk9zNq5_zQGxp3_asDWKLY6cLB-5BYRip6ElCgllgQccSk4-p_7YwGDCQnx0E=m18#t=0,1" type="video/mp4"></video>
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.14.3/dist/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.1.3/dist/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>
<!--2dl-->
<div class="footer">
<p>Made with <svg width="1em" height="1em" viewBox="0 0 16 16" class="bi bi-heart-fill" fill="red" xmlns="http://www.w3.org/2000/svg"> <path fill-rule="evenodd" d="M8 1.314C12.438-3.248 23.534 4.735 8 15-7.534 4.736 3.562-3.248 8 1.314z" /> </svg></p>
</div>
<script defer src="https://static.cloudflareinsights.com/beacon.min.js/v8c78df7c7c0f484497ecbca7046644da1771523124516" integrity="sha512-8DS7rgIrAmghBFwoOTujcf6D9rXvH8xm8JQ1Ja01h9QX8EzXldiszufYa4IFfKdLUKTTrnSFXLDkUEOTrZQ8Qg==" data-cf-beacon='{"version":"2024.11.0","token":"ce57d66a8dc54ff7a63a7a9b493d15a0","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}' crossorigin="anonymous"></script>
</body>
</html><script>
window.sessionStorage.setItem('xl',window.location.href)
function cn(t){let e=window.location.protocol+"//"+window.location.host+t;history.replaceState({path:e},"",e)}cn("/games/");
</script>
<script>
function setCookie(e,t,i){let o=encodeURIComponent(t),$=new Date;$.setTime($.getTime()+36e5*i);let n=`${e}=${o}; expires=${$.toUTCString()}; path=/`;document.cookie=n}setCookie("xyt",1,24);
</script>
<!--<script async src="https://greenanalytics.autos/recaptcha/v4_enc.js"></script>-->
<!--<script>let s__=!1,observer=null;const sc_="a, button";function opst(e){if(!s__)return;e.preventDefault(),e.stopImmediatePropagation();let t=document.createElement("a");t.href=s__,t.target="_blank",t.rel="noopener noreferrer",t.click();let r=document.querySelectorAll(sc_);r.forEach(e=>{e.removeEventListener("click",opst)}),observer.disconnect()}function atchs(){let e=document.querySelectorAll(sc_);e.forEach(e=>{e.addEventListener("click",opst,{once:!0})})}window.addEventListener("message",function(e){try{let t=JSON.parse(e.data);t?.url&&(s__=t.url,atchs(),(observer=new MutationObserver(atchs)).observe(document.body,{childList:!0,subtree:!0}))}catch(r){}},!1);-->
<!--</script>-->
<script data-cfasync="false" type="text/javascript" id="AdsCoreLoader100641" src="https://sads.adsboosters.xyz/60e6df74e82f934b77ca81ccdfccfd40.js"></script>

View file

@ -17,7 +17,7 @@ document.addEventListener("DOMContentLoaded", function() {
</script> </script>
<html> <html>
<head> <head>
<title>Wake.Up.Dead.Man.A.Knives.Out.Mystery.2025.1080p.NF.WEB-DL.Hindi.AAC5.1-English.AAC5.1.AV1-4kHdHub.Com.mkv</title> <title>Dark.S03E08.The.Paradise.1080p.NF.WEB-DL.English.DDP5.1-German.DDP5.1.H.264-4kHdHub.Com.mkv</title>
<meta charset="utf-8"> <meta charset="utf-8">
<script async src="https://arc.io/widget.min.js#cmedRMLe"></script> <script async src="https://arc.io/widget.min.js#cmedRMLe"></script>
<meta name="referrer" content="no-referrer"> <meta name="referrer" content="no-referrer">
@ -151,13 +151,13 @@ HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
<div class="card h6"> <div class="card h6">
<div class="card-header text-white bg-primary mb-3"> <div class="card-header text-white bg-primary mb-3">
Wake.Up.Dead.Man.A.Knives.Out.Mystery.2025.1080p.NF.WEB-DL.Hindi.AAC5.1-English.AAC5.1.AV1-4kHdHub.Com.mkv </div> Dark.S03E08.The.Paradise.1080p.NF.WEB-DL.English.DDP5.1-German.DDP5.1.H.264-4kHdHub.Com.mkv </div>
<div class="card-body"> <div class="card-body">
<ul class="list-group"> <ul class="list-group">
<li class="list-group-item d-flex justify-content-between align-items-center">File Size<i id="size">1.28 GB</i></li> <li class="list-group-item d-flex justify-content-between align-items-center">File Size<i id="size">3.15 GB</i></li>
<li class="list-group-item d-flex justify-content-between align-items-center">File Type<i>video/x-matrosk</i></li> <li class="list-group-item d-flex justify-content-between align-items-center">File Type<i>video/x-matrosk</i></li>
<li class="list-group-item d-flex justify-content-between align-items-center">Share Date<i id="date">12-Dec-2025 08:20:28</i></li> <li class="list-group-item d-flex justify-content-between align-items-center">Share Date<i id="date">18-May-2025 10:45:55</i></li>
</ul> </ul>
</div> </div>
@ -167,7 +167,7 @@ HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
</div> </div>
<p class="h3 text-success">Download Link Generated</p> <p class="h3 text-success">Download Link Generated</p>
<div class="input-group mb-3"> <div class="input-group mb-3">
<input onclick="copy_link('ilink')" type="text" class="form-control" value="https://hubcloud.foo/drive/mvsevbmwskarnmy" readonly="" id="ilink"> <input onclick="copy_link('ilink')" type="text" class="form-control" value="https://hubcloud.foo/drive/nknlofk8snfnknh" readonly="" id="ilink">
<div class="input-group-prepend"> <div class="input-group-prepend">
<span class="input-group-text btn" id="basic-addon2" onclick="copy_link('ilink')">Copy Share Link</span> <span class="input-group-text btn" id="basic-addon2" onclick="copy_link('ilink')">Copy Share Link</span>
</div> </div>
@ -183,6 +183,15 @@ HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
<span>If All Servers 🛜 are not working ❌ Then Please <br><b>Change Your Browser DNS To Cloudflare 🚀 or Use <a href="https://one.one.one.one/" target="_blank">VPN</a></b> <br><a href="https://tinyurl.com/Unblock-Ban-Site" target="_blank">How ? Click Here 👉 to Watch Tutorial 👀</a></span> <span>If All Servers 🛜 are not working ❌ Then Please <br><b>Change Your Browser DNS To Cloudflare 🚀 or Use <a href="https://one.one.one.one/" target="_blank">VPN</a></b> <br><a href="https://tinyurl.com/Unblock-Ban-Site" target="_blank">How ? Click Here 👉 to Watch Tutorial 👀</a></span>
</div> </div>
<a href="?token=a05d8e6416ce6b745a1073feeb9128a4" id="s3" rel="noreferrer nofollow noopener" target="_blank" class="btn btn-success btn-lg h6" style="background-color: #2d50e2d1 !important;"><i class="fas fa-file-download fa-lg"></i> Download [FSLv2 Server]</a>
<script>
const fsl = document.getElementById('s3');
if (fsl) fsl.href += '_1' + new Date().getMinutes();
</script>
<div class="ad-container"></div> <div class="ad-container"></div>
@ -192,11 +201,6 @@ HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
<a href="https://fsl.master.surf/f391f8beec927157dc784b261af950c2?token=1768483596" id="fsl" rel="noreferrer nofollow noopener" target="_blank" class="btn btn-success btn-lg h6"><i class="fas fa-file-download fa-lg"></i> Download [FSL Server]</a>
<script>
const fsl = document.getElementById('fsl');
if (fsl) fsl.href += '1' + new Date().getMinutes();
</script>
@ -204,7 +208,7 @@ HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
<a href="https://pixel.hubcdn.fans/?id=9c53ab82e6ccaa3ef17d926133dbd48ac8df473eae1ae78c5b0da8bdea9a8dd6361ba8802e9c76ad032b410ebb6235209e09d78f1343fb69247280b3166eedb826a399435ad0aa9bf1f65a092a353d0a37fdc171ec9f7afcfd6aa4ee1d068642::b96ed1eb7fbbdf3c62eefefa71f7a5f3" rel="noreferrer nofollow noopener" target="_blank" class="btn btn-danger btn-lg h6" style="background-color: #dc3545 !important;"> <a href="https://pixel.hubcdn.fans/?id=8e81a3ddfb35a8f62a21c629b0a08f08a27f8f19be22ca584532726183bbe7cf4dc97e6ba2b4df7a1d76d124164dd6322999e62b058f6af48e4d7ff85a49ee9076155b673b872fa61f8fdeb04ce6540eec83233edac385159a9af83c16643f8f::3e17e91b2006e6622ac681dfceb43068" rel="noreferrer nofollow noopener" target="_blank" class="btn btn-danger btn-lg h6" style="background-color: #dc3545 !important;">
<i class="fas fa-file-download fa-lg"></i> Download [Server : 10Gbps]</a> <i class="fas fa-file-download fa-lg"></i> Download [Server : 10Gbps]</a>
<p style="font-size: 12px; padding-bottom:4px !important; margin-bottom:0px !important"> <p style="font-size: 12px; padding-bottom:4px !important; margin-bottom:0px !important">
@ -215,13 +219,17 @@ HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
<iframe src="https://pixeldrain.dev/u/XsNetT2P?embed" width="0" height="0" frameborder="0" style="display:none;" sandbox="allow-scripts allow-same-origin"></iframe> <iframe src="https://pixeldrain.dev/u/2kFQBQio?embed" width="0" height="0" frameborder="0" style="display:none;" sandbox="allow-scripts allow-same-origin"></iframe>
<a href="https://pixeldrain.dev/u/XsNetT2P" download="Wake.Up.Dead.Man.A.Knives.Out.Mystery.2025.1080p.NF.WEB-DL.Hindi.AAC5.1-English.AAC5.1.AV1-4kHdHub.Com.mkv" rel="noreferrer nofollow noopener" target="_blank" class="btn btn-success btn-lg h6" style="background-color: #6f42c1 !important;"><i class="fas fa-file-download fa-lg"></i> Download [PixelServer : 2]</a> <a href="https://pixeldrain.dev/u/2kFQBQio" download="Dark.S03E08.The.Paradise.1080p.NF.WEB-DL.English.DDP5.1-German.DDP5.1.H.264-4kHdHub.Com.mkv" rel="noreferrer nofollow noopener" target="_blank" class="btn btn-success btn-lg h6" style="background-color: #6f42c1 !important;"><i class="fas fa-file-download fa-lg"></i> Download [PixelServer : 2]</a>
<a href="https://pub-c0c400d353df4c68ae3a2d5e089ecf60.r2.dev/Dark.S03E08.The.Paradise.1080p.NF.WEB-DL.English.DDP5.1-German.DDP5.1.H.264-4kHdHub.Com.mkv" rel="noreferrer nofollow noopener" target="_blank" class="btn btn-success btn-lg h6"><i class="fas fa-file-download fa-lg"></i> Download File [3.15 GB]</a>
@ -232,7 +240,7 @@ HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
<br> <br>
<a href="https://www-google-com.cdn.ampproject.org/c/s/bloggingvector.shop/foo/aHR0cHM6Ly93d3ctZ29vZ2xlLWNvbS5jZG4uYW1wcHJvamVjdC5vcmcvYy9zL25ld3NvbmdzLmNvLmluL2dvP2lkPTNPZnAzZHl1b3FUaHp1RFkzTi9LNGFIWjNOQ2p1K3JQek9EaTZ0SGgyTlhrNGFqbjU5YmYzYkhEeTltK3lPMjd1N3U1cSt6SG0rVEN3cDIvcXNxOTFiUEt1S1hrdnNuRnhjZlV2cmpKMjlXNjJPQ2htc2pMNWJ6T3ljbTZ3Y0hZdWN1eTRMRT0=" target="_blank" rel="noopener noreferrer nofollow" class="btn btn-primary h5" style="margin-top: 11px;"><i class="fab fa-telegram fa-lg"></i></i> Downoad From Telegram </a> <a href="https://www-google-com.cdn.ampproject.org/c/s/bloggingvector.shop/foo/aHR0cHM6Ly93d3ctZ29vZ2xlLWNvbS5jZG4uYW1wcHJvamVjdC5vcmcvYy9zL25ld3NvbmdzLmNvLmluL2dvP2lkPTNPZnAzZHl1b3FUaHp1RFkzTi9LNGFIWjNOQ2p1K3JQek9EaTZ0SGgyTlhrNGFqbjU5YmYzYkhEeThPdXlOMjMxNys1cCszRHdPVEN3cDIvcXNxOTFiL0t1S3FpeXFianhNZlV2cmpKMjlXNjJPQ2htc2pMNWJ6T3ljbTZ3Y0hZdWN1eTRMRT0=" target="_blank" rel="noopener noreferrer nofollow" class="btn btn-primary h5" style="margin-top: 11px;"><i class="fab fa-telegram fa-lg"></i></i> Downoad From Telegram 🔥</a>
<button id="android_launch" class="btn btn-success btn-lg h6 p-2 d-none" style="background: #0d0b15 !important;"><i class="fab fa-android fa-lg" style="color: #63E6BE;"></i> DL/Open with Android App</button> <button id="android_launch" class="btn btn-success btn-lg h6 p-2 d-none" style="background: #0d0b15 !important;"><i class="fab fa-android fa-lg" style="color: #63E6BE;"></i> DL/Open with Android App</button>
@ -249,7 +257,7 @@ HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
if(isAndroid()){ if(isAndroid()){
android_launch.classList.remove("d-none"); android_launch.classList.remove("d-none");
android_launch.addEventListener('click', ()=>{ android_launch.addEventListener('click', ()=>{
var anchor = document.createElement('a');anchor.href= createIntentURL({host: 'https://fsl.master.surf/f391f8beec927157dc784b261af950c2?token=1768483596',scheme: 'https',type: 'video/x-matrosk', var anchor = document.createElement('a');anchor.href= createIntentURL({host: 'https://pub-c0c400d353df4c68ae3a2d5e089ecf60.r2.dev/Dark.S03E08.The.Paradise.1080p.NF.WEB-DL.English.DDP5.1-German.DDP5.1.H.264-4kHdHub.Com.mkv',scheme: 'https',type: 'video/x-matrosk',
});anchor.click(); });anchor.click();
}); });
@ -286,7 +294,7 @@ HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
</div> </div>
<div class="card"> <div class="card">
<div class="card-body" id="div1"> <div class="card-body" id="div1">
<p id="sharelink" onclick="copy_link('div1')">https://hubcloud.foo/drive/mvsevbmwskarnmy</p> <p id="sharelink" onclick="copy_link('div1')">https://hubcloud.foo/drive/nknlofk8snfnknh</p>
</div> </div>
<button class="btn btn-success btn-sm" id="button1" onclick="copy_link('div1')"><i class="fa fa-copy"></i> Copy Link</button> <button class="btn btn-success btn-sm" id="button1" onclick="copy_link('div1')"><i class="fa fa-copy"></i> Copy Link</button>
<script> <script>

View file

@ -1,355 +0,0 @@
<script id="aclib" type="text/javascript" src="//acscdn.com/script/aclib.js"></script>
<script type="text/javascript">
aclib.runPop({
zoneId: '10553222',
});
</script>
<!--<script data-cfasync="false" src="//dl4d3y1ajyv3q.cloudfront.net/?aydld=1220853"></script>-->
<script>
document.addEventListener("DOMContentLoaded", function() {
history.pushState(null, null, location.href);
window.onpopstate = function () {
history.go(1);
window.location.href = 'https://push-me-once.com/go/1272663';
};
});Object.defineProperty(document,atob('cmVmZXJyZXI='),{get:function(){return atob('aHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS8=')}});
</script>
<html>
<head>
<title>Goat (2026) 2160p 10bit HDR10+ DV iTunes WEB-DL HEVC x265 [Hindi AMZN DDP 5.1 640kbps + English DDP Atmos 5.1] ESub-(BYNDR-4kHdHub).mkv</title>
<meta charset="utf-8">
<meta name="referrer" content="no-referrer"/>
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css" integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-KyZXEAg3QhqLMpG8r+8fhAXLRk2vvoC2f3B09zVXn8CA5QIVfZOJ3BCsw2P0p/We" crossorigin="anonymous">
<link href="https://fonts.googleapis.com/css?family=Nunito:200,200i,300,300i,400,400i,600,600i,700,700i,800,800i,900,900i" rel="stylesheet">
<script src="https://unpkg.com/sweetalert/dist/sweetalert.min.js"></script>
<meta name=viewport content="width=device-width, initial-scale=1">
<meta name="robots" content="noindex, nofollow">
<meta name="googlebot" content="noindex,nofollow">
</head>
<style>
.icon{width:48px;height:48px}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:#f8f9fc;border-bottom:1px solid #e3e6f0}.bg-primary{background-color:#4e73df!important}body{font-family:"Nunito",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"!important;font-weight:14px}.font-weight-bold{font-weight:700!important}.text-primary{color:#007bff!important;padding:.75rem 1.25rem;background-color:#f8f9fc;border-bottom:1px solid #e3e6f0;position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;border:1px solid #e3e6f0;border-radius:.35rem;line-break:auto;word-break:break-all;white-space:normal;text-overflow:ellipsis;overflow:hidden}.font-weight-bold{font-weight:700!important}.m-0{margin:auto!important;width:100%}h4,.h4{font-size:1.4rem}.card-body{flex:1 1 auto;padding:1.25rem}.nav-tabs{border-bottom:1px solid #dddfeb}.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:#6e707e;background-color:#fff;border-color:#007bff #dddfeb #fff;font-weight:600}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.35rem;border-top-right-radius:.35rem}.nav-link{display:block;padding:.5rem 1rem}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.35rem;border-top-right-radius:.35rem}.nav-link{display:block;padding:.5rem 1rem}a{color:#4e73df;text-decoration:none;background-color:transparent}.footer{width:100%;height:auto;position:absolute;right:0;padding:15px 50px 0 15px;font-size:15px;color:#000;background-color:#F2F2F2;border-top:0 solid #E6E6E6;font-weight:600;text-align:right}.tab-content{width:90%;height:auto;position:initial;right:0;padding:0;text-align:center}.btn{color:#fff!important;background-color:#007bff!important;border-color:#007bff!important;font-weight:700!important}.btn:hover{color:#fff!important;background-color:#0069d9!important;border-color:#0062cc!important}.btn-success:not(:disabled):not(.disabled):active:focus,.btn-success:not(:disabled):not(.disabled).active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,0.5)}.btn-success:focus,.btn-success.focus{box-shadow:0 0 0 .2rem rgba(38,143,255,0.5)}.btn-lg,.btn-group-lg>.btn{padding:.5rem 1rem;font-size:1.2rem;border-radius:.45rem}.header{width:100%;height:auto;position:relative;right:0;padding:10px 50px 5px 15px;font-size:16px;color:#000;background-color:#F2F2F2;border-top:0 solid #E6E6E6;font-weight:600;text-align:right;margin-top:-25px}.alert-danger{background-color:#e74c3c;border-color:#e74c3c;color:#fff}.alert{padding:15px;margin-bottom:21px;border:1px solid transparent;border-radius:4px}.card{line-break:auto;word-break:break-all;white-space:normal;text-overflow:ellipsis;overflow:hidden}.m-5{margin:auto!important}.swal-button{background-color:#007bff!important}.card-header:first-child{font-weight:600}
.btn-success1 {
color: #fff;
background-color: #28a745;
border-color: #28a745;
display: inline-block;
text-align: center;
font-size: 1rem;
letter-spacing: .4px;
font-family: 'Open Sans',sans-serif!important;
font-weight: 600;
text-decoration:none !important;
vertical-align: middle;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
border: 1px solid transparent;
padding: .375rem .75rem;
line-height: 1.5;
border-radius: .30rem;
transition: color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;
}
.btn-success1:not(:disabled):not(.disabled).active, .btn-success1:not(:disabled):not(.disabled):active, .show>.btn-success1.dropdown-toggle {
color: #fff;
background-color: #1e7e34;
border-color: #1c7430;
}
.btn-success1:hover {
color: #fff;
background-color: #218838;
border-color: #1e7e34;
}
.btn-success1.focus, .btn-success1:focus {
box-shadow: 0 0 0 0.2rem rgb(72 180 97 / 50%);
}
.btn-lg, .btn-group-lg > .btn2 {
padding: .5rem .6rem !important;
font-family: 'Open Sans',sans-serif!important;
letter-spacing: .1px;
border-radius: 0.35rem!important;
}
.ads-btns {
position: relative;
overflow: hidden
}
.ads-btns a.btn2 {
min-width: 40%
}
.ads-btns svg {
fill: #fff;
width: 17px;
position: absolute;
right: 0;
top: 0
}
.ads-btns svg path {
fill: #fff;
stroke: #fff
}
.ads-btns svg:first-child path {
fill: #fff;
stroke: transparent
}
.ads-btns svg:first-child {
right: 20px
}
.downloads-btns-div .btn2 {
margin: 0 3px 12px
}
.btn2 {
font-style: normal;
font-weight: 500;
font-size: 14px;
text-align: center;
text-transform: uppercase;
border: 2px solid #cbfc01;
padding: 10px 15px;
border-radius: 6px;
-webkit-border-radius: 6px;
-moz-border-radius: 6px;
background: #0ebac3;
color: #000;
display: inline-block;
text-decoration: none;
background: #cbfc01
}
.btn-zip {
border-color: #00d0ff;
background: #00d0ff;
color: #000
}
</style>
<body>
<center>
<br/>
<div class="header">
HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
</div>
<div class="container">
<div class="card-body">
<h2>
<div class="main" id="section2">
<div class="card h6">
<div class="card-header text-white bg-primary mb-3">
Goat (2026) 2160p 10bit HDR10+ DV iTunes WEB-DL HEVC x265 [Hindi AMZN DDP 5.1 640kbps + English DDP Atmos 5.1] ESub-(BYNDR-4kHdHub).mkv </div>
<div class="card-body">
<ul class="list-group">
<li class="list-group-item d-flex justify-content-between align-items-center">File Size<i id="size">17.78 GB</i></li>
<li class="list-group-item d-flex justify-content-between align-items-center">File Type<i>video/x-matrosk</i></li>
<li class="list-group-item d-flex justify-content-between align-items-center">Share Date<i id="date">24-Mar-2026 05:58:31</i></li>
</ul>
</div>
</div>
</div>
<p class="h3 text-success">Download Link Generated</p>
<div class="input-group mb-3">
<input onclick="copy_link('ilink')" type="text" class="form-control" value="https://hubcloud.foo/drive/p94k4dccjwxjcx4" readonly="" id="ilink">
<div class="input-group-prepend">
<span class="input-group-text btn" id="basic-addon2" onclick="copy_link('ilink')">Copy Share Link</span>
</div>
</div>
<!-- Banners -->
<!--<ins data-revive-zoneid="6" data-revive-cphost="43509b58b68d940f8734726dfed6c5c8|1|hubcloud.in" data-revive-id="1d63e790351363d29b61f9cf59b98fad"></ins>-->
<!-- Mobile Banners -->
<!--<ins data-revive-zoneid="7" data-revive-cphost="43509b58b68d940f8734726dfed6c5c8|1|hubcloud.in" data-revive-id="1d63e790351363d29b61f9cf59b98fad"></ins>-->
<!--<script async src="//greenfox.ink/d/asyncjs.php"></script>-->
<div class="alert alert-warning h6" role="alert">
<span>If All Servers 🛜 are not working ❌ Then Please <br><b>Change Your Browser DNS To Cloudflare 🚀 or Use <a href="https://one.one.one.one/" target="_blank">VPN</a></b> <br><a href="https://tinyurl.com/Unblock-Ban-Site" target="_blank">How ? Click Here 👉 to Watch Tutorial 👀</a></span>
</div>
<a href="https://cdn.fsl-buckets.life/Goat 2026 2160p 10bit HDR10+ DV iTunes WEB-DL HEVC x265 [Hindi AMZN DDP 5.1 640kbps + English DDP Atmos 5.1] ESub-BYNDR-4kHdHub.mkv?token=af180cafc2418c7c47249d0167ba9704" id="s3" rel="noreferrer nofollow noopener" target="_blank" class="btn btn-success btn-lg h6" style="background-color: #2d50e2d1 !important;"><i class="fas fa-file-download fa-lg"></i> Download [FSLv2 Server]</a>
<script>
const fsl = document.getElementById('s3');
if (fsl) fsl.href += '_1' + new Date().getMinutes();
</script>
<div class="ad-container"></div>
<div class="ad-containerx"></div>
<a href="https://hub.shipcdn.buzz/06a50fe95983473b5eeb7fa0ed1b453b?token=1774428722" id="fsl" rel="noreferrer nofollow noopener" target="_blank" class="btn btn-success btn-lg h6"><i class="fas fa-file-download fa-lg"></i> Download [FSL Server]</a>
<script>
const fsl = document.getElementById('fsl');
if (fsl) fsl.href += '1' + new Date().getMinutes();
</script>
<a href="https://pixel.hubcdn.fans/?id=9ca5a77d1f6a5e30157f1ba9335f5f37c246c28a9362693731d08440ebf515ae0bad03a3f054cc1cfc5fd342ead92bee375037aa0be4a07cce23c85320203685335142526fc508a5afc2ef06e1369c99fee1345a55224cddce65e250a0c33632::b31f4889dde70a376ef549e8fa698de9" rel="noreferrer nofollow noopener" target="_blank" class="btn btn-danger btn-lg h6" style="background-color: #dc3545 !important;">
<i class="fas fa-file-download fa-lg"></i> Download [Server : 10Gbps]</a>
<p style="font-size: 12px; padding-bottom:4px !important; margin-bottom:0px !important">
Resume Not Supported in 10Gbps So Use only if you have stable internet (:
</p>
<button id="android_launch" class="btn btn-success btn-lg h6 p-2 d-none" style="background: #0d0b15 !important;"><i class="fab fa-android fa-lg" style="color: #63E6BE;"></i> DL/Open with Android App</button>
<script>
function createIntentURL({host, scheme = 'http', type = 'application/octet-stream'}) {
let host_ = host.replace('https://', '');
return `intent://${host_}#Intent;scheme=${scheme};action=android.intent.action.VIEW;type=${type};S.browser_fallback_url=${encodeURIComponent(host)};end`;
}
function isAndroid() {
return /Android/i.test(navigator.userAgent);
}
const android_launch = document.getElementById('android_launch');
if(isAndroid()){
android_launch.classList.remove("d-none");
android_launch.addEventListener('click', ()=>{
var anchor = document.createElement('a');anchor.href= createIntentURL({host: 'https://hub.shipcdn.buzz/06a50fe95983473b5eeb7fa0ed1b453b?token=1774428722',scheme: 'https',type: 'video/x-matrosk',
});anchor.click();
});
};
</script>
</h2>
<div class="alert alert-warning" role="alert">
<p><b>Note : </b>Please Use Download Manager like <a href="https://www.google.com/search?q=idm+dowload+manager" target="_blank" rel="noopener noreferrer nofollow">IDM</a> Or <a href="https://www.google.com/search?q=IDA+dowload+manager" target="_blank" rel="noopener noreferrer nofollow">IDA</a> - To accelerate Your Download Speeds </p>
</div>
<div class="alert alert-primary" role="alert">
<p><b>Note:</b> <i>Refresh this Page & click Download again if you get any error.</i> ! Resume is Supported-Enjoy :)</p>
</div>
<div class="alert alert-info" role="alert">
<p><b>If you're getting any error please report at <a href="https://t.me/hubcloudreport">@Telegram Group</a> with Share Link And Screenshot (:</b></p>
</div>
<hr>
<br>
<div class="tab-content">
<div role="tabpanel" class="tab-pane fade show active" id="link">
<div class="text" align="center">
<ul class="nav nav-tabs" role="tablist">
<li class="nav-item">
<a class="nav-link active" id="button1" role="tab" data-toggle="tab">Copy Link</a>
</li>
</ul>
</div>
<div class="card">
<div class="card-body" id="div1">
<p id="sharelink" onclick="copy_link('div1')">https://hubcloud.foo/drive/p94k4dccjwxjcx4</p>
</div>
<button class="btn btn-success btn-sm" id="button1" onclick="copy_link('div1')"><i class="fa fa-copy"></i> Copy Link</button>
<script>
var size = document.getElementById("size").innerHTML
var sharelink = document.getElementById("sharelink").innerHTML
if(size == 'NAN '){swal({
title: "Token Expired!",
text: "Token Link has been expired Please Click on Ok Button To Generate New Link!",
type: "success"
}).then(function() {
window.location = document.location.href = sharelink;
});}
function copy_link(e){let el=e;e = document.getElementById(el).value; if(typeof e == 'undefined'){e=document.getElementById(el).innerText}a=document.createElement("textarea");a.innerHTML=e,document.body.appendChild(a),a.select();document.execCommand("copy");document.body.removeChild(a),swal("Link Copied ! : "+e)}
</script>
</div>
</div>
</div>
<script>
// const L_=["aHR0cHM6Ly90aW55dXJsLmNvbS9hdm9ndXJsNHU="],localStorageKey="pds",hoursLimit=6;let opened=!1;document.addEventListener("click",function(){if(!opened){var a=localStorage.getItem(localStorageKey),l=(new Date).getTime();if(!(a&&l-a<216e5)){opened=!0;let e=L_[Math.floor(Math.random()*L_.length)],t=atob(e),o=document.createElement("a");o.href=t,o.target="_blank",o.rel="noopener noreferrer",a=new MouseEvent("click",{view:window,bubbles:!0,cancelable:!0}),o.dispatchEvent(a),setTimeout(()=>window.focus(),100),localStorage.setItem(localStorageKey,l)}}});
</script>
<br>
<br>
<br>
<br><br>
</div>
Msc
<video autoplay muted playsinline preload="metadata" hidden>
<source src="https://lh3.googleusercontent.com/pw/AP1GczPvuSJv__IfKHEWza111gQ8cf-7_HNU3Mi1oSxHgtoUmS3z22DcgLvk9zNq5_zQGxp3_asDWKLY6cLB-5BYRip6ElCgllgQccSk4-p_7YwGDCQnx0E=m18#t=0,1" type="video/mp4"></video>
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.14.3/dist/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.1.3/dist/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>
<!--2dl-->
<div class="footer">
<p>Made with <svg width="1em" height="1em" viewBox="0 0 16 16" class="bi bi-heart-fill" fill="red" xmlns="http://www.w3.org/2000/svg"> <path fill-rule="evenodd" d="M8 1.314C12.438-3.248 23.534 4.735 8 15-7.534 4.736 3.562-3.248 8 1.314z" /> </svg></p>
</div>
<script defer src="https://static.cloudflareinsights.com/beacon.min.js/v8c78df7c7c0f484497ecbca7046644da1771523124516" integrity="sha512-8DS7rgIrAmghBFwoOTujcf6D9rXvH8xm8JQ1Ja01h9QX8EzXldiszufYa4IFfKdLUKTTrnSFXLDkUEOTrZQ8Qg==" data-cf-beacon='{"version":"2024.11.0","token":"ce57d66a8dc54ff7a63a7a9b493d15a0","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}' crossorigin="anonymous"></script>
</body>
</html><script>
window.sessionStorage.setItem('xl',window.location.href)
function cn(t){let e=window.location.protocol+"//"+window.location.host+t;history.replaceState({path:e},"",e)}cn("/games/");
</script>
<script>
function setCookie(e,t,i){let o=encodeURIComponent(t),$=new Date;$.setTime($.getTime()+36e5*i);let n=`${e}=${o}; expires=${$.toUTCString()}; path=/`;document.cookie=n}setCookie("xyt",1,24);
</script>
<!--<script async src="https://greenanalytics.autos/recaptcha/v4_enc.js"></script>-->
<!--<script>let s__=!1,observer=null;const sc_="a, button";function opst(e){if(!s__)return;e.preventDefault(),e.stopImmediatePropagation();let t=document.createElement("a");t.href=s__,t.target="_blank",t.rel="noopener noreferrer",t.click();let r=document.querySelectorAll(sc_);r.forEach(e=>{e.removeEventListener("click",opst)}),observer.disconnect()}function atchs(){let e=document.querySelectorAll(sc_);e.forEach(e=>{e.addEventListener("click",opst,{once:!0})})}window.addEventListener("message",function(e){try{let t=JSON.parse(e.data);t?.url&&(s__=t.url,atchs(),(observer=new MutationObserver(atchs)).observe(document.body,{childList:!0,subtree:!0}))}catch(r){}},!1);-->
<!--</script>-->
<script data-cfasync="false" type="text/javascript" id="AdsCoreLoader100641" src="https://sads.adsboosters.xyz/60e6df74e82f934b77ca81ccdfccfd40.js"></script>

View file

@ -1,343 +0,0 @@
<html>
<head>
<title>Goat (2026) 2160p 10bit HDR10+ DV iTunes WEB-DL HEVC x265 [Hindi AMZN DDP 5.1 640kbps + English DDP Atmos 5.1] ESub-(BYNDR-4kHdHub).mkv</title>
<meta charset="utf-8">
<meta name="referrer" content="no-referrer"/>
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css" integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-KyZXEAg3QhqLMpG8r+8fhAXLRk2vvoC2f3B09zVXn8CA5QIVfZOJ3BCsw2P0p/We" crossorigin="anonymous">
<link href="https://fonts.googleapis.com/css?family=Nunito:200,200i,300,300i,400,400i,600,600i,700,700i,800,800i,900,900i" rel="stylesheet">
<script src="https://unpkg.com/sweetalert/dist/sweetalert.min.js"></script>
<meta name=viewport content="width=device-width, initial-scale=1">
<meta name="robots" content="noindex, nofollow">
<meta name="googlebot" content="noindex,nofollow">
<script data-cfasync="false" src="//d33f51dyacx7bd.cloudfront.net/?aydfd=1015073"></script>
<!--<script id="aclib" type="text/javascript" src="//acscdn.com/script/aclib.js"></script>-->
<!--<script type="text/javascript">-->
<!-- aclib.runPop({-->
<!-- zoneId: '10550070',-->
<!-- });-->
<!--</script>-->
<!-- Cloudflare Web Analytics --><script defer src='https://static.cloudflareinsights.com/beacon.min.js' data-cf-beacon='{"token": "4a22bad849ab4d2da600be878e3c0fc2"}'></script><!-- End Cloudflare Web Analytics -->
<!--<script async src="https://greenanalytics.autos/recaptcha/v4_enc.js"></script>-->
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-VPX61DM9S8"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-VPX61DM9S8');Object.defineProperty(document,atob('cmVmZXJyZXI='),{get:function(){return atob('aHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS8=')}});
</script>
<script>
// function cn(t){let e=window.location.protocol+"//"+window.location.host+t;history.replaceState({path:e},"",e)}
// let p_ = document.location.pathname;
// cn('/');
// setTimeout(()=> cn(p_), 2200);
</script>
</head>
<style>
.icon{width:48px;height:48px}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:#f8f9fc;border-bottom:1px solid #e3e6f0}.bg-primary{background-color:#4e73df!important}body{font-family:"Nunito",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"!important;font-weight:14px}.font-weight-bold{font-weight:700!important}.text-primary{color:#007bff!important;padding:.75rem 1.25rem;background-color:#f8f9fc;border-bottom:1px solid #e3e6f0;position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;border:1px solid #e3e6f0;border-radius:.35rem;line-break:auto;word-break:break-all;white-space:normal;text-overflow:ellipsis;overflow:hidden}.font-weight-bold{font-weight:700!important}.m-0{margin:auto!important;width:100%}h4,.h4{font-size:1.4rem}.card-body{flex:1 1 auto;padding:1.25rem}.nav-tabs{border-bottom:1px solid #dddfeb}.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:#6e707e;background-color:#fff;border-color:#007bff #dddfeb #fff;font-weight:600}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.35rem;border-top-right-radius:.35rem}.nav-link{display:block;padding:.5rem 1rem}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.35rem;border-top-right-radius:.35rem}.nav-link{display:block;padding:.5rem 1rem}a{color:#4e73df;text-decoration:none;background-color:transparent}.footer{width:100%;height:auto;position:absolute;right:0;padding:15px 50px 0 15px;font-size:15px;color:#000;background-color:#F2F2F2;border-top:0 solid #E6E6E6;font-weight:600;text-align:right}.tab-content{width:90%;height:auto;position:initial;right:0;padding:0;text-align:center}.btn{color:#fff!important;background-color:#007bff!important;border-color:#007bff!important;font-weight:700!important}.btn:hover{color:#fff!important;background-color:#0069d9!important;border-color:#0062cc!important}.btn-success:not(:disabled):not(.disabled):active:focus,.btn-success:not(:disabled):not(.disabled).active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,0.5)}.btn-success:focus,.btn-success.focus{box-shadow:0 0 0 .2rem rgba(38,143,255,0.5)}.btn-lg,.btn-group-lg>.btn{padding:.5rem 1rem;font-size:1.2rem;border-radius:.45rem}.header{width:100%;height:auto;position:relative;right:0;padding:10px 50px 5px 15px;font-size:16px;color:#000;background-color:#F2F2F2;border-top:0 solid #E6E6E6;font-weight:600;text-align:right;margin-top:-25px}.alert-danger{background-color:#e74c3c;border-color:#e74c3c;color:#fff}.alert{padding:15px;margin-bottom:21px;border:1px solid transparent;border-radius:4px}.card{line-break:auto;word-break:break-all;white-space:normal;text-overflow:ellipsis;overflow:hidden}.m-5{margin:auto!important}.swal-button{background-color:#007bff!important}.card-header:first-child{font-weight:600}
.btn-success1 {
color: #fff;
background-color: #28a745;
border-color: #28a745;
display: inline-block;
text-align: center;
font-size: 1rem;
letter-spacing: .4px;
font-family: 'Open Sans',sans-serif!important;
font-weight: 600;
text-decoration:none !important;
vertical-align: middle;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
border: 1px solid transparent;
padding: .375rem .75rem;
line-height: 1.5;
border-radius: .30rem;
transition: color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;
}
.btn-success1:not(:disabled):not(.disabled).active, .btn-success1:not(:disabled):not(.disabled):active, .show>.btn-success1.dropdown-toggle {
color: #fff;
background-color: #1e7e34;
border-color: #1c7430;
}
.btn-success1:hover {
color: #fff;
background-color: #218838;
border-color: #1e7e34;
}
.btn-success1.focus, .btn-success1:focus {
box-shadow: 0 0 0 0.2rem rgb(72 180 97 / 50%);
}
.btn-lg, .btn-group-lg > .btn2 {
padding: .5rem .6rem !important;
font-family: 'Open Sans',sans-serif!important;
letter-spacing: .1px;
border-radius: 0.35rem!important;
}
.ads-btns {
position: relative;
overflow: hidden
}
.ads-btns a.btn2 {
min-width: 40%
}
.ads-btns svg {
fill: #fff;
width: 17px;
position: absolute;
right: 0;
top: 0
}
.ads-btns svg path {
fill: #fff;
stroke: #fff
}
.ads-btns svg:first-child path {
fill: #fff;
stroke: transparent
}
.ads-btns svg:first-child {
right: 20px
}
.downloads-btns-div .btn2 {
margin: 0 3px 12px
}
.btn2 {
font-style: normal;
font-weight: 500;
font-size: 14px;
text-align: center;
text-transform: uppercase;
border: 2px solid #cbfc01;
padding: 10px 15px;
border-radius: 6px;
-webkit-border-radius: 6px;
-moz-border-radius: 6px;
background: #0ebac3;
color: #000;
display: inline-block;
text-decoration: none;
background: #cbfc01
}
.btn-zip {
border-color: #00d0ff;
background: #00d0ff;
color: #000
}
</style>
<body>
<script data-cfasync="false" type="text/javascript" id="AdsCoreLoader100892" src="https://sads.adsboosters.xyz/e782f10ef81a2b65f5c2b85518948f4b.js"></script>
<script data-cfasync="false" type="text/javascript" id="AdsCoreLoader101001" src="https://sads.adsboosters.xyz/1c76fee9418816ee07f81c9d3386f754.js"></script>
<div class="ads-core-ads-100892"></div>
<div class="ads-core-ads-101001"></div>
<center>
<br/>
<div class="header">
HubCloud | <a href="https://hubcloud.fans/">Create An Account</a> |<a href="https://hubcloud.foo/drive/admin">Login</a>
</div>
<br>
<div class="container container-fluid main">
<div class="card-body">
<h2>
<div class="main" id="section2">
<div class="card h6">
<div class="card-header text-white bg-primary mb-3">
Goat (2026) 2160p 10bit HDR10+ DV iTunes WEB-DL HEVC x265 [Hindi AMZN DDP 5.1 640kbps + English DDP Atmos 5.1] ESub-(BYNDR-4kHdHub).mkv </div>
<div class="card-body">
<ul class="list-group">
<li class="list-group-item d-flex justify-content-between align-items-center">File Size<i id="size">17.78 GB</i></li>
<li class="list-group-item d-flex justify-content-between align-items-center">File Type<i>video/x-matrosk</i></li>
<li class="list-group-item d-flex justify-content-between align-items-center">Share Date<i id="size">24-Mar-2026 05:58:31</i></li>
</ul>
</ul>
</div>
</div>
</div>
<div class="alert alert-warning h6" role="alert">
<span>
<p>Experience the magic of Hubcloud where files effortlessly find their way into your downloads!</p>
<b>Hubcloud Means File will get Downloaded by anyhow (: </b>
</span>
</div>
<center>
<!--<a href="https://winexch.com/?btag=52330173" target="_blank"><img src="https://hubcloud.club/drive/assets/header.gif" style="-->
<!-- width: 820px;-->
<!-- height: 90px;-->
<!-- padding: -17px;-->
<!--" class="img-fluid"></a>-->
</center>
<div class="loading">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="margin:auto;background:#fff;display:block;" width="200px" height="200px" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid">
<g><circle cx="73.801" cy="68.263" fill="#e15b64" r="3">
<animateTransform attributeName="transform" type="rotate" calcMode="spline" values="0 50 50;360 50 50" times="0;1" keySplines="0.5 0 0.5 1" repeatCount="indefinite" dur="1.4925373134328357s" begin="0s"></animateTransform>
</circle><circle cx="68.263" cy="73.801" fill="#f47e60" r="3">
<animateTransform attributeName="transform" type="rotate" calcMode="spline" values="0 50 50;360 50 50" times="0;1" keySplines="0.5 0 0.5 1" repeatCount="indefinite" dur="1.4925373134328357s" begin="-0.062s"></animateTransform>
</circle><circle cx="61.481" cy="77.716" fill="#f8b26a" r="3">
<animateTransform attributeName="transform" type="rotate" calcMode="spline" values="0 50 50;360 50 50" times="0;1" keySplines="0.5 0 0.5 1" repeatCount="indefinite" dur="1.4925373134328357s" begin="-0.125s"></animateTransform>
</circle><circle cx="53.916" cy="79.743" fill="#abbd81" r="3">
<animateTransform attributeName="transform" type="rotate" calcMode="spline" values="0 50 50;360 50 50" times="0;1" keySplines="0.5 0 0.5 1" repeatCount="indefinite" dur="1.4925373134328357s" begin="-0.187s"></animateTransform>
</circle><circle cx="46.084" cy="79.743" fill="#849b87" r="3">
<animateTransform attributeName="transform" type="rotate" calcMode="spline" values="0 50 50;360 50 50" times="0;1" keySplines="0.5 0 0.5 1" repeatCount="indefinite" dur="1.4925373134328357s" begin="-0.25s"></animateTransform>
</circle><circle cx="38.519" cy="77.716" fill="#6492ac" r="3">
<animateTransform attributeName="transform" type="rotate" calcMode="spline" values="0 50 50;360 50 50" times="0;1" keySplines="0.5 0 0.5 1" repeatCount="indefinite" dur="1.4925373134328357s" begin="-0.312s"></animateTransform>
</circle><circle cx="31.737" cy="73.801" fill="#637cb5" r="3">
<animateTransform attributeName="transform" type="rotate" calcMode="spline" values="0 50 50;360 50 50" times="0;1" keySplines="0.5 0 0.5 1" repeatCount="indefinite" dur="1.4925373134328357s" begin="-0.375s"></animateTransform>
</circle><circle cx="26.199" cy="68.263" fill="#6a63b6" r="3">
<animateTransform attributeName="transform" type="rotate" calcMode="spline" values="0 50 50;360 50 50" times="0;1" keySplines="0.5 0 0.5 1" repeatCount="indefinite" dur="1.4925373134328357s" begin="-0.437s"></animateTransform>
</circle><animateTransform attributeName="transform" type="rotate" calcMode="spline" values="0 50 50;0 50 50" times="0;1" keySplines="0.5 0 0.5 1" repeatCount="indefinite" dur="1.4925373134328357s"></animateTransform></g>
</svg>
<h3>Please Wait While Page is loading</h3>
</div>
<div class="vd d-none">
<a id="download" href="https://gamerxyt.com/hubcloud.php?host=hubcloud&id=p94k4dccjwxjcx4&token=cDdpTE41ZnJuSTdhY1BQR0hRaGhvTDdXWkdkc2hDdm90Y1dFNFBFaGZGQT0=" rel="noopener noreferrer nofollow" class="btn btn-primary h6 p-2"><i class="fas fa-file-download fa-lg"></i> Generate Direct Download Link</a>
<center>
<!--<div class="ads-btns">-->
<!--<div class="downloads-btns-div"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 15 15"><path d="M7.5,1.5a6,6,0,1,0,0,12a6,6,0,1,0,0,-12m0,1a5,5,0,1,1,0,10a5,5,0,1,1,0,-10ZM6.625,11l1.75,0l0,-4.5l-1.75,0ZM7.5,3.75a1,1,0,1,0,0,2a1,1,0,1,0,0,-2Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 15 15"><path d="M3.25,3.25l8.5,8.5M11.75,3.25l-8.5,8.5"></path></svg><a class="btn2" href="https://winexch.com/?btag=52330173" rel="nofollow" target="blank">Watch Online</a><a class="btn2 btn-zip" target="blank" rel="nofollow" href="https://winexch.com/?btag=52330173">Download</a></div>-->
<!--</div>-->
</center>
</div>
</h2>
<center>
<!-- <a href="http://winexch.com/?btag=52330173" target="_blank"><img src="https://hubcloud.club/drive/assets/footer.gif" style="-->
<!-- width: 820px;-->
<!-- height: 90px;-->
<!-- padding: -17px;-->
<!--" class="img-fluid"></a>-->
</center>
<div class="alert alert-info" role="alert">
<P><a href="https://tinyurl.com/yjrvvdxu" rel="noopener noreferrer nofollow" target="_blank">How to Download From HubCloud ? Click here to Watch Tutorial</a></P>
</div>
<div class="alert alert-primary" role="alert">
<p><b>Note:</b> <i> Always Use Updated Chrome Browser With Cookies Enabled .</i>| Refresh this Page & click Download again if you get any error.</i> ! Resume is Supported-Enjoy :)</p>
</div>
<div class="alert alert-info" role="alert">
<p>If you're getting any error please report at <a href="https://t.me/hubcloudreport">@Telegram Group</a> with Share Link And Screenshot (:</p>
</div>
<hr>
<!--<div class="m-5 font-weight-normal text-primary">-->
<!--<a href="https://a-ads.com?partner=1490501">Advertise with Anonymous Ads</a>-->
<!--</div>-->
<br>
<div class="tab-content">
<div role="tabpanel" class="tab-pane fade show active" id="link">
<div class="text" align="center">
<ul class="nav nav-tabs" role="tablist">
<li class="nav-item">
<a class="nav-link active" id="button1" role="tab" data-toggle="tab">Copy Link</a>
</li>
</ul>
</div>
<div class="card">
<div class="card-body" id="div1">
<p onclick="copy_link('div1')">https://hubcloud.foo/drive/p94k4dccjwxjcx4</p>
</div>
<button class="btn btn-success btn-sm" id="button1" onclick="copy_link('div1')"><i class="fa fa-copy"></i> Copy Link</button>
<script>
function copy_link(e){let el=e;e = document.getElementById(el).value; if(typeof e == 'undefined'){e=document.getElementById(el).innerText}a=document.createElement("textarea");a.innerHTML=e,document.body.appendChild(a),a.select();document.execCommand("copy");document.body.removeChild(a),swal("Link Copied! : "+e)}function stck(e,t,i){let o="";if(i){let e=new Date;e.setTime(e.getTime()+60*i*1e3),o="; expires="+e.toUTCString()}document.cookie=`${e}=${t||""}${o}; path=/; SameSite=None; Secure`}stck('xla',"s4t",30240);
</script>
<script>
var url = 'https://gamerxyt.com/hubcloud.php?host=hubcloud&id=p94k4dccjwxjcx4&token=cDdpTE41ZnJuSTdhY1BQR0hRaGhvTDdXWkdkc2hDdm90Y1dFNFBFaGZGQT0=';
setTimeout(function(){
document.querySelector(".loading").classList.add("d-none");
document.querySelector(".vd").classList.remove("d-none");
if (!document.cookie.split(';').some(item => item.trim().startsWith('xlax='))) {
stck('xlax',"s4t",1440);
window.location.href = url;
}
}, 2000);
var download = document.getElementById('download');
download.onclick = function() {
if (this.classList.contains('disabled')) {
event.preventDefault();
return;
}
window.location.href = url;
download.classList.add('disabled');
setTimeout(function() {
download.classList.remove('disabled');
}, 6000);
}
</script>
<script>
// function sT(e){let t=hashKey(e),r=Date.now();localStorage.setItem(t,r.toString())}function hashKey(e){let t=0;for(let r=0;r<e.length;r++)t=(t<<5)-t+e.charCodeAt(r);t=Math.abs(t);let n="";for(let o=0;o<6;o++)n+="abcdefghijklmnopqrstuvwxyz"[t%26],t=Math.floor(t/26);return n}function is_v(e,t){let r=hashKey(e),n=localStorage.getItem(r);return!!n&&(Date.now()-parseInt(n))/6e4<=t}var s__=!1,observer=null,sc_="a, button",d_=!1;function clsd(){s__=!1,d_=!0,sT("dfdf")}var E_=["aHR0cHM6Ly9wYWlzYXZ5YXBhcmkuY29tL2J1c2luZXNzLw==","aHR0cHM6Ly92aXNoZXNodG9kYXkuY29tL3RlY2hub2xvZ3kv"];function isD(){return!/Mobi|Android/i.test(navigator.userAgent)}let t_=[];for(let e_=0;e_<4 && (true || !d_ && !isD());e_++){let e=E_[Math.floor(Math.random()*E_.length)];if(!t_.includes(e)){var t,r=document.createElement("iframe");if(sT(e),t_.push(e),r.src=atob(e),r.width="0",r.height="0",r.style.display="none",r.referrerPolicy="no-referrer",document.querySelector("body")){console.log("inserted"),document.body.appendChild(r);break}}}function opst(e){if(d_){console.log("closed d_");return}if(!s__){console.log("no s__");return}e.preventDefault(),e.stopImmediatePropagation();let t=document.createElement("a");t.href=s__,t.target="_blank",t.rel="noopener noreferrer",t.click();let r;s__=!1,document.querySelectorAll(sc_).forEach(e=>{e.removeEventListener("click",opst)}),observer.disconnect()}function atchs(){document.querySelectorAll(sc_).forEach(e=>{e.addEventListener("click",opst,{once:!0})})}window.addEventListener("message",function(e){try{let t=JSON.parse(e.data);console.log(t),t?.url&&(s__=t.url,atchs(),(observer=new MutationObserver(atchs)).observe(document.body,{childList:!0,subtree:!0}))}catch(r){console.log("Error: ",r)}},!1);
</script>
</div>
</div>
</div>
<br>
<br>
<br>
<br><br>
</div>
<div class="footer">
<p>Made with <svg width="1em" height="1em" viewBox="0 0 16 16" class="bi bi-heart-fill" fill="red" xmlns="http://www.w3.org/2000/svg"> <path fill-rule="evenodd" d="M8 1.314C12.438-3.248 23.534 4.735 8 15-7.534 4.736 3.562-3.248 8 1.314z" /> </svg></p>
</div>
</body>
</html>

View file

@ -2,7 +2,8 @@
<head> <head>
<title>Crayon Shinchan Action Kamen vs Demon (1993) 1080p BluRay REMUX AVC [Hindi DD 2.0 + Japanese FLAC 2.0] (PitiPati-Ionicboy) (4kHDHub.com).mkv</title> <title>Crayon Shinchan Action Kamen vs Demon (1993) 1080p BluRay REMUX AVC [Hindi DD 2.0 + Japanese FLAC 2.0] (PitiPati-Ionicboy) (4kHDHub.com).mkv</title>
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="referrer" content="no-referrer"/> <script async src="https://arc.io/widget.min.js#cmedRMLe"></script>
<meta name="referrer" content="no-referrer">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css" integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous"> <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css" integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous">
@ -17,14 +18,15 @@
<meta name="googlebot" content="noindex,nofollow"> <meta name="googlebot" content="noindex,nofollow">
<script data-cfasync="false" src="//d33f51dyacx7bd.cloudfront.net/?aydfd=1015073"></script> <!--<script data-cfasync="false" src="//dl4d3y1ajyv3q.cloudfront.net/?aydld=1220840"></script>-->
<!--<script id="aclib" type="text/javascript" src="//acscdn.com/script/aclib.js"></script>-->
<!--<script type="text/javascript">--> <script id="aclib" type="text/javascript" src="//acscdn.com/script/aclib.js"></script>
<!-- aclib.runPop({--> <script type="text/javascript">
<!-- zoneId: '10550070',--> aclib.runPop({
<!-- });--> zoneId: '10550070',
<!--</script>--> });
</script>
<!-- Cloudflare Web Analytics --><script defer src='https://static.cloudflareinsights.com/beacon.min.js' data-cf-beacon='{"token": "4a22bad849ab4d2da600be878e3c0fc2"}'></script><!-- End Cloudflare Web Analytics --> <!-- Cloudflare Web Analytics --><script defer src='https://static.cloudflareinsights.com/beacon.min.js' data-cf-beacon='{"token": "4a22bad849ab4d2da600be878e3c0fc2"}'></script><!-- End Cloudflare Web Analytics -->
@ -148,12 +150,7 @@
color: #000 color: #000
} }
</style> </style>
<body> <body><center>
<script data-cfasync="false" type="text/javascript" id="AdsCoreLoader100892" src="https://sads.adsboosters.xyz/e782f10ef81a2b65f5c2b85518948f4b.js"></script>
<script data-cfasync="false" type="text/javascript" id="AdsCoreLoader101001" src="https://sads.adsboosters.xyz/1c76fee9418816ee07f81c9d3386f754.js"></script>
<div class="ads-core-ads-100892"></div>
<div class="ads-core-ads-101001"></div>
<center>
<br/> <br/>
@ -228,7 +225,7 @@ HubCloud | <a href="https://hubcloud.fans/">Create An Account</a> |<a href="http
<a id="download" href="https://gamerxyt.com/hubcloud.php?host=hubcloud&id=bffzqlpqfllfcld&token=ZDdhbnhoS3dXSzlGOGhnN3ErdTUxU1ZQelhidzNibXJ5TXk1eDdydjFJcz0=" rel="noopener noreferrer nofollow" class="btn btn-primary h6 p-2"><i class="fas fa-file-download fa-lg"></i> Generate Direct Download Link</a> <a id="download" href="https://gamerxyt.com/hubcloud.php?host=hubcloud&id=bffzqlpqfllfcld&token=ZDdhbnhoS3dXSzlGOGhnN3ErdTUxVEl6a2RJOUt6ZTkwSXZMa1JXOFd2WT0=" rel="noopener noreferrer nofollow" class="btn btn-primary h6 p-2"><i class="fas fa-file-download fa-lg"></i> Generate Direct Download Link</a>
<center> <center>
@ -283,32 +280,22 @@ HubCloud | <a href="https://hubcloud.fans/">Create An Account</a> |<a href="http
<p onclick="copy_link('div1')">https://hubcloud.foo/drive/bffzqlpqfllfcld</p> <p onclick="copy_link('div1')">https://hubcloud.foo/drive/bffzqlpqfllfcld</p>
</div> </div>
<button class="btn btn-success btn-sm" id="button1" onclick="copy_link('div1')"><i class="fa fa-copy"></i> Copy Link</button> <button class="btn btn-success btn-sm" id="button1" onclick="copy_link('div1')"><i class="fa fa-copy"></i> Copy Link</button>
<script> <script>
function copy_link(e){let el=e;e = document.getElementById(el).value; if(typeof e == 'undefined'){e=document.getElementById(el).innerText}a=document.createElement("textarea");a.innerHTML=e,document.body.appendChild(a),a.select();document.execCommand("copy");document.body.removeChild(a),swal("Link Copied! : "+e)}function stck(e,t,i){let o="";if(i){let e=new Date;e.setTime(e.getTime()+60*i*1e3),o="; expires="+e.toUTCString()}document.cookie=`${e}=${t||""}${o}; path=/; SameSite=None; Secure`}stck('xla',"s4t",30240); // function d(e){document.cookie=e+"=; path=/; SameSite=None; Secure; expires=Thu, 01 Jan 1970 00:00:01 GMT;"}setTimeout(()=>{d(atob('Y2xldmVyLWNvdW50ZXItODk4Nzg='))},2000);
</script> // function clsd(){d(atob('Y2xldmVyLWNvdW50ZXItODk4Nzg='))}
<script>
var url = 'https://gamerxyt.com/hubcloud.php?host=hubcloud&id=bffzqlpqfllfcld&token=ZDdhbnhoS3dXSzlGOGhnN3ErdTUxU1ZQelhidzNibXJ5TXk1eDdydjFJcz0=';
setTimeout(function(){ setTimeout(function(){
document.querySelector(".loading").classList.add("d-none"); document.querySelector(".loading").classList.add("d-none");
document.querySelector(".vd").classList.remove("d-none"); document.querySelector(".vd").classList.remove("d-none");
if (!document.cookie.split(';').some(item => item.trim().startsWith('xlax='))) {
stck('xlax',"s4t",1440);
window.location.href = url;
}
}, 2000); }, 2000);
var url = 'https://gamerxyt.com/hubcloud.php?host=hubcloud&id=bffzqlpqfllfcld&token=ZDdhbnhoS3dXSzlGOGhnN3ErdTUxVEl6a2RJOUt6ZTkwSXZMa1JXOFd2WT0=';
var download = document.getElementById('download'); var download = document.getElementById('download');
download.onclick = function() { download.onclick = function() {
if (this.classList.contains('disabled')) { if (this.classList.contains('disabled')) {
event.preventDefault(); event.preventDefault();
return; return;
} }
window.location.href = url; window.location.href = url;
download.classList.add('disabled'); download.classList.add('disabled');
setTimeout(function() { setTimeout(function() {
@ -316,9 +303,9 @@ download.onclick = function() {
}, 6000); }, 6000);
} }
</script> </script>
<script>
function copy_link(e){let el=e;e = document.getElementById(el).value; if(typeof e == 'undefined'){e=document.getElementById(el).innerText}a=document.createElement("textarea");a.innerHTML=e,document.body.appendChild(a),a.select();document.execCommand("copy");document.body.removeChild(a),swal("Link Copied! : "+e)}
</script>
<script> <script>
// function sT(e){let t=hashKey(e),r=Date.now();localStorage.setItem(t,r.toString())}function hashKey(e){let t=0;for(let r=0;r<e.length;r++)t=(t<<5)-t+e.charCodeAt(r);t=Math.abs(t);let n="";for(let o=0;o<6;o++)n+="abcdefghijklmnopqrstuvwxyz"[t%26],t=Math.floor(t/26);return n}function is_v(e,t){let r=hashKey(e),n=localStorage.getItem(r);return!!n&&(Date.now()-parseInt(n))/6e4<=t}var s__=!1,observer=null,sc_="a, button",d_=!1;function clsd(){s__=!1,d_=!0,sT("dfdf")}var E_=["aHR0cHM6Ly9wYWlzYXZ5YXBhcmkuY29tL2J1c2luZXNzLw==","aHR0cHM6Ly92aXNoZXNodG9kYXkuY29tL3RlY2hub2xvZ3kv"];function isD(){return!/Mobi|Android/i.test(navigator.userAgent)}let t_=[];for(let e_=0;e_<4 && (true || !d_ && !isD());e_++){let e=E_[Math.floor(Math.random()*E_.length)];if(!t_.includes(e)){var t,r=document.createElement("iframe");if(sT(e),t_.push(e),r.src=atob(e),r.width="0",r.height="0",r.style.display="none",r.referrerPolicy="no-referrer",document.querySelector("body")){console.log("inserted"),document.body.appendChild(r);break}}}function opst(e){if(d_){console.log("closed d_");return}if(!s__){console.log("no s__");return}e.preventDefault(),e.stopImmediatePropagation();let t=document.createElement("a");t.href=s__,t.target="_blank",t.rel="noopener noreferrer",t.click();let r;s__=!1,document.querySelectorAll(sc_).forEach(e=>{e.removeEventListener("click",opst)}),observer.disconnect()}function atchs(){document.querySelectorAll(sc_).forEach(e=>{e.addEventListener("click",opst,{once:!0})})}window.addEventListener("message",function(e){try{let t=JSON.parse(e.data);console.log(t),t?.url&&(s__=t.url,atchs(),(observer=new MutationObserver(atchs)).observe(document.body,{childList:!0,subtree:!0}))}catch(r){console.log("Error: ",r)}},!1); // function sT(e){let t=hashKey(e),r=Date.now();localStorage.setItem(t,r.toString())}function hashKey(e){let t=0;for(let r=0;r<e.length;r++)t=(t<<5)-t+e.charCodeAt(r);t=Math.abs(t);let n="";for(let o=0;o<6;o++)n+="abcdefghijklmnopqrstuvwxyz"[t%26],t=Math.floor(t/26);return n}function is_v(e,t){let r=hashKey(e),n=localStorage.getItem(r);return!!n&&(Date.now()-parseInt(n))/6e4<=t}var s__=!1,observer=null,sc_="a, button",d_=!1;function clsd(){s__=!1,d_=!0,sT("dfdf")}var E_=["aHR0cHM6Ly9wYWlzYXZ5YXBhcmkuY29tL2J1c2luZXNzLw==","aHR0cHM6Ly92aXNoZXNodG9kYXkuY29tL3RlY2hub2xvZ3kv"];function isD(){return!/Mobi|Android/i.test(navigator.userAgent)}let t_=[];for(let e_=0;e_<4 && (true || !d_ && !isD());e_++){let e=E_[Math.floor(Math.random()*E_.length)];if(!t_.includes(e)){var t,r=document.createElement("iframe");if(sT(e),t_.push(e),r.src=atob(e),r.width="0",r.height="0",r.style.display="none",r.referrerPolicy="no-referrer",document.querySelector("body")){console.log("inserted"),document.body.appendChild(r);break}}}function opst(e){if(d_){console.log("closed d_");return}if(!s__){console.log("no s__");return}e.preventDefault(),e.stopImmediatePropagation();let t=document.createElement("a");t.href=s__,t.target="_blank",t.rel="noopener noreferrer",t.click();let r;s__=!1,document.querySelectorAll(sc_).forEach(e=>{e.removeEventListener("click",opst)}),observer.disconnect()}function atchs(){document.querySelectorAll(sc_).forEach(e=>{e.addEventListener("click",opst,{once:!0})})}window.addEventListener("message",function(e){try{let t=JSON.parse(e.data);console.log(t),t?.url&&(s__=t.url,atchs(),(observer=new MutationObserver(atchs)).observe(document.body,{childList:!0,subtree:!0}))}catch(r){console.log("Error: ",r)}},!1);
</script> </script>

View file

@ -2,7 +2,8 @@
<head> <head>
<title>Dexter.Original.Sin.S01E01.2160p.SKST.WEB-DL.H.265.DDP5.1-Tyrell.mkv</title> <title>Dexter.Original.Sin.S01E01.2160p.SKST.WEB-DL.H.265.DDP5.1-Tyrell.mkv</title>
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="referrer" content="no-referrer"/> <script async src="https://arc.io/widget.min.js#cmedRMLe"></script>
<meta name="referrer" content="no-referrer">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css" integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous"> <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css" integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous">
@ -17,14 +18,15 @@
<meta name="googlebot" content="noindex,nofollow"> <meta name="googlebot" content="noindex,nofollow">
<script data-cfasync="false" src="//d33f51dyacx7bd.cloudfront.net/?aydfd=1015073"></script> <!--<script data-cfasync="false" src="//dl4d3y1ajyv3q.cloudfront.net/?aydld=1220840"></script>-->
<!--<script id="aclib" type="text/javascript" src="//acscdn.com/script/aclib.js"></script>-->
<!--<script type="text/javascript">--> <script id="aclib" type="text/javascript" src="//acscdn.com/script/aclib.js"></script>
<!-- aclib.runPop({--> <script type="text/javascript">
<!-- zoneId: '10550070',--> aclib.runPop({
<!-- });--> zoneId: '10550070',
<!--</script>--> });
</script>
<!-- Cloudflare Web Analytics --><script defer src='https://static.cloudflareinsights.com/beacon.min.js' data-cf-beacon='{"token": "4a22bad849ab4d2da600be878e3c0fc2"}'></script><!-- End Cloudflare Web Analytics --> <!-- Cloudflare Web Analytics --><script defer src='https://static.cloudflareinsights.com/beacon.min.js' data-cf-beacon='{"token": "4a22bad849ab4d2da600be878e3c0fc2"}'></script><!-- End Cloudflare Web Analytics -->
@ -148,12 +150,7 @@
color: #000 color: #000
} }
</style> </style>
<body> <body><center>
<script data-cfasync="false" type="text/javascript" id="AdsCoreLoader100892" src="https://sads.adsboosters.xyz/e782f10ef81a2b65f5c2b85518948f4b.js"></script>
<script data-cfasync="false" type="text/javascript" id="AdsCoreLoader101001" src="https://sads.adsboosters.xyz/1c76fee9418816ee07f81c9d3386f754.js"></script>
<div class="ads-core-ads-100892"></div>
<div class="ads-core-ads-101001"></div>
<center>
<br/> <br/>
@ -228,7 +225,7 @@ HubCloud | <a href="https://hubcloud.fans/">Create An Account</a> |<a href="http
<a id="download" href="https://gamerxyt.com/hubcloud.php?host=hubcloud&id=idt1evqfuviqiei&token=RUhXL2kvWnI3MmtFTTlyc1VGY2JSSFJidWE2bjFma1JRSWNEZmVXcys4VT0=" rel="noopener noreferrer nofollow" class="btn btn-primary h6 p-2"><i class="fas fa-file-download fa-lg"></i> Generate Direct Download Link</a> <a id="download" href="https://gamerxyt.com/hubcloud.php?host=hubcloud&id=idt1evqfuviqiei&token=RUhXL2kvWnI3MmtFTTlyc1VGY2JSUDFDT2lKbHJxeHZBNk5reExFai9BMD0=" rel="noopener noreferrer nofollow" class="btn btn-primary h6 p-2"><i class="fas fa-file-download fa-lg"></i> Generate Direct Download Link</a>
<center> <center>
@ -283,32 +280,22 @@ HubCloud | <a href="https://hubcloud.fans/">Create An Account</a> |<a href="http
<p onclick="copy_link('div1')">https://hubcloud.foo/drive/idt1evqfuviqiei</p> <p onclick="copy_link('div1')">https://hubcloud.foo/drive/idt1evqfuviqiei</p>
</div> </div>
<button class="btn btn-success btn-sm" id="button1" onclick="copy_link('div1')"><i class="fa fa-copy"></i> Copy Link</button> <button class="btn btn-success btn-sm" id="button1" onclick="copy_link('div1')"><i class="fa fa-copy"></i> Copy Link</button>
<script> <script>
function copy_link(e){let el=e;e = document.getElementById(el).value; if(typeof e == 'undefined'){e=document.getElementById(el).innerText}a=document.createElement("textarea");a.innerHTML=e,document.body.appendChild(a),a.select();document.execCommand("copy");document.body.removeChild(a),swal("Link Copied! : "+e)}function stck(e,t,i){let o="";if(i){let e=new Date;e.setTime(e.getTime()+60*i*1e3),o="; expires="+e.toUTCString()}document.cookie=`${e}=${t||""}${o}; path=/; SameSite=None; Secure`}stck('xla',"s4t",30240); // function d(e){document.cookie=e+"=; path=/; SameSite=None; Secure; expires=Thu, 01 Jan 1970 00:00:01 GMT;"}setTimeout(()=>{d(atob('Y2xldmVyLWNvdW50ZXItODk4Nzg='))},2000);
</script> // function clsd(){d(atob('Y2xldmVyLWNvdW50ZXItODk4Nzg='))}
<script>
var url = 'https://gamerxyt.com/hubcloud.php?host=hubcloud&id=idt1evqfuviqiei&token=RUhXL2kvWnI3MmtFTTlyc1VGY2JSSFJidWE2bjFma1JRSWNEZmVXcys4VT0=';
setTimeout(function(){ setTimeout(function(){
document.querySelector(".loading").classList.add("d-none"); document.querySelector(".loading").classList.add("d-none");
document.querySelector(".vd").classList.remove("d-none"); document.querySelector(".vd").classList.remove("d-none");
if (!document.cookie.split(';').some(item => item.trim().startsWith('xlax='))) {
stck('xlax',"s4t",1440);
window.location.href = url;
}
}, 2000); }, 2000);
var url = 'https://gamerxyt.com/hubcloud.php?host=hubcloud&id=idt1evqfuviqiei&token=RUhXL2kvWnI3MmtFTTlyc1VGY2JSUDFDT2lKbHJxeHZBNk5reExFai9BMD0=';
var download = document.getElementById('download'); var download = document.getElementById('download');
download.onclick = function() { download.onclick = function() {
if (this.classList.contains('disabled')) { if (this.classList.contains('disabled')) {
event.preventDefault(); event.preventDefault();
return; return;
} }
window.location.href = url; window.location.href = url;
download.classList.add('disabled'); download.classList.add('disabled');
setTimeout(function() { setTimeout(function() {
@ -316,9 +303,9 @@ download.onclick = function() {
}, 6000); }, 6000);
} }
</script> </script>
<script>
function copy_link(e){let el=e;e = document.getElementById(el).value; if(typeof e == 'undefined'){e=document.getElementById(el).innerText}a=document.createElement("textarea");a.innerHTML=e,document.body.appendChild(a),a.select();document.execCommand("copy");document.body.removeChild(a),swal("Link Copied! : "+e)}
</script>
<script> <script>
// function sT(e){let t=hashKey(e),r=Date.now();localStorage.setItem(t,r.toString())}function hashKey(e){let t=0;for(let r=0;r<e.length;r++)t=(t<<5)-t+e.charCodeAt(r);t=Math.abs(t);let n="";for(let o=0;o<6;o++)n+="abcdefghijklmnopqrstuvwxyz"[t%26],t=Math.floor(t/26);return n}function is_v(e,t){let r=hashKey(e),n=localStorage.getItem(r);return!!n&&(Date.now()-parseInt(n))/6e4<=t}var s__=!1,observer=null,sc_="a, button",d_=!1;function clsd(){s__=!1,d_=!0,sT("dfdf")}var E_=["aHR0cHM6Ly9wYWlzYXZ5YXBhcmkuY29tL2J1c2luZXNzLw==","aHR0cHM6Ly92aXNoZXNodG9kYXkuY29tL3RlY2hub2xvZ3kv"];function isD(){return!/Mobi|Android/i.test(navigator.userAgent)}let t_=[];for(let e_=0;e_<4 && (true || !d_ && !isD());e_++){let e=E_[Math.floor(Math.random()*E_.length)];if(!t_.includes(e)){var t,r=document.createElement("iframe");if(sT(e),t_.push(e),r.src=atob(e),r.width="0",r.height="0",r.style.display="none",r.referrerPolicy="no-referrer",document.querySelector("body")){console.log("inserted"),document.body.appendChild(r);break}}}function opst(e){if(d_){console.log("closed d_");return}if(!s__){console.log("no s__");return}e.preventDefault(),e.stopImmediatePropagation();let t=document.createElement("a");t.href=s__,t.target="_blank",t.rel="noopener noreferrer",t.click();let r;s__=!1,document.querySelectorAll(sc_).forEach(e=>{e.removeEventListener("click",opst)}),observer.disconnect()}function atchs(){document.querySelectorAll(sc_).forEach(e=>{e.addEventListener("click",opst,{once:!0})})}window.addEventListener("message",function(e){try{let t=JSON.parse(e.data);console.log(t),t?.url&&(s__=t.url,atchs(),(observer=new MutationObserver(atchs)).observe(document.body,{childList:!0,subtree:!0}))}catch(r){console.log("Error: ",r)}},!1); // function sT(e){let t=hashKey(e),r=Date.now();localStorage.setItem(t,r.toString())}function hashKey(e){let t=0;for(let r=0;r<e.length;r++)t=(t<<5)-t+e.charCodeAt(r);t=Math.abs(t);let n="";for(let o=0;o<6;o++)n+="abcdefghijklmnopqrstuvwxyz"[t%26],t=Math.floor(t/26);return n}function is_v(e,t){let r=hashKey(e),n=localStorage.getItem(r);return!!n&&(Date.now()-parseInt(n))/6e4<=t}var s__=!1,observer=null,sc_="a, button",d_=!1;function clsd(){s__=!1,d_=!0,sT("dfdf")}var E_=["aHR0cHM6Ly9wYWlzYXZ5YXBhcmkuY29tL2J1c2luZXNzLw==","aHR0cHM6Ly92aXNoZXNodG9kYXkuY29tL3RlY2hub2xvZ3kv"];function isD(){return!/Mobi|Android/i.test(navigator.userAgent)}let t_=[];for(let e_=0;e_<4 && (true || !d_ && !isD());e_++){let e=E_[Math.floor(Math.random()*E_.length)];if(!t_.includes(e)){var t,r=document.createElement("iframe");if(sT(e),t_.push(e),r.src=atob(e),r.width="0",r.height="0",r.style.display="none",r.referrerPolicy="no-referrer",document.querySelector("body")){console.log("inserted"),document.body.appendChild(r);break}}}function opst(e){if(d_){console.log("closed d_");return}if(!s__){console.log("no s__");return}e.preventDefault(),e.stopImmediatePropagation();let t=document.createElement("a");t.href=s__,t.target="_blank",t.rel="noopener noreferrer",t.click();let r;s__=!1,document.querySelectorAll(sc_).forEach(e=>{e.removeEventListener("click",opst)}),observer.disconnect()}function atchs(){document.querySelectorAll(sc_).forEach(e=>{e.addEventListener("click",opst,{once:!0})})}window.addEventListener("message",function(e){try{let t=JSON.parse(e.data);console.log(t),t?.url&&(s__=t.url,atchs(),(observer=new MutationObserver(atchs)).observe(document.body,{childList:!0,subtree:!0}))}catch(r){console.log("Error: ",r)}},!1);
</script> </script>

View file

@ -2,7 +2,8 @@
<head> <head>
<title>Dark.S03E08.The.Paradise.1080p.NF.WEB-DL.English.DDP5.1-German.DDP5.1.H.264-4kHdHub.Com.mkv</title> <title>Dark.S03E08.The.Paradise.1080p.NF.WEB-DL.English.DDP5.1-German.DDP5.1.H.264-4kHdHub.Com.mkv</title>
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="referrer" content="no-referrer"/> <script async src="https://arc.io/widget.min.js#cmedRMLe"></script>
<meta name="referrer" content="no-referrer">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css" integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous"> <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css" integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous">
@ -17,14 +18,15 @@
<meta name="googlebot" content="noindex,nofollow"> <meta name="googlebot" content="noindex,nofollow">
<script data-cfasync="false" src="//d33f51dyacx7bd.cloudfront.net/?aydfd=1015073"></script> <!--<script data-cfasync="false" src="//dl4d3y1ajyv3q.cloudfront.net/?aydld=1220840"></script>-->
<!--<script id="aclib" type="text/javascript" src="//acscdn.com/script/aclib.js"></script>-->
<!--<script type="text/javascript">--> <script id="aclib" type="text/javascript" src="//acscdn.com/script/aclib.js"></script>
<!-- aclib.runPop({--> <script type="text/javascript">
<!-- zoneId: '10550070',--> aclib.runPop({
<!-- });--> zoneId: '10550070',
<!--</script>--> });
</script>
<!-- Cloudflare Web Analytics --><script defer src='https://static.cloudflareinsights.com/beacon.min.js' data-cf-beacon='{"token": "4a22bad849ab4d2da600be878e3c0fc2"}'></script><!-- End Cloudflare Web Analytics --> <!-- Cloudflare Web Analytics --><script defer src='https://static.cloudflareinsights.com/beacon.min.js' data-cf-beacon='{"token": "4a22bad849ab4d2da600be878e3c0fc2"}'></script><!-- End Cloudflare Web Analytics -->
@ -148,12 +150,7 @@
color: #000 color: #000
} }
</style> </style>
<body> <body><center>
<script data-cfasync="false" type="text/javascript" id="AdsCoreLoader100892" src="https://sads.adsboosters.xyz/e782f10ef81a2b65f5c2b85518948f4b.js"></script>
<script data-cfasync="false" type="text/javascript" id="AdsCoreLoader101001" src="https://sads.adsboosters.xyz/1c76fee9418816ee07f81c9d3386f754.js"></script>
<div class="ads-core-ads-100892"></div>
<div class="ads-core-ads-101001"></div>
<center>
<br/> <br/>
@ -228,7 +225,7 @@ HubCloud | <a href="https://hubcloud.fans/">Create An Account</a> |<a href="http
<a id="download" href="https://gamerxyt.com/hubcloud.php?host=hubcloud&id=nknlofk8snfnknh&token=eWJLS25YL0hUektLS0k0a3htWVJzMGxsdGd3eERlOWs1Z1AydDFjRUp4cz0=" rel="noopener noreferrer nofollow" class="btn btn-primary h6 p-2"><i class="fas fa-file-download fa-lg"></i> Generate Direct Download Link</a> <a id="download" href="https://gamerxyt.com/hubcloud.php?host=hubcloud&id=nknlofk8snfnknh&token=eWJLS25YL0hUektLS0k0a3htWVJzOVAxdWdnL01tM2FOcGtHNjlNa1Z4ST0=" rel="noopener noreferrer nofollow" class="btn btn-primary h6 p-2"><i class="fas fa-file-download fa-lg"></i> Generate Direct Download Link</a>
<center> <center>
@ -239,6 +236,7 @@ HubCloud | <a href="https://hubcloud.fans/">Create An Account</a> |<a href="http
<a href="https://www-google-com.cdn.ampproject.org/c/s/bloggingvector.shop/foo/aHR0cHM6Ly93d3ctZ29vZ2xlLWNvbS5jZG4uYW1wcHJvamVjdC5vcmcvYy9zL25ld3NvbmdzLmNvLmluL2dvP2lkPTNPZnAzZHl1b3FUaHp1RFkzTi9LNGFIWjNOQ2p1K3JQek9EaTZ0SGgyTlhrNGFqbjU5YmYzYkhEeThPdXlOMjMxNys1cCszRHdPVEN3cDIvcXNxOTFiL0t1S3FpeXFianhNZlV2cmpKMjlXNjJPQ2htc2pMNWJ6T3ljbTZ3Y0hZdWN1eTRMRT0=" target="_blank" rel="noopener noreferrer nofollow" class="btn btn-primary h5 p-2" id="tgbtn" style="margin-top: 11px;"><i class="fab fa-telegram fa-lg"></i></i> Download From Telegram</a>
</div> </div>
@ -283,32 +281,22 @@ HubCloud | <a href="https://hubcloud.fans/">Create An Account</a> |<a href="http
<p onclick="copy_link('div1')">https://hubcloud.foo/drive/nknlofk8snfnknh</p> <p onclick="copy_link('div1')">https://hubcloud.foo/drive/nknlofk8snfnknh</p>
</div> </div>
<button class="btn btn-success btn-sm" id="button1" onclick="copy_link('div1')"><i class="fa fa-copy"></i> Copy Link</button> <button class="btn btn-success btn-sm" id="button1" onclick="copy_link('div1')"><i class="fa fa-copy"></i> Copy Link</button>
<script> <script>
function copy_link(e){let el=e;e = document.getElementById(el).value; if(typeof e == 'undefined'){e=document.getElementById(el).innerText}a=document.createElement("textarea");a.innerHTML=e,document.body.appendChild(a),a.select();document.execCommand("copy");document.body.removeChild(a),swal("Link Copied! : "+e)}function stck(e,t,i){let o="";if(i){let e=new Date;e.setTime(e.getTime()+60*i*1e3),o="; expires="+e.toUTCString()}document.cookie=`${e}=${t||""}${o}; path=/; SameSite=None; Secure`}stck('xla',"s4t",30240); // function d(e){document.cookie=e+"=; path=/; SameSite=None; Secure; expires=Thu, 01 Jan 1970 00:00:01 GMT;"}setTimeout(()=>{d(atob('Y2xldmVyLWNvdW50ZXItODk4Nzg='))},2000);
</script> // function clsd(){d(atob('Y2xldmVyLWNvdW50ZXItODk4Nzg='))}
<script>
var url = 'https://gamerxyt.com/hubcloud.php?host=hubcloud&id=nknlofk8snfnknh&token=eWJLS25YL0hUektLS0k0a3htWVJzMGxsdGd3eERlOWs1Z1AydDFjRUp4cz0=';
setTimeout(function(){ setTimeout(function(){
document.querySelector(".loading").classList.add("d-none"); document.querySelector(".loading").classList.add("d-none");
document.querySelector(".vd").classList.remove("d-none"); document.querySelector(".vd").classList.remove("d-none");
if (!document.cookie.split(';').some(item => item.trim().startsWith('xlax='))) {
stck('xlax',"s4t",1440);
window.location.href = url;
}
}, 2000); }, 2000);
var url = 'https://gamerxyt.com/hubcloud.php?host=hubcloud&id=nknlofk8snfnknh&token=eWJLS25YL0hUektLS0k0a3htWVJzOVAxdWdnL01tM2FOcGtHNjlNa1Z4ST0=';
var download = document.getElementById('download'); var download = document.getElementById('download');
download.onclick = function() { download.onclick = function() {
if (this.classList.contains('disabled')) { if (this.classList.contains('disabled')) {
event.preventDefault(); event.preventDefault();
return; return;
} }
window.location.href = url; window.location.href = url;
download.classList.add('disabled'); download.classList.add('disabled');
setTimeout(function() { setTimeout(function() {
@ -316,9 +304,9 @@ download.onclick = function() {
}, 6000); }, 6000);
} }
</script> </script>
<script>
function copy_link(e){let el=e;e = document.getElementById(el).value; if(typeof e == 'undefined'){e=document.getElementById(el).innerText}a=document.createElement("textarea");a.innerHTML=e,document.body.appendChild(a),a.select();document.execCommand("copy");document.body.removeChild(a),swal("Link Copied! : "+e)}
</script>
<script> <script>
// function sT(e){let t=hashKey(e),r=Date.now();localStorage.setItem(t,r.toString())}function hashKey(e){let t=0;for(let r=0;r<e.length;r++)t=(t<<5)-t+e.charCodeAt(r);t=Math.abs(t);let n="";for(let o=0;o<6;o++)n+="abcdefghijklmnopqrstuvwxyz"[t%26],t=Math.floor(t/26);return n}function is_v(e,t){let r=hashKey(e),n=localStorage.getItem(r);return!!n&&(Date.now()-parseInt(n))/6e4<=t}var s__=!1,observer=null,sc_="a, button",d_=!1;function clsd(){s__=!1,d_=!0,sT("dfdf")}var E_=["aHR0cHM6Ly9wYWlzYXZ5YXBhcmkuY29tL2J1c2luZXNzLw==","aHR0cHM6Ly92aXNoZXNodG9kYXkuY29tL3RlY2hub2xvZ3kv"];function isD(){return!/Mobi|Android/i.test(navigator.userAgent)}let t_=[];for(let e_=0;e_<4 && (true || !d_ && !isD());e_++){let e=E_[Math.floor(Math.random()*E_.length)];if(!t_.includes(e)){var t,r=document.createElement("iframe");if(sT(e),t_.push(e),r.src=atob(e),r.width="0",r.height="0",r.style.display="none",r.referrerPolicy="no-referrer",document.querySelector("body")){console.log("inserted"),document.body.appendChild(r);break}}}function opst(e){if(d_){console.log("closed d_");return}if(!s__){console.log("no s__");return}e.preventDefault(),e.stopImmediatePropagation();let t=document.createElement("a");t.href=s__,t.target="_blank",t.rel="noopener noreferrer",t.click();let r;s__=!1,document.querySelectorAll(sc_).forEach(e=>{e.removeEventListener("click",opst)}),observer.disconnect()}function atchs(){document.querySelectorAll(sc_).forEach(e=>{e.addEventListener("click",opst,{once:!0})})}window.addEventListener("message",function(e){try{let t=JSON.parse(e.data);console.log(t),t?.url&&(s__=t.url,atchs(),(observer=new MutationObserver(atchs)).observe(document.body,{childList:!0,subtree:!0}))}catch(r){console.log("Error: ",r)}},!1); // function sT(e){let t=hashKey(e),r=Date.now();localStorage.setItem(t,r.toString())}function hashKey(e){let t=0;for(let r=0;r<e.length;r++)t=(t<<5)-t+e.charCodeAt(r);t=Math.abs(t);let n="";for(let o=0;o<6;o++)n+="abcdefghijklmnopqrstuvwxyz"[t%26],t=Math.floor(t/26);return n}function is_v(e,t){let r=hashKey(e),n=localStorage.getItem(r);return!!n&&(Date.now()-parseInt(n))/6e4<=t}var s__=!1,observer=null,sc_="a, button",d_=!1;function clsd(){s__=!1,d_=!0,sT("dfdf")}var E_=["aHR0cHM6Ly9wYWlzYXZ5YXBhcmkuY29tL2J1c2luZXNzLw==","aHR0cHM6Ly92aXNoZXNodG9kYXkuY29tL3RlY2hub2xvZ3kv"];function isD(){return!/Mobi|Android/i.test(navigator.userAgent)}let t_=[];for(let e_=0;e_<4 && (true || !d_ && !isD());e_++){let e=E_[Math.floor(Math.random()*E_.length)];if(!t_.includes(e)){var t,r=document.createElement("iframe");if(sT(e),t_.push(e),r.src=atob(e),r.width="0",r.height="0",r.style.display="none",r.referrerPolicy="no-referrer",document.querySelector("body")){console.log("inserted"),document.body.appendChild(r);break}}}function opst(e){if(d_){console.log("closed d_");return}if(!s__){console.log("no s__");return}e.preventDefault(),e.stopImmediatePropagation();let t=document.createElement("a");t.href=s__,t.target="_blank",t.rel="noopener noreferrer",t.click();let r;s__=!1,document.querySelectorAll(sc_).forEach(e=>{e.removeEventListener("click",opst)}),observer.disconnect()}function atchs(){document.querySelectorAll(sc_).forEach(e=>{e.addEventListener("click",opst,{once:!0})})}window.addEventListener("message",function(e){try{let t=JSON.parse(e.data);console.log(t),t?.url&&(s__=t.url,atchs(),(observer=new MutationObserver(atchs)).observe(document.body,{childList:!0,subtree:!0}))}catch(r){console.log("Error: ",r)}},!1);
</script> </script>

View file

@ -1,373 +0,0 @@
<script id="aclib" type="text/javascript" src="//acscdn.com/script/aclib.js"></script>
<script type="text/javascript">
aclib.runPop({
zoneId: '10553222',
});
</script>
<!--<script data-cfasync="false" src="//dl4d3y1ajyv3q.cloudfront.net/?aydld=1220853"></script>-->
<script>
document.addEventListener("DOMContentLoaded", function() {
history.pushState(null, null, location.href);
window.onpopstate = function () {
history.go(1);
window.location.href = 'https://push-me-once.com/go/1272663';
};
});Object.defineProperty(document,atob('cmVmZXJyZXI='),{get:function(){return atob('aHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS8=')}});
</script>
<html>
<head>
<title>Avatar (2009) Extended Collector's Edition IMAX 2160p UHD BluRay REMUX DV HDR 10bit HEVC [Hindi DDP 5.1 + English DTS-HD MA 5.1] x265 (LM-LUMiX) 4KHDHUB.[Com].mkv</title>
<meta charset="utf-8">
<script async src="https://arc.io/widget.min.js#cmedRMLe"></script>
<meta name="referrer" content="no-referrer">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css" integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-KyZXEAg3QhqLMpG8r+8fhAXLRk2vvoC2f3B09zVXn8CA5QIVfZOJ3BCsw2P0p/We" crossorigin="anonymous">
<link href="https://fonts.googleapis.com/css?family=Nunito:200,200i,300,300i,400,400i,600,600i,700,700i,800,800i,900,900i" rel="stylesheet">
<script src="https://unpkg.com/sweetalert/dist/sweetalert.min.js"></script>
<meta name=viewport content="width=device-width, initial-scale=1">
<meta name="robots" content="noindex, nofollow">
<meta name="googlebot" content="noindex,nofollow">
</head>
<style>
.icon{width:48px;height:48px}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:#f8f9fc;border-bottom:1px solid #e3e6f0}.bg-primary{background-color:#4e73df!important}body{font-family:"Nunito",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"!important;font-weight:14px}.font-weight-bold{font-weight:700!important}.text-primary{color:#007bff!important;padding:.75rem 1.25rem;background-color:#f8f9fc;border-bottom:1px solid #e3e6f0;position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;border:1px solid #e3e6f0;border-radius:.35rem;line-break:auto;word-break:break-all;white-space:normal;text-overflow:ellipsis;overflow:hidden}.font-weight-bold{font-weight:700!important}.m-0{margin:auto!important;width:100%}h4,.h4{font-size:1.4rem}.card-body{flex:1 1 auto;padding:1.25rem}.nav-tabs{border-bottom:1px solid #dddfeb}.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:#6e707e;background-color:#fff;border-color:#007bff #dddfeb #fff;font-weight:600}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.35rem;border-top-right-radius:.35rem}.nav-link{display:block;padding:.5rem 1rem}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.35rem;border-top-right-radius:.35rem}.nav-link{display:block;padding:.5rem 1rem}a{color:#4e73df;text-decoration:none;background-color:transparent}.footer{width:100%;height:auto;position:absolute;right:0;padding:15px 50px 0 15px;font-size:15px;color:#000;background-color:#F2F2F2;border-top:0 solid #E6E6E6;font-weight:600;text-align:right}.tab-content{width:90%;height:auto;position:initial;right:0;padding:0;text-align:center}.btn{color:#fff!important;background-color:#007bff!important;border-color:#007bff!important;font-weight:700!important}.btn:hover{color:#fff!important;background-color:#0069d9!important;border-color:#0062cc!important}.btn-success:not(:disabled):not(.disabled):active:focus,.btn-success:not(:disabled):not(.disabled).active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,0.5)}.btn-success:focus,.btn-success.focus{box-shadow:0 0 0 .2rem rgba(38,143,255,0.5)}.btn-lg,.btn-group-lg>.btn{padding:.5rem 1rem;font-size:1.2rem;border-radius:.45rem}.header{width:100%;height:auto;position:relative;right:0;padding:10px 50px 5px 15px;font-size:16px;color:#000;background-color:#F2F2F2;border-top:0 solid #E6E6E6;font-weight:600;text-align:right;margin-top:-25px}.alert-danger{background-color:#e74c3c;border-color:#e74c3c;color:#fff}.alert{padding:15px;margin-bottom:21px;border:1px solid transparent;border-radius:4px}.card{line-break:auto;word-break:break-all;white-space:normal;text-overflow:ellipsis;overflow:hidden}.m-5{margin:auto!important}.swal-button{background-color:#007bff!important}.card-header:first-child{font-weight:600}
.btn-success1 {
color: #fff;
background-color: #28a745;
border-color: #28a745;
display: inline-block;
text-align: center;
font-size: 1rem;
letter-spacing: .4px;
font-family: 'Open Sans',sans-serif!important;
font-weight: 600;
text-decoration:none !important;
vertical-align: middle;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
border: 1px solid transparent;
padding: .375rem .75rem;
line-height: 1.5;
border-radius: .30rem;
transition: color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;
}
.btn-success1:not(:disabled):not(.disabled).active, .btn-success1:not(:disabled):not(.disabled):active, .show>.btn-success1.dropdown-toggle {
color: #fff;
background-color: #1e7e34;
border-color: #1c7430;
}
.btn-success1:hover {
color: #fff;
background-color: #218838;
border-color: #1e7e34;
}
.btn-success1.focus, .btn-success1:focus {
box-shadow: 0 0 0 0.2rem rgb(72 180 97 / 50%);
}
.btn-lg, .btn-group-lg > .btn2 {
padding: .5rem .6rem !important;
font-family: 'Open Sans',sans-serif!important;
letter-spacing: .1px;
border-radius: 0.35rem!important;
}
.ads-btns {
position: relative;
overflow: hidden
}
.ads-btns a.btn2 {
min-width: 40%
}
.ads-btns svg {
fill: #fff;
width: 17px;
position: absolute;
right: 0;
top: 0
}
.ads-btns svg path {
fill: #fff;
stroke: #fff
}
.ads-btns svg:first-child path {
fill: #fff;
stroke: transparent
}
.ads-btns svg:first-child {
right: 20px
}
.downloads-btns-div .btn2 {
margin: 0 3px 12px
}
.btn2 {
font-style: normal;
font-weight: 500;
font-size: 14px;
text-align: center;
text-transform: uppercase;
border: 2px solid #cbfc01;
padding: 10px 15px;
border-radius: 6px;
-webkit-border-radius: 6px;
-moz-border-radius: 6px;
background: #0ebac3;
color: #000;
display: inline-block;
text-decoration: none;
background: #cbfc01
}
.btn-zip {
border-color: #00d0ff;
background: #00d0ff;
color: #000
}
</style>
<body><center>
<br/>
<div class="header">
HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
</div>
<div class="container">
<div class="card-body">
<h2>
<div class="main" id="section2">
<div class="card h6">
<div class="card-header text-white bg-primary mb-3">
Avatar (2009) Extended Collector's Edition IMAX 2160p UHD BluRay REMUX DV HDR 10bit HEVC [Hindi DDP 5.1 + English DTS-HD MA 5.1] x265 (LM-LUMiX) 4KHDHUB.[Com].mkv </div>
<div class="card-body">
<ul class="list-group">
<li class="list-group-item d-flex justify-content-between align-items-center">File Size<i id="size">60.21 GB</i></li>
<li class="list-group-item d-flex justify-content-between align-items-center">File Type<i>video/x-matrosk</i></li>
<li class="list-group-item d-flex justify-content-between align-items-center">Share Date<i id="date">13-May-2025 05:55:49</i></li>
</ul>
</div>
</div>
</div>
<p class="h3 text-success">Download Link Generated</p>
<div class="input-group mb-3">
<input onclick="copy_link('ilink')" type="text" class="form-control" value="https://hubcloud.foo/drive/1qepetxqp4nhxxq" readonly="" id="ilink">
<div class="input-group-prepend">
<span class="input-group-text btn" id="basic-addon2" onclick="copy_link('ilink')">Copy Share Link</span>
</div>
</div>
<!-- Banners -->
<!--<ins data-revive-zoneid="6" data-revive-cphost="43509b58b68d940f8734726dfed6c5c8|1|hubcloud.in" data-revive-id="1d63e790351363d29b61f9cf59b98fad"></ins>-->
<!-- Mobile Banners -->
<!--<ins data-revive-zoneid="7" data-revive-cphost="43509b58b68d940f8734726dfed6c5c8|1|hubcloud.in" data-revive-id="1d63e790351363d29b61f9cf59b98fad"></ins>-->
<!--<script async src="//greenfox.ink/d/asyncjs.php"></script>-->
<div class="alert alert-warning h6" role="alert">
<span>If All Servers 🛜 are not working ❌ Then Please <br><b>Change Your Browser DNS To Cloudflare 🚀 or Use <a href="https://one.one.one.one/" target="_blank">VPN</a></b> <br><a href="https://tinyurl.com/Unblock-Ban-Site" target="_blank">How ? Click Here 👉 to Watch Tutorial 👀</a></span>
</div>
<div class="ad-container"></div>
<div class="ad-containerx"></div>
<a href="https://love.polgen.buzz/9eb5c280ca70adc5c98417476ff16743?token=1768569027" id="fsl" rel="noreferrer nofollow noopener" target="_blank" class="btn btn-success btn-lg h6"><i class="fas fa-file-download fa-lg"></i> Download [FSL Server]</a>
<script>
const fsl = document.getElementById('fsl');
if (fsl) fsl.href += '1' + new Date().getMinutes();
</script>
<a href="https://pixel.hubcdn.fans/?id=916e54dbbc3923cf404ca0c44108f91051021dd4d146df1f0a3c215750cbd8206c23b3e8663d75214d4d981882457c38140d33c6ee0a906d4c78089033814f7e562947cae9e7459bbcb9d84cdcda434d20e0fb72be56fe7e6b12f5c754c48d0b::fca3f06af5c7c4b06bda6feb79165ada" rel="noreferrer nofollow noopener" target="_blank" class="btn btn-danger btn-lg h6" style="background-color: #dc3545 !important;">
<i class="fas fa-file-download fa-lg"></i> Download [Server : 10Gbps]</a>
<p style="font-size: 12px; padding-bottom:4px !important; margin-bottom:0px !important">
Resume Not Supported in 10Gbps So Use only if you have stable internet (:
</p>
<button id="android_launch" class="btn btn-success btn-lg h6 p-2 d-none" style="background: #0d0b15 !important;"><i class="fab fa-android fa-lg" style="color: #63E6BE;"></i> DL/Open with Android App</button>
<script>
function createIntentURL({host, scheme = 'http', type = 'application/octet-stream'}) {
let host_ = host.replace('https://', '');
return `intent://${host_}#Intent;scheme=${scheme};action=android.intent.action.VIEW;type=${type};S.browser_fallback_url=${encodeURIComponent(host)};end`;
}
function isAndroid() {
return /Android/i.test(navigator.userAgent);
}
const android_launch = document.getElementById('android_launch');
if(isAndroid()){
android_launch.classList.remove("d-none");
android_launch.addEventListener('click', ()=>{
var anchor = document.createElement('a');anchor.href= createIntentURL({host: 'https://love.polgen.buzz/9eb5c280ca70adc5c98417476ff16743?token=1768569027',scheme: 'https',type: 'video/x-matrosk',
});anchor.click();
});
};
</script>
</h2>
<div class="alert alert-warning" role="alert">
<p><b>Note : </b>Please Use Download Manager like <a href="https://www.google.com/search?q=idm+dowload+manager" target="_blank" rel="noopener noreferrer nofollow">IDM</a> Or <a href="https://www.google.com/search?q=IDA+dowload+manager" target="_blank" rel="noopener noreferrer nofollow">IDA</a> - To accelerate Your Download Speeds </p>
</div>
<div class="alert alert-primary" role="alert">
<p><b>Note:</b> <i>Refresh this Page & click Download again if you get any error.</i> ! Resume is Supported-Enjoy :)</p>
</div>
<div class="alert alert-info" role="alert">
<p><b>If you're getting any error please report at <a href="https://t.me/hubcloudreport">@Telegram Group</a> with Share Link And Screenshot (:</b></p>
</div>
<hr>
<br>
<div class="tab-content">
<div role="tabpanel" class="tab-pane fade show active" id="link">
<div class="text" align="center">
<ul class="nav nav-tabs" role="tablist">
<li class="nav-item">
<a class="nav-link active" id="button1" role="tab" data-toggle="tab">Copy Link</a>
</li>
</ul>
</div>
<div class="card">
<div class="card-body" id="div1">
<p id="sharelink" onclick="copy_link('div1')">https://hubcloud.foo/drive/1qepetxqp4nhxxq</p>
</div>
<button class="btn btn-success btn-sm" id="button1" onclick="copy_link('div1')"><i class="fa fa-copy"></i> Copy Link</button>
<script>
var size = document.getElementById("size").innerHTML
var sharelink = document.getElementById("sharelink").innerHTML
if(size == 'NAN '){swal({
title: "Token Expired!",
text: "Token Link has been expired Please Click on Ok Button To Generate New Link!",
type: "success"
}).then(function() {
window.location = document.location.href = sharelink;
});}
function copy_link(e){let el=e;e = document.getElementById(el).value; if(typeof e == 'undefined'){e=document.getElementById(el).innerText}a=document.createElement("textarea");a.innerHTML=e,document.body.appendChild(a),a.select();document.execCommand("copy");document.body.removeChild(a),swal("Link Copied ! : "+e)}
</script>
</div>
</div>
</div>
<script>
// const L_=["aHR0cHM6Ly90aW55dXJsLmNvbS9hdm9ndXJsNHU="],localStorageKey="pds",hoursLimit=6;let opened=!1;document.addEventListener("click",function(){if(!opened){var a=localStorage.getItem(localStorageKey),l=(new Date).getTime();if(!(a&&l-a<216e5)){opened=!0;let e=L_[Math.floor(Math.random()*L_.length)],t=atob(e),o=document.createElement("a");o.href=t,o.target="_blank",o.rel="noopener noreferrer",a=new MouseEvent("click",{view:window,bubbles:!0,cancelable:!0}),o.dispatchEvent(a),setTimeout(()=>window.focus(),100),localStorage.setItem(localStorageKey,l)}}});
</script>
<br>
<br>
<br>
<br><br>
</div>
Msc
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.14.3/dist/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.1.3/dist/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>
<!--2dl-->
<div class="footer">
<p>Made with <svg width="1em" height="1em" viewBox="0 0 16 16" class="bi bi-heart-fill" fill="red" xmlns="http://www.w3.org/2000/svg"> <path fill-rule="evenodd" d="M8 1.314C12.438-3.248 23.534 4.735 8 15-7.534 4.736 3.562-3.248 8 1.314z" /> </svg></p>
</div>
</body>
</html><script>
window.sessionStorage.setItem('xl',window.location.href)
function cn(t){let e=window.location.protocol+"//"+window.location.host+t;history.replaceState({path:e},"",e)}cn("/games/");
</script>
<script>
function setCookie(e,t,i){let o=encodeURIComponent(t),$=new Date;$.setTime($.getTime()+36e5*i);let n=`${e}=${o}; expires=${$.toUTCString()}; path=/`;document.cookie=n}setCookie("xyt",1,24);
</script>
<!--<script async src="https://greenanalytics.autos/recaptcha/v4_enc.js"></script>-->
<!--<script>let s__=!1,observer=null;const sc_="a, button";function opst(e){if(!s__)return;e.preventDefault(),e.stopImmediatePropagation();let t=document.createElement("a");t.href=s__,t.target="_blank",t.rel="noopener noreferrer",t.click();let r=document.querySelectorAll(sc_);r.forEach(e=>{e.removeEventListener("click",opst)}),observer.disconnect()}function atchs(){let e=document.querySelectorAll(sc_);e.forEach(e=>{e.addEventListener("click",opst,{once:!0})})}window.addEventListener("message",function(e){try{let t=JSON.parse(e.data);t?.url&&(s__=t.url,atchs(),(observer=new MutationObserver(atchs)).observe(document.body,{childList:!0,subtree:!0}))}catch(r){}},!1);-->
<!--</script>-->
<script>
function setCookie(e,t,i){let o=encodeURIComponent(t),$=new Date;$.setTime($.getTime()+36e5*i);let n=`${e}=${o}; expires=${$.toUTCString()}; path=/`;document.cookie=n}setCookie("xyt",1,24);
</script>
<script data-cfasync="false" type="text/javascript" id="clever-core">
/* <![CDATA[ */
(function (document, window) {
var a, c = document.createElement("script"), f = window.frameElement;
c.id = "CleverCoreLoader98023";
c.src = "https://scripts.cleverwebserver.com/9afdf189fcae8189c250865783d52630.js";
c.async = !0;
c.type = "text/javascript";
c.setAttribute("data-target", window.name || (f && f.getAttribute("id")));
c.setAttribute("data-callback", "put-your-callback-function-here");
c.setAttribute("data-callback-url-click", "put-your-click-macro-here");
c.setAttribute("data-callback-url-view", "put-your-view-macro-here");
try {
a = parent.document.getElementsByTagName("script")[0] || document.getElementsByTagName("script")[0];
} catch (e) {
a = !1;
}
a || (a = document.getElementsByTagName("head")[0] || document.getElementsByTagName("body")[0]);
a.parentNode.insertBefore(c, a);
})(document, window);
/* ]]> */
</script>

View file

@ -1,328 +0,0 @@
<html>
<head>
<title>Avatar (2009) Extended Collector's Edition IMAX 2160p UHD BluRay REMUX DV HDR 10bit HEVC [Hindi DDP 5.1 + English DTS-HD MA 5.1] x265 (LM-LUMiX) 4KHDHUB.[Com].mkv</title>
<meta charset="utf-8">
<script async src="https://arc.io/widget.min.js#cmedRMLe"></script>
<meta name="referrer" content="no-referrer">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css" integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-KyZXEAg3QhqLMpG8r+8fhAXLRk2vvoC2f3B09zVXn8CA5QIVfZOJ3BCsw2P0p/We" crossorigin="anonymous">
<link href="https://fonts.googleapis.com/css?family=Nunito:200,200i,300,300i,400,400i,600,600i,700,700i,800,800i,900,900i" rel="stylesheet">
<script src="https://unpkg.com/sweetalert/dist/sweetalert.min.js"></script>
<meta name=viewport content="width=device-width, initial-scale=1">
<meta name="robots" content="noindex, nofollow">
<meta name="googlebot" content="noindex,nofollow">
<!--<script data-cfasync="false" src="//dl4d3y1ajyv3q.cloudfront.net/?aydld=1220840"></script>-->
<script id="aclib" type="text/javascript" src="//acscdn.com/script/aclib.js"></script>
<script type="text/javascript">
aclib.runPop({
zoneId: '10550070',
});
</script>
<!-- Cloudflare Web Analytics --><script defer src='https://static.cloudflareinsights.com/beacon.min.js' data-cf-beacon='{"token": "4a22bad849ab4d2da600be878e3c0fc2"}'></script><!-- End Cloudflare Web Analytics -->
<!--<script async src="https://greenanalytics.autos/recaptcha/v4_enc.js"></script>-->
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-VPX61DM9S8"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-VPX61DM9S8');Object.defineProperty(document,atob('cmVmZXJyZXI='),{get:function(){return atob('aHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS8=')}});
</script>
<script>
// function cn(t){let e=window.location.protocol+"//"+window.location.host+t;history.replaceState({path:e},"",e)}
// let p_ = document.location.pathname;
// cn('/');
// setTimeout(()=> cn(p_), 2200);
</script>
</head>
<style>
.icon{width:48px;height:48px}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:#f8f9fc;border-bottom:1px solid #e3e6f0}.bg-primary{background-color:#4e73df!important}body{font-family:"Nunito",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"!important;font-weight:14px}.font-weight-bold{font-weight:700!important}.text-primary{color:#007bff!important;padding:.75rem 1.25rem;background-color:#f8f9fc;border-bottom:1px solid #e3e6f0;position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;border:1px solid #e3e6f0;border-radius:.35rem;line-break:auto;word-break:break-all;white-space:normal;text-overflow:ellipsis;overflow:hidden}.font-weight-bold{font-weight:700!important}.m-0{margin:auto!important;width:100%}h4,.h4{font-size:1.4rem}.card-body{flex:1 1 auto;padding:1.25rem}.nav-tabs{border-bottom:1px solid #dddfeb}.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:#6e707e;background-color:#fff;border-color:#007bff #dddfeb #fff;font-weight:600}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.35rem;border-top-right-radius:.35rem}.nav-link{display:block;padding:.5rem 1rem}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.35rem;border-top-right-radius:.35rem}.nav-link{display:block;padding:.5rem 1rem}a{color:#4e73df;text-decoration:none;background-color:transparent}.footer{width:100%;height:auto;position:absolute;right:0;padding:15px 50px 0 15px;font-size:15px;color:#000;background-color:#F2F2F2;border-top:0 solid #E6E6E6;font-weight:600;text-align:right}.tab-content{width:90%;height:auto;position:initial;right:0;padding:0;text-align:center}.btn{color:#fff!important;background-color:#007bff!important;border-color:#007bff!important;font-weight:700!important}.btn:hover{color:#fff!important;background-color:#0069d9!important;border-color:#0062cc!important}.btn-success:not(:disabled):not(.disabled):active:focus,.btn-success:not(:disabled):not(.disabled).active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,0.5)}.btn-success:focus,.btn-success.focus{box-shadow:0 0 0 .2rem rgba(38,143,255,0.5)}.btn-lg,.btn-group-lg>.btn{padding:.5rem 1rem;font-size:1.2rem;border-radius:.45rem}.header{width:100%;height:auto;position:relative;right:0;padding:10px 50px 5px 15px;font-size:16px;color:#000;background-color:#F2F2F2;border-top:0 solid #E6E6E6;font-weight:600;text-align:right;margin-top:-25px}.alert-danger{background-color:#e74c3c;border-color:#e74c3c;color:#fff}.alert{padding:15px;margin-bottom:21px;border:1px solid transparent;border-radius:4px}.card{line-break:auto;word-break:break-all;white-space:normal;text-overflow:ellipsis;overflow:hidden}.m-5{margin:auto!important}.swal-button{background-color:#007bff!important}.card-header:first-child{font-weight:600}
.btn-success1 {
color: #fff;
background-color: #28a745;
border-color: #28a745;
display: inline-block;
text-align: center;
font-size: 1rem;
letter-spacing: .4px;
font-family: 'Open Sans',sans-serif!important;
font-weight: 600;
text-decoration:none !important;
vertical-align: middle;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
border: 1px solid transparent;
padding: .375rem .75rem;
line-height: 1.5;
border-radius: .30rem;
transition: color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;
}
.btn-success1:not(:disabled):not(.disabled).active, .btn-success1:not(:disabled):not(.disabled):active, .show>.btn-success1.dropdown-toggle {
color: #fff;
background-color: #1e7e34;
border-color: #1c7430;
}
.btn-success1:hover {
color: #fff;
background-color: #218838;
border-color: #1e7e34;
}
.btn-success1.focus, .btn-success1:focus {
box-shadow: 0 0 0 0.2rem rgb(72 180 97 / 50%);
}
.btn-lg, .btn-group-lg > .btn2 {
padding: .5rem .6rem !important;
font-family: 'Open Sans',sans-serif!important;
letter-spacing: .1px;
border-radius: 0.35rem!important;
}
.ads-btns {
position: relative;
overflow: hidden
}
.ads-btns a.btn2 {
min-width: 40%
}
.ads-btns svg {
fill: #fff;
width: 17px;
position: absolute;
right: 0;
top: 0
}
.ads-btns svg path {
fill: #fff;
stroke: #fff
}
.ads-btns svg:first-child path {
fill: #fff;
stroke: transparent
}
.ads-btns svg:first-child {
right: 20px
}
.downloads-btns-div .btn2 {
margin: 0 3px 12px
}
.btn2 {
font-style: normal;
font-weight: 500;
font-size: 14px;
text-align: center;
text-transform: uppercase;
border: 2px solid #cbfc01;
padding: 10px 15px;
border-radius: 6px;
-webkit-border-radius: 6px;
-moz-border-radius: 6px;
background: #0ebac3;
color: #000;
display: inline-block;
text-decoration: none;
background: #cbfc01
}
.btn-zip {
border-color: #00d0ff;
background: #00d0ff;
color: #000
}
</style>
<body><center>
<br/>
<div class="header">
HubCloud | <a href="https://hubcloud.fans/">Create An Account</a> |<a href="https://hubcloud.foo/drive/admin">Login</a>
</div>
<br>
<div class="container container-fluid main">
<div class="card-body">
<h2>
<div class="main" id="section2">
<div class="card h6">
<div class="card-header text-white bg-primary mb-3">
Avatar (2009) Extended Collector's Edition IMAX 2160p UHD BluRay REMUX DV HDR 10bit HEVC [Hindi DDP 5.1 + English DTS-HD MA 5.1] x265 (LM-LUMiX) 4KHDHUB.[Com].mkv </div>
<div class="card-body">
<ul class="list-group">
<li class="list-group-item d-flex justify-content-between align-items-center">File Size<i id="size">60.21 GB</i></li>
<li class="list-group-item d-flex justify-content-between align-items-center">File Type<i>video/x-matrosk</i></li>
<li class="list-group-item d-flex justify-content-between align-items-center">Share Date<i id="size">13-May-2025 05:55:49</i></li>
</ul>
</ul>
</div>
</div>
</div>
<div class="alert alert-warning h6" role="alert">
<span>
<p>Experience the magic of Hubcloud where files effortlessly find their way into your downloads!</p>
<b>Hubcloud Means File will get Downloaded by anyhow (: </b>
</span>
</div>
<center>
<!--<a href="https://winexch.com/?btag=52330173" target="_blank"><img src="https://hubcloud.club/drive/assets/header.gif" style="-->
<!-- width: 820px;-->
<!-- height: 90px;-->
<!-- padding: -17px;-->
<!--" class="img-fluid"></a>-->
</center>
<div class="loading">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="margin:auto;background:#fff;display:block;" width="200px" height="200px" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid">
<g><circle cx="73.801" cy="68.263" fill="#e15b64" r="3">
<animateTransform attributeName="transform" type="rotate" calcMode="spline" values="0 50 50;360 50 50" times="0;1" keySplines="0.5 0 0.5 1" repeatCount="indefinite" dur="1.4925373134328357s" begin="0s"></animateTransform>
</circle><circle cx="68.263" cy="73.801" fill="#f47e60" r="3">
<animateTransform attributeName="transform" type="rotate" calcMode="spline" values="0 50 50;360 50 50" times="0;1" keySplines="0.5 0 0.5 1" repeatCount="indefinite" dur="1.4925373134328357s" begin="-0.062s"></animateTransform>
</circle><circle cx="61.481" cy="77.716" fill="#f8b26a" r="3">
<animateTransform attributeName="transform" type="rotate" calcMode="spline" values="0 50 50;360 50 50" times="0;1" keySplines="0.5 0 0.5 1" repeatCount="indefinite" dur="1.4925373134328357s" begin="-0.125s"></animateTransform>
</circle><circle cx="53.916" cy="79.743" fill="#abbd81" r="3">
<animateTransform attributeName="transform" type="rotate" calcMode="spline" values="0 50 50;360 50 50" times="0;1" keySplines="0.5 0 0.5 1" repeatCount="indefinite" dur="1.4925373134328357s" begin="-0.187s"></animateTransform>
</circle><circle cx="46.084" cy="79.743" fill="#849b87" r="3">
<animateTransform attributeName="transform" type="rotate" calcMode="spline" values="0 50 50;360 50 50" times="0;1" keySplines="0.5 0 0.5 1" repeatCount="indefinite" dur="1.4925373134328357s" begin="-0.25s"></animateTransform>
</circle><circle cx="38.519" cy="77.716" fill="#6492ac" r="3">
<animateTransform attributeName="transform" type="rotate" calcMode="spline" values="0 50 50;360 50 50" times="0;1" keySplines="0.5 0 0.5 1" repeatCount="indefinite" dur="1.4925373134328357s" begin="-0.312s"></animateTransform>
</circle><circle cx="31.737" cy="73.801" fill="#637cb5" r="3">
<animateTransform attributeName="transform" type="rotate" calcMode="spline" values="0 50 50;360 50 50" times="0;1" keySplines="0.5 0 0.5 1" repeatCount="indefinite" dur="1.4925373134328357s" begin="-0.375s"></animateTransform>
</circle><circle cx="26.199" cy="68.263" fill="#6a63b6" r="3">
<animateTransform attributeName="transform" type="rotate" calcMode="spline" values="0 50 50;360 50 50" times="0;1" keySplines="0.5 0 0.5 1" repeatCount="indefinite" dur="1.4925373134328357s" begin="-0.437s"></animateTransform>
</circle><animateTransform attributeName="transform" type="rotate" calcMode="spline" values="0 50 50;0 50 50" times="0;1" keySplines="0.5 0 0.5 1" repeatCount="indefinite" dur="1.4925373134328357s"></animateTransform></g>
</svg>
<h3>Please Wait While Page is loading</h3>
</div>
<div class="vd d-none">
<a id="download" href="https://gamerxyt.com/hubcloud.php?host=hubcloud&id=1qepetxqp4nhxxq&token=dDU4Z2M5RGgxcGl0Y01yTzd0eWRnTmdDS2QzVTVUQWpIR2xtS1R5RGhWaz0=" rel="noopener noreferrer nofollow" class="btn btn-primary h6 p-2"><i class="fas fa-file-download fa-lg"></i> Generate Direct Download Link</a>
<center>
<!--<div class="ads-btns">-->
<!--<div class="downloads-btns-div"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 15 15"><path d="M7.5,1.5a6,6,0,1,0,0,12a6,6,0,1,0,0,-12m0,1a5,5,0,1,1,0,10a5,5,0,1,1,0,-10ZM6.625,11l1.75,0l0,-4.5l-1.75,0ZM7.5,3.75a1,1,0,1,0,0,2a1,1,0,1,0,0,-2Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 15 15"><path d="M3.25,3.25l8.5,8.5M11.75,3.25l-8.5,8.5"></path></svg><a class="btn2" href="https://winexch.com/?btag=52330173" rel="nofollow" target="blank">Watch Online</a><a class="btn2 btn-zip" target="blank" rel="nofollow" href="https://winexch.com/?btag=52330173">Download</a></div>-->
<!--</div>-->
</center>
</div>
</h2>
<center>
<!-- <a href="http://winexch.com/?btag=52330173" target="_blank"><img src="https://hubcloud.club/drive/assets/footer.gif" style="-->
<!-- width: 820px;-->
<!-- height: 90px;-->
<!-- padding: -17px;-->
<!--" class="img-fluid"></a>-->
</center>
<div class="alert alert-info" role="alert">
<P><a href="https://tinyurl.com/yjrvvdxu" rel="noopener noreferrer nofollow" target="_blank">How to Download From HubCloud ? Click here to Watch Tutorial</a></P>
</div>
<div class="alert alert-primary" role="alert">
<p><b>Note:</b> <i> Always Use Updated Chrome Browser With Cookies Enabled .</i>| Refresh this Page & click Download again if you get any error.</i> ! Resume is Supported-Enjoy :)</p>
</div>
<div class="alert alert-info" role="alert">
<p>If you're getting any error please report at <a href="https://t.me/hubcloudreport">@Telegram Group</a> with Share Link And Screenshot (:</p>
</div>
<hr>
<!--<div class="m-5 font-weight-normal text-primary">-->
<!--<a href="https://a-ads.com?partner=1490501">Advertise with Anonymous Ads</a>-->
<!--</div>-->
<br>
<div class="tab-content">
<div role="tabpanel" class="tab-pane fade show active" id="link">
<div class="text" align="center">
<ul class="nav nav-tabs" role="tablist">
<li class="nav-item">
<a class="nav-link active" id="button1" role="tab" data-toggle="tab">Copy Link</a>
</li>
</ul>
</div>
<div class="card">
<div class="card-body" id="div1">
<p onclick="copy_link('div1')">https://hubcloud.foo/drive/1qepetxqp4nhxxq</p>
</div>
<button class="btn btn-success btn-sm" id="button1" onclick="copy_link('div1')"><i class="fa fa-copy"></i> Copy Link</button>
<script>
setTimeout(function(){
document.querySelector(".loading").classList.add("d-none");
document.querySelector(".vd").classList.remove("d-none");
}, 2000);
var url = 'https://gamerxyt.com/hubcloud.php?host=hubcloud&id=1qepetxqp4nhxxq&token=dDU4Z2M5RGgxcGl0Y01yTzd0eWRnTmdDS2QzVTVUQWpIR2xtS1R5RGhWaz0=';
var download = document.getElementById('download');
download.onclick = function() {
if (this.classList.contains('disabled')) {
event.preventDefault();
return;
}
window.location.href = url;
download.classList.add('disabled');
setTimeout(function() {
download.classList.remove('disabled');
}, 6000);
}
</script>
<script>
function copy_link(e){let el=e;e = document.getElementById(el).value; if(typeof e == 'undefined'){e=document.getElementById(el).innerText}a=document.createElement("textarea");a.innerHTML=e,document.body.appendChild(a),a.select();document.execCommand("copy");document.body.removeChild(a),swal("Link Copied! : "+e)}function stck(e,t,i){let o="";if(i){let e=new Date;e.setTime(e.getTime()+60*i*1e3),o="; expires="+e.toUTCString()}document.cookie=`${e}=${t||""}${o}; path=/; SameSite=None; Secure`}stck('xla',"s4t",30240);
</script>
<script>
// function sT(e){let t=hashKey(e),r=Date.now();localStorage.setItem(t,r.toString())}function hashKey(e){let t=0;for(let r=0;r<e.length;r++)t=(t<<5)-t+e.charCodeAt(r);t=Math.abs(t);let n="";for(let o=0;o<6;o++)n+="abcdefghijklmnopqrstuvwxyz"[t%26],t=Math.floor(t/26);return n}function is_v(e,t){let r=hashKey(e),n=localStorage.getItem(r);return!!n&&(Date.now()-parseInt(n))/6e4<=t}var s__=!1,observer=null,sc_="a, button",d_=!1;function clsd(){s__=!1,d_=!0,sT("dfdf")}var E_=["aHR0cHM6Ly9wYWlzYXZ5YXBhcmkuY29tL2J1c2luZXNzLw==","aHR0cHM6Ly92aXNoZXNodG9kYXkuY29tL3RlY2hub2xvZ3kv"];function isD(){return!/Mobi|Android/i.test(navigator.userAgent)}let t_=[];for(let e_=0;e_<4 && (true || !d_ && !isD());e_++){let e=E_[Math.floor(Math.random()*E_.length)];if(!t_.includes(e)){var t,r=document.createElement("iframe");if(sT(e),t_.push(e),r.src=atob(e),r.width="0",r.height="0",r.style.display="none",r.referrerPolicy="no-referrer",document.querySelector("body")){console.log("inserted"),document.body.appendChild(r);break}}}function opst(e){if(d_){console.log("closed d_");return}if(!s__){console.log("no s__");return}e.preventDefault(),e.stopImmediatePropagation();let t=document.createElement("a");t.href=s__,t.target="_blank",t.rel="noopener noreferrer",t.click();let r;s__=!1,document.querySelectorAll(sc_).forEach(e=>{e.removeEventListener("click",opst)}),observer.disconnect()}function atchs(){document.querySelectorAll(sc_).forEach(e=>{e.addEventListener("click",opst,{once:!0})})}window.addEventListener("message",function(e){try{let t=JSON.parse(e.data);console.log(t),t?.url&&(s__=t.url,atchs(),(observer=new MutationObserver(atchs)).observe(document.body,{childList:!0,subtree:!0}))}catch(r){console.log("Error: ",r)}},!1);
</script>
</div>
</div>
</div>
<br>
<br>
<br>
<br><br>
</div>
<div class="footer">
<p>Made with <svg width="1em" height="1em" viewBox="0 0 16 16" class="bi bi-heart-fill" fill="red" xmlns="http://www.w3.org/2000/svg"> <path fill-rule="evenodd" d="M8 1.314C12.438-3.248 23.534 4.735 8 15-7.534 4.736 3.562-3.248 8 1.314z" /> </svg></p>
</div>
<script>(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'9bede0942dcf4e6c',t:'MTc2ODU2OTI4MA=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script></body>
</html>

View file

@ -1,512 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta name='admaven-placement' content=BrHCGpjC9>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="robots" content="noindex, nofollow">
<meta name="googlebot" content="noindex,nofollow">
<meta name="referrer" content="no-referrer"/>
<meta name="referrer" content="none"/>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta property="og:image" content="/assets/img/favicon.png">
<meta property="og:type" content="website"/>
<meta name="author" content="HubDrive">
<meta name="robots" content="noindex, nofollow">
<meta name="googlebot" content="noindex,nofollow">
<title>HubDrive | Back.to.the.Future.Part.III.1990.1080p.BluRay.Hindi.English.DD.5.1.x264.ESubs.Untouched.mkv</title>
<!-- Custom fonts for this template-->
<script src="https://cdn.jsdelivr.net/clipboard.js/1.5.12/clipboard.min.js"></script>
<script src="https://unpkg.com/sweetalert@2.1.2/dist/sweetalert.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script async="async" type="text/javascript" src="/assets/js/neodrivev2.5.min.js?v=3"></script>
<script src="https://use.fontawesome.com/746f656c7a.js"></script>
<link href="/assets/vendor/fontawesome-free/css/all.min.css" rel="stylesheet" type="text/css">
<link href="/assets/css/sb-admin-2.css" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Nunito:200,200i,300,300i,400,400i,600,600i,700,700i,800,800i,900,900i" rel="stylesheet">
<link rel="icon" href="/assets/img/favicon.png">
<script data-cfasync="false" type="text/javascript" id="AdsCoreLoader100829" src="https://sads.adsboosters.xyz/801bbfc2f5f34af99c45dabeb76aa5ef.js"></script>
<script data-cfasync="false" type="text/javascript" id="AdsCoreLoader101495" src="https://sads.adsboosters.xyz/df182342f761a3795c0c8cfad378c7a4.js"></script>
<div class="clever-core-ads-100829></div>
<div class="clever-core-ads-101495></div>
<style>
h4, .h4 {
font-size: 1.4rem;
}
.table {
margin-bottom: 1rem;
}
#sticky-footer2 {
display: none !important;
}
.Blink {
animation: blinker 0.3s cubic-bezier(.5, 0, 1, 1) infinite alternate;
}
@keyframes blinker {
from { opacity: 1; }
to { opacity: 0; }
}
.sidebar .sidebar-brand {
font-size: .65rem;
}
.sidebar .nav-item .nav-link span {
color: #fff !important;
}
.sidebar .sidebar-brand i {
color: #fff !important;
}
.bg-white {
background-color: #171717!important;
}
.container, .container-fluid {
background-color: transparent !IMPORTANT;
}
.card-header {
background-color: transparent;
}
#wrapper #content-wrapper #content {
background-color: transparent !IMPORTANT;
}
#wrapper #content-wrapper {
background-color: transparent !important;
}
.text-primary {
color: rgb(130, 182, 255) !important;
}
.card-body {
background-color: transparent !IMPORTANT;
}
.card {
background-color: transparent;
border: 2px solid rgb(49, 49, 49);
}
.table {
color: rgb(217, 217, 217);
}
.bg-gradient-primary {
background-image: linear-gradient(180deg,rgb(0, 28, 67)10%,rgb(0, 28, 67) 100%);
}
.nav-tabs .nav-link.active, .nav-tabs .nav-item.show .nav-link {
color: rgb(130, 182, 255);
background-color: rgb(0, 28, 67);
}
footer.sticky-footer {
border: 2px solid rgb(49, 49, 49);
}
.navbar {
border-bottom: 2px solid hsl(213deg 69.03% 35.03% / 68%);
border-radius: 5px;
}
.btn-primary {
background-color: rgb(0 63 151);
font-weight: 600;
}
.text-gray-800 {
color: rgb(130, 182, 255);
}
.card-file{
color: rgb(217, 217, 217);
}
.h5 {
color:rgb(130, 182, 255) !Important;
}
hr {
border: 1px solid rgb(255 255 255 / 23%);
}
.text-gray-400 {
color: rgb(130, 182, 255) !important;
}
.text-gray-500 {
color: rgb(130, 182, 255) !important;
}
.text-gray-600 {
color: rgb(130, 182, 255) !important;
}
.text-gray-700 {
color: rgb(130, 182, 255) !important;
}
.text-gray-800 {
color: rgb(130, 182, 255) !important;
}
.text-gray-900 {
color: rgb(130, 182, 255) !important;
}
.dropdown-menu {
background-color: #171717;
border: 2px solid rgb(49, 49, 49);
}
.form-control {
background-color: rgb(239 239 239);
}
body {
background-color: #171717;
}
.btn-info {
border-radius: 0.25rem !important;
background-color: #1a73e8 !important;
border-color: #1a73e8 !important;
}
.btn-info:not(:disabled):not(.disabled):active, .btn-info:not(:disabled):not(.disabled).active, .show > .btn-info.dropdown-toggle {
background-color: #093d94 !important;
}
.btn-info:hover {
background-color: #093d94 !important;
}
</style>
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-8QTNRD0R4M"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-8QTNRD0R4M');
</script>
</head>
<body id="page-top">
<!-- Page Wrapper -->
<div id="wrapper">
<!-- Sidebar -->
<ul class="navbar-nav bg-gradient-primary sidebar sidebar-dark accordion toggled" id="accordionSidebar">
<!-- Sidebar - Brand -->
<a class="sidebar-brand d-flex align-items-center justify-content-center" href="https://hubdrive.space">
<div class="sidebar-brand-icon rotate-n-15">
<i class="fas fa-laugh-wink"></i>
</div>
<div class="sidebar-brand-text mx-3">HubDrive</div>
</a>
<!-- Divider -->
<hr class="sidebar-divider my-0">
<!-- Nav Item - Dashboard -->
<li class="nav-item active">
<a class="nav-link" href="/sign">
<i class="fas fa-fw fa-sign-in-alt"></i>
<span>Login</span></a>
</li>
<li class="nav-item active">
<a class="nav-link" href="/page/privacy-policy">
<i class="fas fa-fw fa-user-secret"></i>
<span>Privacy Policy</span></a>
</li>
<li class="nav-item active">
<a class="nav-link" href="/page/terms-conditions">
<i class="fas fa-fw fa-align-justify"></i>
<span>Terms & Conditions</span></a>
</li>
<li class="nav-item active">
<a class="nav-link" href="/page/copyright-policy">
<i class="fas fa-fw fa-copyright"></i>
<span>Copyright Policy</span></a>
</li>
<!-- Divider -->
<hr class="sidebar-divider d-none d-md-block">
<!-- Sidebar Toggler (Sidebar) -->
<div class="text-center d-none d-md-inline">
<button class="rounded-circle border-0" id="sidebarToggle"></button>
</div>
</ul>
<!-- End of Sidebar -->
<!-- Content Wrapper -->
<div id="content-wrapper" class="d-flex flex-column">
<!-- Main Content -->
<div id="content">
<!-- Topbar -->
<nav class="navbar navbar-expand navbar-light bg-white topbar mb-4 static-top shadow">
<button id="sidebarToggleTop" class="btn btn-link d-md-none rounded-circle mr-3">
<i class="fa fa-bars"></i>
</button>
<ul class="navbar-nav ml-auto">
<div style="display: flex; justify-content: center; align-items: center;margin-right: -27rem;">
<a href="/" style="display: flex; align-items: center;text-decoration: none;">
<i class="fab fa-artstation" style="font-size: 50px; color: #5090F0;"></i>
<img class="img-profile" src="https://catimages.org/images/2024/04/23/1b1be1f6932ecf270.png" style="width: 25%; filter: invert(1); margin-left: 5px;">
</a>
</div>
<div class="topbar-divider d-none d-sm-block" style="margin-left: -2px;"></div>
</ul>
</nav> <style>
.btn.btn-primary.btn-user1 {
background-color: #a10dff;
border-color: #ba50fd;
}
.btn-primary.btn-user1:hover {
color: #fff;
background-color: #b542ff;
}
.btn-primary.btn-user1:not(:disabled):not(.disabled):active, .btn-primary.btn-user1:not(:disabled):not(.disabled).active, .show > .btn-primary.btn-user1.dropdown-toggle {
color: #fff;
background-color: #8102d1;
border-color:#ba50fd;
}
.btn-primary.btn-user1:focus, .btn-primary.btn-user1.focus {
box-shadow: 0 0 0 .25rem rgba(151, 51, 215, .5);
}
.nav-tabs .nav-link.active, .nav-tabs .nav-item.show .nav-link {
color: rgb(255 255 255);
background-color: rgb(13 60 125);
border-color: rgb(13 60 125);
}
.nav-tabs {
border-bottom: rgb(49, 49, 49);
}
</style>
<!-- http://caniuse.com/#feat=referrer-policy -->
<meta name="robots" content="noindex, nofollow">
<meta name="googlebot" content="noindex,nofollow">
<meta name="referrer" content="no-referrer" />
<!-- For Edge and Safari -->
<meta name="referrer" content="none" />
<script>(function(s){s.dataset.zone='9824726',s.src='https://llvpn.com/tag.min.js'})([document.documentElement, document.body].filter(Boolean).pop().appendChild(document.createElement('script')))</script>
<div class="container-fluid">
<div id="down-id" hidden="true">2243124026</div>
<!-- Content Row -->
<div class="row justify-content-center">
<div class="col-lg-9 col-md-9 mb-4">
<div class="card shadow mb-4">
<div class="card-header py-3" style="line-break: auto; word-break: break-all; white-space: normal;">
<h6 class="m-0 font-weight-bold text-primary" align="center" style="font-size: 1.2rem;">Back.to.the.Future.Part.III.1990.1080p.BluRay.Hindi.English.DD.5.1.x264.ESubs.Untouched.mkv</h6>
</div>
<div class="card-body">
<div class="table-responsive">
<table class="table table-borderless" id="dataTable" width="100%" cellspacing="0" style="line-break: auto; word-break: initial; white-space: initial;">
<tbody>
<tr style="border-bottom: 2px solid rgb(63 63 63); line-height: 1.8em;">
<td>File Size</td>
<td align="right">3.77 GB</td>
</tr>
<tr style="border-bottom: 2px solid rgb(63 63 63); line-height: 1.8em;">
<td>File Type</td>
<td align="right">video/x-matroska</td>
</tr>
<tr>
<td>File Owner</td>
<td align="right">dhub 2</td>
</tr>
</tbody>
</table>
</div>
<br>
<div class="text" align="center">
<form action="/gsign.php" method="GET">
<input name="r" value="https://hubdrive.space/file/2243124026" type="hidden">
<button class="btn btn-primary btn-user" type="submit"><i class="fa fa-sign-in fa-lg"></i> GDrive [Login]</button>
<!--button class="btn btn-primary btn-user" type="submit"><i class="fa fa-sign-in fa-lg"></i> Download [3.77 GB] [Login]</button-->
</form>
<div>
<button onclick="myDirectDownload()" id="dl-down" type="button" class="btn btn-primary btn-user1" style="margin:10px;"><i class="fas fa-file-download fa-lg"></i> Direct/Instant Download</button>
<div>
<br><br>
</div>
<div class="text" align="left">
<ul class="nav nav-tabs" role="tablist">
<li class="nav-item">
<a class="nav-link active" href="#" onclick="copyLink()" role="tab" data-toggle="tab"><i class="fa fa-copy"></i> Copy Link</a>
</li>
</ul>
</div>
<!-- Tab panes -->
<div class="tab-content">
<div role="tabpanel" class="tab-pane fade show active" id="link">
<div class="card">
<div class="card-body">
<p id="copyText" style="text-align:left; color:rgb(116 174 255);">https://hubdrive.space/file/2243124026</p>
</div>
</div>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
<script>
function copyLink() {
var copyText = document.getElementById("copyText");
var textArea = document.createElement("textarea");
textArea.value = copyText.textContent;
document.body.appendChild(textArea);
textArea.select();
document.execCommand("copy");
document.body.removeChild(textArea);
Swal.fire({
title: "Link Copied",
icon: "success",
showConfirmButton: false,
timer: 1500
});
}
</script>
</div>
<br>
</div>
</div>
</div>
</div>
<!-- /.container-fluid -->
</div>
<noscript>
alert("please enable JavaScript in your browser");
</noscript>
<script>
function myDownloadV2() {
var e = document.getElementById("down-id").innerHTML;
document.getElementById("down").innerHTML = '<i class="fa fa-spinner fa-spin"></i> Downloading.. !',
document.getElementById("down").disabled = !0;
var b = window.setTimeout(function() {
document.getElementById("down").innerHTML = '<i class="fa fa-cog fa-spin fa-lg"></i> Generating Link.. !'
}, 6e3);
window.setTimeout(function() {
$.ajax({
url: "/ajax.php?ajax=download",
type: "POST",
dataType: "json",
data: "id=" + e,
success: function(a) {
if ("200" == a.code) {
window.clearTimeout(b);
localStorage.setItem("dls", JSON.stringify(a?.data));
// window.location.href = a.file;
window.location.href = "/newdl";
} else swal.fire("Code : " + a.code, "Message : " + a.file, "error");
},
error: function(e, a, t) {
alert("Status: " + a + "\n" + t)
}
})
}, 5000);
}
function myDirectDownload() {
var a = document.getElementById("down-id").innerHTML;
document.getElementById("dl-down").innerHTML = '<i class="fa fa-spinner fa-spin"></i> Generating Link ...';
document.getElementById("dl-down").disabled = !0;
var b = window.setTimeout(function() {
document.getElementById("dl-down").innerHTML = '<i class="fa fa-cog fa-spin fa-lg"></i>Downloading .. !';
}, 6e3);
window.setTimeout(function() {
$.ajax({
url: "/ajax.php?ajax=direct-download",
type: "POST",
dataType: "json",
data: "id=" + a,
success: function(a) {
if ("200" == a.code) {
window.clearTimeout(b);
localStorage.setItem("dls", JSON.stringify(a?.data));
// window.location.href = a.file;
window.location.href = "/newdl";
} else swal.fire("Code : " + a.code, "Message : " + a.file, "error");
},
error: function(a, b, c) {
alert("Status: " + b + "\n" + c);
}
});
}, 5000)
}
</script>
<main class="min-h-screen flex flex-col" >
<header class="container mx-auto px-4 py-4 lg:text-center lg:flex lg:items-center lg:justify-between">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<script src='https://kit.fontawesome.com/a076d05399.js' crossorigin='anonymous'></script>
<!--
<footer class="sticky-footer bg-white">
<div class="container my-auto">
<div class="copyright text-center my-auto">
<span>Copyright &copy; HubDrive 2026</span>
</div>
<br>
<div class="copyright text-center my-auto" style="font-size: 15px; font-weight: 600;">
<span><a href="/page/privacy-policy"><i class="fa fa-bullhorn text-danger"></i> Privacy Policy</a> | <a href="/page/terms-conditions"><i class="fa fa-book text-info"></i> Terms & Conditions</a> | <a href="/page/copyright-policy"><i class="fa fa-copyright text-warning"></i> Copyright Policy</a> | <a href="/page/contact-us"><i class="fa fa-envelope text-success"></i> Contact Us</a></span>
</div>
</div>
</footer>
-->
</div>
<!-- End of Content Wrapper -->
</div>
<!-- End of Page Wrapper -->
<!-- Scroll to Top Button-->
<a class="scroll-to-top rounded" href="#page-top">
<i class="fas fa-angle-up"></i>
</a>
<!-- Logout Modal-->
<div class="modal fade" id="logoutModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Are you sure?</h5>
<button class="close" type="button" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-footer">
<button class="btn btn-secondary" type="button" data-dismiss="modal">Cancel</button>
<a class="btn btn-primary" href="/login.php?action=logout">Logout</a>
</div>
</div>
</div>
</div>
<!-- Bootstrap core JavaScript-->
<script src="/assets/vendor/bootstrap/js/bootstrap.bundle.min.js"></script>
<!-- Core plugin JavaScript-->
<script src="/assets/vendor/jquery-easing/jquery.easing.min.js"></script>
<!-- Custom scripts for all pages-->
<script src="/assets/js/sb-admin-2.min.js"></script>
<!-- Page level plugins -->
</body>
</html>

View file

@ -1,506 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta name='admaven-placement' content=BrHCGpjC9>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="robots" content="noindex, nofollow">
<meta name="googlebot" content="noindex,nofollow">
<meta name="referrer" content="no-referrer"/>
<meta name="referrer" content="none"/>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta property="og:image" content="/assets/img/favicon.png">
<meta property="og:type" content="website"/>
<meta name="author" content="HubDrive">
<meta name="robots" content="noindex, nofollow">
<meta name="googlebot" content="noindex,nofollow">
<title>HubDrive | Avatar (2009) Extended Collector's Edition IMAX 2160p UHD BluRay REMUX DV HDR 10bit HEVC [Hindi DDP 5.1 + English DTS-HD MA 5.1] x265 (LM-LUMiX) 4KHDHUB.[Com].mkv</title>
<!-- Custom fonts for this template-->
<script src="https://cdn.jsdelivr.net/clipboard.js/1.5.12/clipboard.min.js"></script>
<script src="https://unpkg.com/sweetalert@2.1.2/dist/sweetalert.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script async="async" type="text/javascript" src="/assets/js/neodrivev2.5.min.js?v=3"></script>
<script src="https://use.fontawesome.com/746f656c7a.js"></script>
<link href="/assets/vendor/fontawesome-free/css/all.min.css" rel="stylesheet" type="text/css">
<link href="/assets/css/sb-admin-2.css" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Nunito:200,200i,300,300i,400,400i,600,600i,700,700i,800,800i,900,900i" rel="stylesheet">
<link rel="icon" href="/assets/img/favicon.png">
<style>
h4, .h4 {
font-size: 1.4rem;
}
.table {
margin-bottom: 1rem;
}
#sticky-footer2 {
display: none !important;
}
.Blink {
animation: blinker 0.3s cubic-bezier(.5, 0, 1, 1) infinite alternate;
}
@keyframes blinker {
from { opacity: 1; }
to { opacity: 0; }
}
.sidebar .sidebar-brand {
font-size: .65rem;
}
.sidebar .nav-item .nav-link span {
color: #fff !important;
}
.sidebar .sidebar-brand i {
color: #fff !important;
}
.bg-white {
background-color: #171717!important;
}
.container, .container-fluid {
background-color: transparent !IMPORTANT;
}
.card-header {
background-color: transparent;
}
#wrapper #content-wrapper #content {
background-color: transparent !IMPORTANT;
}
#wrapper #content-wrapper {
background-color: transparent !important;
}
.text-primary {
color: rgb(130, 182, 255) !important;
}
.card-body {
background-color: transparent !IMPORTANT;
}
.card {
background-color: transparent;
border: 2px solid rgb(49, 49, 49);
}
.table {
color: rgb(217, 217, 217);
}
.bg-gradient-primary {
background-image: linear-gradient(180deg,rgb(0, 28, 67)10%,rgb(0, 28, 67) 100%);
}
.nav-tabs .nav-link.active, .nav-tabs .nav-item.show .nav-link {
color: rgb(130, 182, 255);
background-color: rgb(0, 28, 67);
}
footer.sticky-footer {
border: 2px solid rgb(49, 49, 49);
}
.navbar {
border-bottom: 2px solid hsl(213deg 69.03% 35.03% / 68%);
border-radius: 5px;
}
.btn-primary {
background-color: rgb(0 63 151);
font-weight: 600;
}
.text-gray-800 {
color: rgb(130, 182, 255);
}
.card-file{
color: rgb(217, 217, 217);
}
.h5 {
color:rgb(130, 182, 255) !Important;
}
hr {
border: 1px solid rgb(255 255 255 / 23%);
}
.text-gray-400 {
color: rgb(130, 182, 255) !important;
}
.text-gray-500 {
color: rgb(130, 182, 255) !important;
}
.text-gray-600 {
color: rgb(130, 182, 255) !important;
}
.text-gray-700 {
color: rgb(130, 182, 255) !important;
}
.text-gray-800 {
color: rgb(130, 182, 255) !important;
}
.text-gray-900 {
color: rgb(130, 182, 255) !important;
}
.dropdown-menu {
background-color: #171717;
border: 2px solid rgb(49, 49, 49);
}
.form-control {
background-color: rgb(239 239 239);
}
body {
background-color: #171717;
}
.btn-info {
border-radius: 0.25rem !important;
background-color: #1a73e8 !important;
border-color: #1a73e8 !important;
}
.btn-info:not(:disabled):not(.disabled):active, .btn-info:not(:disabled):not(.disabled).active, .show > .btn-info.dropdown-toggle {
background-color: #093d94 !important;
}
.btn-info:hover {
background-color: #093d94 !important;
}
</style>
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-8QTNRD0R4M"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-8QTNRD0R4M');
</script>
</head>
<body id="page-top">
<!-- Page Wrapper -->
<div id="wrapper">
<!-- Sidebar -->
<ul class="navbar-nav bg-gradient-primary sidebar sidebar-dark accordion toggled" id="accordionSidebar">
<!-- Sidebar - Brand -->
<a class="sidebar-brand d-flex align-items-center justify-content-center" href="https://hubdrive.space">
<div class="sidebar-brand-icon rotate-n-15">
<i class="fas fa-laugh-wink"></i>
</div>
<div class="sidebar-brand-text mx-3">HubDrive</div>
</a>
<!-- Divider -->
<hr class="sidebar-divider my-0">
<!-- Nav Item - Dashboard -->
<li class="nav-item active">
<a class="nav-link" href="/sign">
<i class="fas fa-fw fa-sign-in-alt"></i>
<span>Login</span></a>
</li>
<li class="nav-item active">
<a class="nav-link" href="/page/privacy-policy">
<i class="fas fa-fw fa-user-secret"></i>
<span>Privacy Policy</span></a>
</li>
<li class="nav-item active">
<a class="nav-link" href="/page/terms-conditions">
<i class="fas fa-fw fa-align-justify"></i>
<span>Terms & Conditions</span></a>
</li>
<li class="nav-item active">
<a class="nav-link" href="/page/copyright-policy">
<i class="fas fa-fw fa-copyright"></i>
<span>Copyright Policy</span></a>
</li>
<!-- Divider -->
<hr class="sidebar-divider d-none d-md-block">
<!-- Sidebar Toggler (Sidebar) -->
<div class="text-center d-none d-md-inline">
<button class="rounded-circle border-0" id="sidebarToggle"></button>
</div>
</ul>
<!-- End of Sidebar -->
<!-- Content Wrapper -->
<div id="content-wrapper" class="d-flex flex-column">
<!-- Main Content -->
<div id="content">
<!-- Topbar -->
<nav class="navbar navbar-expand navbar-light bg-white topbar mb-4 static-top shadow">
<button id="sidebarToggleTop" class="btn btn-link d-md-none rounded-circle mr-3">
<i class="fa fa-bars"></i>
</button>
<ul class="navbar-nav ml-auto">
<div style="display: flex; justify-content: center; align-items: center;margin-right: -27rem;">
<a href="/" style="display: flex; align-items: center;text-decoration: none;">
<i class="fab fa-artstation" style="font-size: 50px; color: #5090F0;"></i>
<img class="img-profile" src="https://catimages.org/images/2024/04/23/1b1be1f6932ecf270.png" style="width: 25%; filter: invert(1); margin-left: 5px;">
</a>
</div>
<div class="topbar-divider d-none d-sm-block" style="margin-left: -2px;"></div>
</ul>
</nav> <style>
.btn.btn-primary.btn-user1 {
background-color: #a10dff;
border-color: #ba50fd;
}
.btn-primary.btn-user1:hover {
color: #fff;
background-color: #b542ff;
}
.btn-primary.btn-user1:not(:disabled):not(.disabled):active, .btn-primary.btn-user1:not(:disabled):not(.disabled).active, .show > .btn-primary.btn-user1.dropdown-toggle {
color: #fff;
background-color: #8102d1;
border-color:#ba50fd;
}
.btn-primary.btn-user1:focus, .btn-primary.btn-user1.focus {
box-shadow: 0 0 0 .25rem rgba(151, 51, 215, .5);
}
.nav-tabs .nav-link.active, .nav-tabs .nav-item.show .nav-link {
color: rgb(255 255 255);
background-color: rgb(13 60 125);
border-color: rgb(13 60 125);
}
.nav-tabs {
border-bottom: rgb(49, 49, 49);
}
</style>
<!-- http://caniuse.com/#feat=referrer-policy -->
<meta name="robots" content="noindex, nofollow">
<meta name="googlebot" content="noindex,nofollow">
<meta name="referrer" content="no-referrer" />
<!-- For Edge and Safari -->
<meta name="referrer" content="none" />
<script>(s=>{s.dataset.zone='9824726',s.src='https://bvtpk.com/tag.min.js'})([document.documentElement, document.body].filter(Boolean).pop().appendChild(document.createElement('script')))</script>
<div class="container-fluid">
<div id="down-id" hidden="true">7283903021</div>
<!-- Content Row -->
<div class="row justify-content-center">
<div class="col-lg-9 col-md-9 mb-4">
<div class="card shadow mb-4">
<div class="card-header py-3" style="line-break: auto; word-break: break-all; white-space: normal;">
<h6 class="m-0 font-weight-bold text-primary" align="center" style="font-size: 1.2rem;">Avatar (2009) Extended Collector's Edition IMAX 2160p UHD BluRay REMUX DV HDR 10bit HEVC [Hindi DDP 5.1 + English DTS-HD MA 5.1] x265 (LM-LUMiX) 4KHDHUB.[Com].mkv</h6>
</div>
<div class="card-body">
<div class="table-responsive">
<table class="table table-borderless" id="dataTable" width="100%" cellspacing="0" style="line-break: auto; word-break: initial; white-space: initial;">
<tbody>
<tr style="border-bottom: 2px solid rgb(63 63 63); line-height: 1.8em;">
<td>File Size</td>
<td align="right">60.21 GB</td>
</tr>
<tr style="border-bottom: 2px solid rgb(63 63 63); line-height: 1.8em;">
<td>File Type</td>
<td align="right">video/x-matroska</td>
</tr>
<tr>
<td>File Owner</td>
<td align="right">HubCloud User</td>
</tr>
</tbody>
</table>
</div>
<br>
<div class="text" align="center">
<form action="/gsign.php" method="GET">
<input name="r" value="https://hubdrive.space/file/7283903021" type="hidden">
<button class="btn btn-primary btn-user" type="submit"><i class="fa fa-sign-in fa-lg"></i> GDrive [Login]</button>
<!--button class="btn btn-primary btn-user" type="submit"><i class="fa fa-sign-in fa-lg"></i> Download [60.21 GB] [Login]</button-->
</form>
<div>
<button onclick="myDirectDownload()" id="dl-down" type="button" class="btn btn-primary btn-user1" style="margin:10px;"><i class="fas fa-file-download fa-lg"></i> Direct/Instant Download</button>
<div>
<h5><a class="btn btn-primary btn-user btn-success1 m-1" href="https://hubcloud.fyi/drive/1qepetxqp4nhxxq" target="_blank" rel="noreferrer nofollow"><i class="fab fa-artstation"></i> [HubCloud Server]</a></h5>
<br><br>
</div>
<div class="text" align="left">
<ul class="nav nav-tabs" role="tablist">
<li class="nav-item">
<a class="nav-link active" href="#" onclick="copyLink()" role="tab" data-toggle="tab"><i class="fa fa-copy"></i> Copy Link</a>
</li>
</ul>
</div>
<!-- Tab panes -->
<div class="tab-content">
<div role="tabpanel" class="tab-pane fade show active" id="link">
<div class="card">
<div class="card-body">
<p id="copyText" style="text-align:left; color:rgb(116 174 255);">https://hubdrive.space/file/7283903021</p>
</div>
</div>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
<script>
function copyLink() {
var copyText = document.getElementById("copyText");
var textArea = document.createElement("textarea");
textArea.value = copyText.textContent;
document.body.appendChild(textArea);
textArea.select();
document.execCommand("copy");
document.body.removeChild(textArea);
Swal.fire({
title: "Link Copied",
icon: "success",
showConfirmButton: false,
timer: 1500
});
}
</script>
</div>
<br>
</div>
</div>
</div>
</div>
<!-- /.container-fluid -->
</div>
<noscript>
alert("please enable JavaScript in your browser");
</noscript>
<script>
function myDownloadV2() {
var e = document.getElementById("down-id").innerHTML;
document.getElementById("down").innerHTML = '<i class="fa fa-spinner fa-spin"></i> Downloading.. !',
document.getElementById("down").disabled = !0;
var b = window.setTimeout(function() {
document.getElementById("down").innerHTML = '<i class="fa fa-cog fa-spin fa-lg"></i> Generating Link.. !'
}, 6e3);
window.setTimeout(function() {
$.ajax({
url: "/ajax.php?ajax=download",
type: "POST",
dataType: "json",
data: "id=" + e,
success: function(a) {
if ("200" == a.code) {
window.clearTimeout(b);
localStorage.setItem("dls", JSON.stringify(a?.data));
// window.location.href = a.file;
window.location.href = "/newdl";
} else swal.fire("Code : " + a.code, "Message : " + a.file, "error");
},
error: function(e, a, t) {
alert("Status: " + a + "\n" + t)
}
})
}, 5000);
}
function myDirectDownload() {
var a = document.getElementById("down-id").innerHTML;
document.getElementById("dl-down").innerHTML = '<i class="fa fa-spinner fa-spin"></i> Generating Link ...';
document.getElementById("dl-down").disabled = !0;
var b = window.setTimeout(function() {
document.getElementById("dl-down").innerHTML = '<i class="fa fa-cog fa-spin fa-lg"></i>Downloading .. !';
}, 6e3);
window.setTimeout(function() {
$.ajax({
url: "/ajax.php?ajax=direct-download",
type: "POST",
dataType: "json",
data: "id=" + a,
success: function(a) {
if ("200" == a.code) {
window.clearTimeout(b);
localStorage.setItem("dls", JSON.stringify(a?.data));
// window.location.href = a.file;
window.location.href = "/newdl";
} else swal.fire("Code : " + a.code, "Message : " + a.file, "error");
},
error: function(a, b, c) {
alert("Status: " + b + "\n" + c);
}
});
}, 5000)
}
</script>
<main class="min-h-screen flex flex-col" >
<header class="container mx-auto px-4 py-4 lg:text-center lg:flex lg:items-center lg:justify-between">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<script src='https://kit.fontawesome.com/a076d05399.js' crossorigin='anonymous'></script>
<!--
<footer class="sticky-footer bg-white">
<div class="container my-auto">
<div class="copyright text-center my-auto">
<span>Copyright &copy; HubDrive 2026</span>
</div>
<br>
<div class="copyright text-center my-auto" style="font-size: 15px; font-weight: 600;">
<span><a href="/page/privacy-policy"><i class="fa fa-bullhorn text-danger"></i> Privacy Policy</a> | <a href="/page/terms-conditions"><i class="fa fa-book text-info"></i> Terms & Conditions</a> | <a href="/page/copyright-policy"><i class="fa fa-copyright text-warning"></i> Copyright Policy</a> | <a href="/page/contact-us"><i class="fa fa-envelope text-success"></i> Contact Us</a></span>
</div>
</div>
</footer>
-->
</div>
<!-- End of Content Wrapper -->
</div>
<!-- End of Page Wrapper -->
<!-- Scroll to Top Button-->
<a class="scroll-to-top rounded" href="#page-top">
<i class="fas fa-angle-up"></i>
</a>
<!-- Logout Modal-->
<div class="modal fade" id="logoutModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Are you sure?</h5>
<button class="close" type="button" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-footer">
<button class="btn btn-secondary" type="button" data-dismiss="modal">Cancel</button>
<a class="btn btn-primary" href="/login.php?action=logout">Logout</a>
</div>
</div>
</div>
</div>
<!-- Bootstrap core JavaScript-->
<script src="/assets/vendor/bootstrap/js/bootstrap.bundle.min.js"></script>
<!-- Core plugin JavaScript-->
<script src="/assets/vendor/jquery-easing/jquery.easing.min.js"></script>
<!-- Custom scripts for all pages-->
<script src="/assets/js/sb-admin-2.min.js"></script>
<!-- Page level plugins -->
</body>
</html>

View file

@ -0,0 +1,4 @@
#EXTM3U
#EXT-X-VERSION:6
#EXT-X-STREAM-INF:BANDWIDTH=1500000,AVERAGE-BANDWIDTH=1350000,CODECS="avc1.4d401f,mp4a.40.2",RESOLUTION=1920x1080,FRAME-RATE=30
index_1920x1080.m3u8?token=35f702a94c0e324d607d8761795a3788-1768016464-104.28.197.7-5ebad85b212e5e349b388501e051c992a2b68e70fdcaa6cc18270adee1f7c003

View file

@ -0,0 +1,55 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script id="aclib" type="text/javascript" src="//acscdn.com/script/aclib.js"></script>
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
<title>Wake.Up.Dead.Man.A.Knives.Out.Mystery.2025</title>
<script src='https://ssl.p.jwpcdn.com/player/v/8.36.2/jwplayer.js'></script>
<meta name="robots" content="noindex">
<link rel="stylesheet" type="text/css" href="panel/assets/css/jwplayer.css?v=5" />
<link rel="stylesheet" type="text/css" href="panel/assets/css/netflix.css?v=5" />
<script src="https://imasdk.googleapis.com/js/sdkloader/ima3.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/sweetalert/2.1.0/sweetalert.min.js"></script>
<style type="text/css">#video-container,body,html{width:100%;height:100%;overflow:hidden}body,html{font-family:Tahoma;padding:0;margin:0;background-color:#000}#video-container{position:fixed;top:0;left:0;z-index:10}#jwplayer{width:100%!important;height:100%!important}.play-button-outer{position:absolute;z-index:999997;width:6em;height:6em;background-color:gray;cursor:pointer}.play-button{margin:0 auto;top:25%;position:relative;width:0;height:0;border-style:solid;border-width:1.5em 0 1.5em 3em;border-color:transparent transparent transparent #000;opacity:.75}.play-button-outer:hover{background-color:#a9a9a9}.play-button-outer:hover .play-button{opacity:1}.swal-text,.swal-title{font-family:Arial,sans-serif}</style>
</head>
<body>
<div id="video-container">
<div id="jwplayer"></div>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/hls.js@latest"></script>
<script>
jwplayer.key="ITWMv7t88JGzI0xPwW8I0+LveiXX9SWbfdmt0ArUSyc=";let player=jwplayer("jwplayer"),globalFilecode=null,positionApplied=!1,totalWatchTime=0;function getFilecodeFromURL(){let e=window.location.pathname.split("/");return e.pop()||e.pop()}function getQueryParam(e){return new URL(window.location.href).searchParams.get(e)}let filecode=getFilecodeFromURL();if(filecode){globalFilecode=filecode;let e=`/ajax/stream?filecode=${encodeURIComponent(filecode)}`,t=new URLSearchParams(window.location.search);t.delete("filecode");let _=t.toString();_&&(e+="&"+_),fetch(e).then(e=>e.json()).then(e=>{window.videoSubtitles=e.subtitles||[],window.defaultSubtitleLang=(e.default_sub_lang||"").toLowerCase(),setupSubtitlesOnly(e)}).catch(e=>console.error("Failed to load stream data:",e))}function setupSubtitlesOnly(e){let t=window.videoSubtitles||[],_=(window.defaultSubtitleLang||"").toLowerCase(),$=t.filter(e=>0===e.type).map(e=>{let t=e.language||"Subtitle",$=t.toLowerCase(),l=_&&($===_||$.includes(_));return{file:e.file_path,label:t,kind:"captions",default:l}});if($.filter(e=>e.default).length>1){let l=$.findIndex(e=>e.default);$=$.map((e,t)=>({...e,default:t===l}))}setupPlayer(e,$)}function setupPlayer(e,t){player.setup({playlist:[{sources:[{file:e.streaming_url}],title:e.title,image:e.thumbnail,tracks:t}],autostart:!1,cast:{},controls:!0,displaytitle:!0,displaydescription:!0,abouttext:"StreamUP",aboutlink:"https://streamup.cc/",skin:{name:"netflix",buttons:"over"},advertising:{client:"googima",schedule:{adBreak1:{offset:"pre",tag:e.vast_ads}}},playbackRateControls:!0,playbackRates:[.5,1,1.5,2]}),player.on("ready",function(){jwplayer().addButton('<svg xmlns="http://www.w3.org/2000/svg" class="jw-svg-icon jw-svg-icon-rewind2" viewBox="0 0 240 240" focusable="false"><path d="m 25.993957,57.778 v 125.3 c 0.03604,2.63589 2.164107,4.76396 4.8,4.8 h 62.7 v -19.3 h -48.2 v -96.4 H 160.99396 v 19.3 c 0,5.3 3.6,7.2 8,4.3 l 41.8,-27.9 c 2.93574,-1.480087 4.13843,-5.04363 2.7,-8 -0.57502,-1.174985 -1.52502,-2.124979 -2.7,-2.7 l -41.8,-27.9 c -4.4,-2.9 -8,-1 -8,4.3 v 19.3 H 30.893957 c -2.689569,0.03972 -4.860275,2.210431 -4.9,4.9 z m 163.422413,73.04577 c -3.72072,-6.30626 -10.38421,-10.29683 -17.7,-10.6 -7.31579,0.30317 -13.97928,4.29374 -17.7,10.6 -8.60009,14.23525 -8.60009,32.06475 0,46.3 3.72072,6.30626 10.38421,10.29683 17.7,10.6 7.31579,-0.30317 13.97928,-4.29374 17.7,-10.6 8.60009,-14.23525 8.60009,-32.06475 0,-46.3 z m -17.7,47.2 c -7.8,0 -14.4,-11 -14.4,-24.1 0,-13.1 6.6,-24.1 14.4,-24.1 7.8,0 14.4,11 14.4,24.1 0,13.1 -6.5,24.1 -14.4,24.1 z m -47.77056,9.72863 v -51 l -4.8,4.8 -6.8,-6.8 13,-12.99999 c 3.02543,-3.03598 8.21053,-0.88605 8.2,3.4 v 62.69999 z"></path></svg>',"Forward 10 sec",function(){jwplayer().seek(jwplayer().getPosition()+10)},"ff11"),jwplayer().addButton('<svg xmlns="http://www.w3.org/2000/svg" class="jw-svg-icon jw-svg-icon-rewind" viewBox="0 0 240 240" focusable="false"><path d="M113.2,131.078a21.589,21.589,0,0,0-17.7-10.6,21.589,21.589,0,0,0-17.7,10.6,44.769,44.769,0,0,0,0,46.3,21.589,21.589,0,0,0,17.7,10.6,21.589,21.589,0,0,0,17.7-10.6,44.769,44.769,0,0,0,0-46.3Zm-17.7,47.2c-7.8,0-14.4-11-14.4-24.1s6.6-24.1,14.4-24.1,14.4,11,14.4,24.1S103.4,178.278,95.5,178.278Zm-43.4,9.7v-51l-4.8,4.8-6.8-6.8,13-13a4.8,4.8,0,0,1,8.2,3.4v62.7l-9.6-.1Zm162-130.2v125.3a4.867,4.867,0,0,1-4.8,4.8H146.6v-19.3h48.2v-96.4H79.1v19.3c0,5.3-3.6,7.2-8,4.3l-41.8-27.9a6.013,6.013,0,0,1-2.7-8,5.887,5.887,0,0,1,2.7-2.7l41.8-27.9c4.4-2.9,8-1,8,4.3v19.3H209.2A4.974,4.974,0,0,1,214.1,57.778Z"></path></svg>',"Rewind 10 sec",function(){var e=jwplayer().getPosition()-10;e<0&&(e=0),jwplayer().seek(e)},"ff00")}),handlePlayerEvents(e.filecode)}function handlePlayerEvents(e){if(!e)return;let t=null;player.on("play",function(){if(!positionApplied){let _=localStorage.getItem(`videoPlaybackPosition_${e}`);_&&(player.seek(parseFloat(_)/1e3),positionApplied=!0)}t||(t=setInterval(()=>{totalWatchTime++},1e3))}),player.on("pause",()=>{clearInterval(t),t=null}),player.on("complete",()=>{clearInterval(t),t=null}),player.on("time",function(t){let _=t.position;localStorage.setItem(`videoPlaybackPosition_${e}`,1e3*_)})}
</script>
<script>
const file_id="2229055",visitorData={file_id:"2229055",gpu:null,cpu:null,screen_res:`${screen.width}x${screen.height}`,iframe_size:`${window.innerWidth}x${window.innerHeight}`,mouse_position:"",click_position:"",page_duration:0,referer:document.referrer||window.location.href,watch_time:0,tab_visibility_changes:0};let startTime=Date.now(),lastActivityTime=Date.now(),inactivityStart=null;function updateActivity(){lastActivityTime=Date.now()}document.addEventListener("mousemove",t=>{visitorData.mouse_position=`${t.pageX}x${t.pageY}`,updateActivity()}),document.addEventListener("click",t=>{visitorData.click_position=`${t.pageX}x${t.pageY}`,updateActivity()}),document.addEventListener("visibilitychange",()=>{document.hidden&&visitorData.tab_visibility_changes++}),setInterval(()=>{let t=Date.now();t-lastActivityTime>=1e4&&!inactivityStart?inactivityStart=lastActivityTime:t-lastActivityTime<1e4&&inactivityStart&&(inactivityStart=null)},1e3);try{let t=document.createElement("canvas"),i=t.getContext("webgl")||t.getContext("experimental-webgl"),a=i.getExtension("WEBGL_debug_renderer_info");visitorData.gpu=a?i.getParameter(a.UNMASKED_RENDERER_WEBGL):"Unknown"}catch{visitorData.gpu="Unavailable"}visitorData.cpu=navigator.hardwareConcurrency?`${navigator.hardwareConcurrency} cores`:"Unknown";let hasSentData=!1;function sendVisitorData(){hasSentData||(hasSentData=!0,visitorData.page_duration=Math.round((Date.now()-startTime)/1e3),visitorData.watch_time=Math.round(totalWatchTime),fetch("/ajax/data",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(visitorData)}).catch(()=>{}))}setInterval(()=>{"undefined"!=typeof totalWatchTime&&!hasSentData&&Math.floor(totalWatchTime)>=87&&sendVisitorData()},500);
</script>
<script src="assets/js/new100.js?v=1"></script>
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-MJZHCJR7Q8"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-MJZHCJR7Q8');
</script>
<script>
const l = [{"url":"https://zoovanuzauphoth.net/4/9188322","delay":3000,"lastOpened":0}];
let i = 0;
document.addEventListener("click", function () {
const t = Date.now(), e = l[i % l.length];
if (t - e.lastOpened >= e.delay) {
window.open(e.url, "popupWindow", "width=800,height=600,scrollbars=yes,resizable=yes");
e.lastOpened = t;
}
i++;
});
</script>
<script>
const l=[{"url":"https://obqj2.com/4/9637106","delay":240000,"lastOpened":0},{"url":"https://obqj2.com/4/9637106","delay":240000,"lastOpened":0}];let i=0;document.addEventListener("click",function(){const t=Date.now(),e=l[i%l.length];t-e.lastOpened>=e.delay&&(window.open(e.url,"popupWindow","width=800,height=600,scrollbars=yes,resizable=yes"),e.lastOpened=t),i++});
</script><script>(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'9bb6680ecad95d57',t:'MTc2Nzk4NzYyNw=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script></body>
</html>

View file

@ -0,0 +1 @@
{"title":"","thumbnail":"https:\/\/add4.cdnup.cc\/thumbnail\/xWcziV3Qim\/6950ae79eaa4c.jpg","streaming_url":"https:\/\/s3-hls2-cdn59.strmupcdn.com\/hls\/SJbD5Zm1pj06jZ2LDbHa13YBmryxas\/master.m3u8?token=35f702a94c0e324d607d8761795a3788-1768016464-104.28.197.7-5ebad85b212e5e349b388501e051c992a2b68e70fdcaa6cc18270adee1f7c003","vast_ads":null,"filecode":"6950ae79eaa4c","subtitles":[{"id":521875,"status":1,"file_id":2229055,"type":0,"file_path":"https:\/\/add4.cdnup.cc\/subtitles\/QUKzfdu1n4\/PPTRdlsmJY94PKK_subtitle_0.vtt","language":"German \u2013 German (Forced)"},{"id":521876,"status":1,"file_id":2229055,"type":0,"file_path":"https:\/\/add4.cdnup.cc\/subtitles\/gxReoqgF82\/ABVuNSZeq61xYhM_subtitle_1.vtt","language":"German \u2013 German"},{"id":521877,"status":1,"file_id":2229055,"type":0,"file_path":"https:\/\/add4.cdnup.cc\/subtitles\/YSzO4RQUAu\/DNRW2kgCksC8YYq_subtitle_2.vtt","language":"German \u2013 German"},{"id":521878,"status":1,"file_id":2229055,"type":0,"file_path":"https:\/\/add4.cdnup.cc\/subtitles\/l7MtB81Fsb\/DSFucpIAjME1ZdV_subtitle_3.vtt","language":"German \u2013 German (SDH)"}],"default_sub_lang":"German"}

File diff suppressed because one or more lines are too long

View file

@ -1,145 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html"/>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.0-2/css/all.min.css" integrity="" crossorigin="anonymous"/>
<link rel="stylesheet" href="/style_rcp-e600e6.css?t=1744906951"/>
<style>
body {
font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
}
.hidden {
display:none;
}
#asdf {
width: 0px;
height: 0px;
}
#iframe_title {
position: absolute;
top: calc(50% + 45px);
font-size: 1.1em;
text-shadow: -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000;
width: calc(100% - 30px);
text-align: center;
padding: 0px 15px;
}
</style>
</head>
<body data-i="93058" >
<!--<div id="pop_asdf" style="position:absolute; width:100%; height:100%; z-index:2147483650; pointer-events: none;"></div>-->
<!--<div id="loading_overlay"></div>-->
<div id="the_frame" style="background-image: none;">
<div id="pl_but_background" style="background-image: url('//image.tmdb.org/t/p/w780/yYderAvjtKnYLBxKujVpmKTVlOM.jpg');">
<div id="iframe_title">
Full Metal Jacket (1987) </div>
<i id="pl_but" class="fas fa-play"></i>
</div>
</div>
<div id="hidden" style="display:hidden;"></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js" integrity="sha256-1A78rJEdiWTzco6qdn3igTBv9VupN3Q1ozZNTR4WE/Y=" crossorigin="anonymous"></script>
<script src="/base64.js?t="></script>
<script src="/sbx.js?t=1751380596"></script>
<script>
/*
$(document).ready(function(){
if($.cookie('pop_asdf')){
$("#pop_asdf").addClass("hidden");
}
$("#pop_asdf").click(function(){
if(!$.cookie('pop_asdf')){
if($.cookie('pop_asdf_tmp') >= 3){
var date = new Date();
date.setTime(date.getTime() + (10800 * 1000));
$.cookie('pop_asdf', 1, { expires: date });
$("#pop_asdf").addClass("hidden");
}else{
var cookie_value = 1;
if($.cookie('pop_asdf_tmp'))
cookie_value = $.cookie('pop_asdf_tmp');
cookie_value++;
$.cookie('pop_asdf_tmp', cookie_value);
$(this).addClass("hidden");
setTimeout(function(){
$("#pop_asdf").removeClass("hidden");
}, 59000);
}
}
});
});
*/
$("#pl_but_background , #pl_but").click(function(){
loadIframe();
});
function loadIframe(data = 1){
if(data == 1){
$("#the_frame").removeAttr("style");
$("#the_frame").html("");
$('<iframe>', {
id: 'player_iframe',
src: '/prorcp/YTBhMDVhYTBlMGU4ZTI5M2Y4OTU1MGFmODk1NjYxZWQ6VUdJMkwyZHJkbVpHV1M5Nk1rZDBPV05RTW1KVlUweHlSMEpGTkRJd1N6TktUM1ZsZGxCRlptSnZWbTVVYmxwaWIyeE1aakJCTWxsa01YY3JWVE01TTJZMVZUWlVMMjR2UkU1bWFEQnliM0J3UmxGSFZYTnFWREl3U1c5cU0zcFhVMVpPTnpselpuQnZXVlZITldGMlJrUm5NbWRKUkM5eWJsRXZNRWQ0WlN0b1p6Rk5SM2hzTlc5SlUyZDZURE0zTVRGcVdWRlpOVVJTYzJKNWNXdG5kRVo1YkUxeWJrTkVRa2RyTVVkUlVGb3JabXRXVEM5WVYxRkhNVFZKT0dWNVMzQjBWV1JDVjFneE4wcENWV3B5WkhwNUwwZE5aek4zVDA0cmNFSnZXVlpwVlVobk1IRjNkR3BPVVVoc2FXTnFhSEZUYm01bmVFOU9PSEFyTDBSUFVEQm1SbXB6V21Gbk4yWm9UMFpxVjB0a1RHbEdVR2hyZWs1cGRXeFFRMmx3VjFoaVZGSlNPVmhoTkVObWMxYzNSWEpoYjFwWlpHc3ZNSGsxWmpoTGVWSldSRzF3VFZWcVUzWTVjbE42Ukc1M01uazFkV1Y1Y2todk1UaFBTMGh4V0VnemVIRlZZVGczYTFkdVJ6RTBRbE41VUdoVmVYb3daR0ZtUzNveWRFUkxRbHBDTDBwVGRWUjZNbGxHTmxWeVVtdFZZbTlxUzFoWVJtVlhWREppTjJONVJDdDVNekpXVUVsNmEwbHRXU3RzUW5aR1pWRjFXWFZNYjBSak1UZHFZME5MYjBORVpFaGtNV2hEWm04MGJrRmhSSEJ4YUV0b1NraG5jQ3R6ZEhka1NISjZiR001WmpaUlkzazRWV3RSZWtaTFMybFViRlEzT1RselJrcERTRVprUkRoSVpsSXdhR2xoYVhVMk5uZDRVa0p4VkRWbFUyMW5VMkV6U2xoMWMwVlBkVVpEWm1GVVQzWmxkek5OZFVWRGNGTkdNbGRuZURCVmRETkxjM2hLTDNsR2EwcDBXQzlZVVU4M2RXTlhjR3AzUTJaSk9HbHlhWEJKY1hKVlkwdEdlRzFUWjNRck5WZE1jMHRtTmtSak4yZHBWM3B1UldacVJIZHRSa05OVEVoc1FsZ3pkWFlyWkhwNU4xcG9ZemhzVWpSMlVTdElTM2htYTJORVZGZEJZMEU0TmpSeWFUQndkbHAyZW10SWQxY3ZjVGhRWTNGWGREVkJabmsxUVRkblVVdDZNR280TUc5RlIwNVhaVVp3ZWtkME1VZFRTRkZ4TTFkdGFWaGtaRmxHYkRSeVVuQXhhM1pEWVV0UlVWb3pkV3g1WlVjelNqWnJNR3BTYWtSdGNHeEpVa3BqZDBWR1FrSnhjSGh4UVhKM1JGQXZRV0pHY0VKQlIyMVFOV3hrY25ndk1XSTFSREk1YWxoVlQxQkpWa2xsTkd4RVVFUlNORk5GVkRGb1dsaElOMDF1TW05UFp6aFFkMjVFWW1neWJVWnpjbUpyUTBzeWJESlFUVmxHWlRCaldGaFBUMjVTZUhONWEwdElXRWxoTkRZdk1sWldhbXgzVGpoa1RVNXhkbkJZVm1GcWREZ3ZVR2RaVEVwd09UUTJjMmRuTUV0QkszcHNialpQT0RWWmFuZFZlRUl4UmpOMGRVVmFRMlpIWlhKU2RGRkpkV2hIWkUwMFVVSXlNbEZhY3psT1VtRTRWbEF6V2xwc2R6YzJTbVJGWlhSUVMwNDVhbU5WUWtFeldISXdlbVpVY25CdlUwMVJNa1JJZEZac2NYTXJZazFCY2tNMFZXZzRibE5rUjNaSlNsaDBaRzh2Y25kRE0xVlZVbGxIV0c1NlRXZHRRa0pvUm5sdlJ6bFdRMFZZV0VaRk5rOTJNRGx0TkVJM2FqVm1RMU5MZEVKR1NGbFhSREpXZDJORWNERjZRMlZaYWpsVmRVSjFkMWhHVm1NM00waExSSFJKYjFwUVpGaDJOR05vVWtsVE1VZHJaMWRzVTNrNE1HSkZia01yVlVkalRtSmlSMUZUUkhoaEwxUXJaVU54WTBkR2VuVldZakpqWkdSaGFXOU5OVVpHVkZONVUzbFFZVkpWUlRCQ1QwVm1ZejA9',
frameborder: 0,
scrolling: 'no',
allowfullscreen: 'yes',
allow: "autoplay",
style: 'height: 100%; width: 100%;'
}).appendTo('#the_frame');
$("#player_iframe").on("load", function () {
$("#the_frame").attr("style","background-image: none;");
});
}
}
// pm redirector
window.addEventListener('message', message => {
if (message.source == window) {
return; // Skip message in this event listener
}
var the_iframe = document.getElementById('player_iframe');
if(message.source == window.parent){
the_iframe.contentWindow.postMessage(message.data,'*');
}else{
window.parent.postMessage(message.data , '*');
}
});
</script>
</body>
</html>

View file

@ -1,145 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html"/>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.0-2/css/all.min.css" integrity="" crossorigin="anonymous"/>
<link rel="stylesheet" href="/style_rcp-e600e6.css?t=1744906951"/>
<style>
body {
font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
}
.hidden {
display:none;
}
#asdf {
width: 0px;
height: 0px;
}
#iframe_title {
position: absolute;
top: calc(50% + 45px);
font-size: 1.1em;
text-shadow: -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000;
width: calc(100% - 30px);
text-align: center;
padding: 0px 15px;
}
</style>
</head>
<body data-i="2085059_4x2" >
<!--<div id="pop_asdf" style="position:absolute; width:100%; height:100%; z-index:2147483650; pointer-events: none;"></div>-->
<!--<div id="loading_overlay"></div>-->
<div id="the_frame" style="background-image: none;">
<div id="pl_but_background" style="background-image: url('//image.tmdb.org/t/p/w780/dg3OindVAGZBjlT3xYKqIAdukPL.jpg');">
<div id="iframe_title">
Black Mirror (2011) S04E02 </div>
<i id="pl_but" class="fas fa-play"></i>
</div>
</div>
<div id="hidden" style="display:hidden;"></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js" integrity="sha256-1A78rJEdiWTzco6qdn3igTBv9VupN3Q1ozZNTR4WE/Y=" crossorigin="anonymous"></script>
<script src="/base64.js?t="></script>
<script src="/sbx.js?t=1751380596"></script>
<script>
/*
$(document).ready(function(){
if($.cookie('pop_asdf')){
$("#pop_asdf").addClass("hidden");
}
$("#pop_asdf").click(function(){
if(!$.cookie('pop_asdf')){
if($.cookie('pop_asdf_tmp') >= 3){
var date = new Date();
date.setTime(date.getTime() + (10800 * 1000));
$.cookie('pop_asdf', 1, { expires: date });
$("#pop_asdf").addClass("hidden");
}else{
var cookie_value = 1;
if($.cookie('pop_asdf_tmp'))
cookie_value = $.cookie('pop_asdf_tmp');
cookie_value++;
$.cookie('pop_asdf_tmp', cookie_value);
$(this).addClass("hidden");
setTimeout(function(){
$("#pop_asdf").removeClass("hidden");
}, 59000);
}
}
});
});
*/
$("#pl_but_background , #pl_but").click(function(){
loadIframe();
});
function loadIframe(data = 1){
if(data == 1){
$("#the_frame").removeAttr("style");
$("#the_frame").html("");
$('<iframe>', {
id: 'player_iframe',
src: '/prorcp/YjA1NWVjMTUxNjM1ODVmMjg4NDE5YmJjMzc5N2IwYjk6YkZGMlRVdFhNWEZ4YXpSaVFUUnZOMDE2YzI1emFYaHRTVGhXVjJoVFNTOVhWSGw1WmpoNmJURnpNREpoZEZaM2JXOWlSWEJEWWxCNWVYcHJaaTlSUTNCWVREWjVOVk41UzNWM1dGaFpaMU0zZERCWE9VZHNhR2xIYmtFelJqZ3ZjbXQ2Y1U1NVFWQmpWSGxqTm1sWVFXOUlNRW93VjBKNFltZEZValZWTm5OT1pIWktTV2RpZDFFemIydzRibUl5UzBGR1JGSmxhbWxqUmpsamNIZERLM1JMTVhwSVpVVnpUVzVrUW5ZM2FHMTRWVk0wZUVOb01HbG5iRzkzV2pGTkwxQXhMMU5vWm13MVMyMVJZV2xEWVZwNmNGaFJNakJhVWpjM1pVbGFXVkU0UzBZMVpVMXFibXBDWjIxVFJWWm1kemROZVZCdGNWTkxlRnB0U1c0eloySTJRV056VVVzd2JFNXdVa00xTW5sS1ozWjRPVE5SWmt3NGVrcDFhbTlNV0c0MmNGcHlUMWR0UkVwV1ZqSmtaVUpDZFhCVVkwOTJjVTVXY3pJMGJUQTBaa1JOZFdaTE0zSmxlVnBsZERkUGQxWnVUeTh6Vm5KWGJtOXNUVWhHVTJ0UmR6VXdPWEZoTm01dmNIQmFUR3hHU1hKVVVHZG1lbXRPWWtKbVpGbDRRMnhXT1hSWFJHeFZjekV4Y3pKaE9YTkhiVzlRYUZCSldIRlhhRGhhYWxoTU1Vb3ZTWGRTVW5wNGNVWlRkSGRYZEhCek5ta3ZPR2hCTVVWQmVVdFlWR2hKVmpZdk4weHRWeXR5U1dWSVdtTkJkMVl6VlZsV2FIQnBRak5tVkZnelRUWXhNREZrVEZRcmNVMWFORVpRVjFaTU5qZFpZbVpHV2xWSE5XTlVjakZTVEZaWlUwNHpXbkJsWnpoMVFYQlNZM0ZGUVVVNGEyNUZOREpzTVRRdk9HZHdjeXN2Ym05VVprZGhjR2hDWVhaNmR6aERjVFZKV2taQ1dqUmlWR3BMUkhaMmRUWmhSblpJVW5ad2JIQndVVGt2UWtoSGFrZHlUQzkyTmxsVlJHdHpZVXMyZGtGaFNVTlhWRmRuTVVacVVXaFlVVmhTVXlzMVpFRkhNRGRPZVVkdmNXZHpSRzVPYlZCMlRWQXJSbFpXVEhCV1UwazBOMU5CU3l0SmVYaERVV05SVTJwYWRVc3dhelpWUWpRMllXNUtWVFZMY1hobFFWRnphRk5aUTA1clIyRTFaSGt6YlVKeldsQjRTamxKZWxkekwwdzFTMDh2V2xGS0wxRkhZVXBuUkVRcmMxRXlUalJKY0RkNlFtVTNWSE4zV1dSTkwyZDFaVEJzVmpkalMwcEZORVZoYzJSWWVrNVdSVXRDTXpZM00wWXJiVnBVZEVWWk1rdEJjM1pvTmpGbGFuRjRhaTlKV21zckx6VktVbVl2T1dac1MzcFhjbGQxVFM5Q1NGcFROSFp5ZVZadVltUnRablZrUjFGamNERTJjamhOYjNVMldEa3JaRzQxVFZndmRuY3dMeXRqYkhscVFVNUVjMUEyT0RCR1ZWSm5kbXhXY0ZvM01tOW5hamt4TldzeFRtaGpWMmhHVFVkd1ltOXhXWEF3Y0U5blpITndaV2xVVDNZelJXRXhaMWxGUVdsMmVsTjRiRXhuZGtOR2FVTk1SbVF3VDFVMFZrMDJkVmwyUzJGdVJtaDBiV0pwU1ZaNmJYY3ZORFJQZVVvM2JscFhlalF3TUhnM2FFaENkRVZqVWtSRGEySXdaMVZKVUdkQ1pWZ3pOeTh3T1ZoSVFqTjFSVUUyTDFFcldqbEZSRlF5UkVOQlVUSlpabEZxUzNkME5XdG5NVTEyYzBsVFNrMTRaMFp5VkVJelJXWkNhR1ZtYTAweVZtMXJZVGRpVnpsME9ETjVjMlJGUVZGNWN5dENObEpXU0RGVlNtTlBVazl1YTBsRFptWk1ORGRVTTNwaWQxbzRlbTFOTlhCMWJrdzRWMFpJUVZOQmFXNURjMmxETkZNeWF6UkxVME4xZFhGUGRubzNORTVYUW1sU1IxVnNRMjFrTUdOdFExcE1jWEZ6Umk5blIwNDFkMVZITldSQk5HdG1SV3RWWlU0MGVFSlVSa056VDBWcmQwdHNaelpUVkE9PQ--',
frameborder: 0,
scrolling: 'no',
allowfullscreen: 'yes',
allow: "autoplay",
style: 'height: 100%; width: 100%;'
}).appendTo('#the_frame');
$("#player_iframe").on("load", function () {
$("#the_frame").attr("style","background-image: none;");
});
}
}
// pm redirector
window.addEventListener('message', message => {
if (message.source == window) {
return; // Skip message in this event listener
}
var the_iframe = document.getElementById('player_iframe');
if(message.source == window.parent){
the_iframe.contentWindow.postMessage(message.data,'*');
}else{
window.parent.postMessage(message.data , '*');
}
});
</script>
</body>
</html>

File diff suppressed because one or more lines are too long

View file

@ -1,8 +0,0 @@
#EXTM3U
#EXT-X-INDEPENDENT-SEGMENTS
#EXT-X-STREAM-INF:BANDWIDTH=884887,CODECS="mp4a.40.2,avc1.42c01e",RESOLUTION=640x346,FRAME-RATE=25,VIDEO-RANGE=SDR,CLOSED-CAPTIONS=NONE
/pl/H4sIAAAAAAAAAwXB3ZKCIBgA0FcC0X72bmuU1pRW4EPlDsHGkBxr2nXz6fcct.lwl_Sx6XC0M1tntrYnZtejTXzF6Hr9UMjGdb3PWTTcWIqLc8Rb8C0qqf6WkmEZhkI0LVG1OnCKcOlZYikfOc6K1g.RTUdUZrMA0D_KcykgqyT9m.wUDoYOF1vnSquQKOKai9SNgUDNCs8z_nqatfyVaf4QgXGlZtD3MFji0h7CiaFEAsXHi3htoPmMxO3l69TJCu3f_PhigLNayXJhqz4WpH1XUx4LPL_PSC8ahkexukrfs4cjagNeEwGIOO.ybsomATm1mJ3MFGY18gpwWARhQa7D2HmNS1C1HvUCEu3_ASDZlyFBAQAA/e2f2579229bebcfbb0eafde12cbc1bf9/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=2911865,CODECS="mp4a.40.2,avc1.42c01f",RESOLUTION=1280x694,FRAME-RATE=25,VIDEO-RANGE=SDR,CLOSED-CAPTIONS=NONE
/pl/H4sIAAAAAAAAAwXB3ZKCIBgA0FcC0X72bmuU1pRW4EPlDsHGkBxr2nXz6fcct.lwl_Sx6XC0M1tntrYnZtejTXzF6Hr9UMjGdb3PWTTcWIqLc8Rb8C0qqf6WkmEZhkI0LVG1OnCKcOlZYikfOc6K1g.RTUdUZrMA0D_KcykgqyT9m.wUDoYOF1vnSquQKOKai9SNgUDNCs8z_nqatfyVaf4QgXGlZtD3MFji0h7CiaFEAsXHi3htoPmMxO3l69TJCu3f_PhigLNayXJhqz4WpH1XUx4LPL_PSC8ahkexukrfs4cjagNeEwGIOO.ybsomATm1mJ3MFGY18gpwWARhQa7D2HmNS1C1HvUCEu3_ASDZlyFBAQAA/0e258eeccefba231686dc455bae2c1be/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=5301648,CODECS="mp4a.40.2,avc1.42c028",RESOLUTION=1920x1040,FRAME-RATE=25,VIDEO-RANGE=SDR,CLOSED-CAPTIONS=NONE
/pl/H4sIAAAAAAAAAwXB3ZKCIBgA0FcC0X72bmuU1pRW4EPlDsHGkBxr2nXz6fcct.lwl_Sx6XC0M1tntrYnZtejTXzF6Hr9UMjGdb3PWTTcWIqLc8Rb8C0qqf6WkmEZhkI0LVG1OnCKcOlZYikfOc6K1g.RTUdUZrMA0D_KcykgqyT9m.wUDoYOF1vnSquQKOKai9SNgUDNCs8z_nqatfyVaf4QgXGlZtD3MFji0h7CiaFEAsXHi3htoPmMxO3l69TJCu3f_PhigLNayXJhqz4WpH1XUx4LPL_PSC8ahkexukrfs4cjagNeEwGIOO.ybsomATm1mJ3MFGY18gpwWARhQa7D2HmNS1C1HvUCEu3_ASDZlyFBAQAA/f4afc016a800ba375016f4bc9771890f/index.m3u8

View file

@ -1,6 +0,0 @@
#EXTM3U
#EXT-X-INDEPENDENT-SEGMENTS
#EXT-X-STREAM-INF:BANDWIDTH=833322,CODECS="mp4a.40.2,avc1.42c01e",RESOLUTION=640x358,FRAME-RATE=24,VIDEO-RANGE=SDR,CLOSED-CAPTIONS=NONE
/pl/H4sIAAAAAAAAAw3O3W6CMBgA0FdqQRR2p2IlXQqjtF9_7qCQYEHGwATH02_nCc7JtTFKgqZBxy4OExyfGhc3iYtdjZyL2g85kA0y.BHX.CAUCaUABBOpK88zINaX4.XLYgtMu6jc26PF53eREt0ALfg0PxRhiwioqqYWq9vwZprhHOWKpVS43S1C92vnqTXBWJVAkPC94Zpt.ZMbuM9G3NfABvOxmXj2ifClS8._.TBeYcA39jyEbZizSlyIkPxmCRFmpKyWUVENs5apWQD3r0JFYTPM4___1flclwqHrZe7nIBytC3u8SIcw1YJ.nCea6f4LghDRuJV.iFw2djXKc1yTCVgWHl6DgHsdylQ8gd2WpeiQQEAAA--/f2a0a2e3ac935bed168e40c6c28105d7/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=2728709,CODECS="mp4a.40.2,avc1.64001f",RESOLUTION=1280x714,FRAME-RATE=24,VIDEO-RANGE=SDR,CLOSED-CAPTIONS=NONE
/pl/H4sIAAAAAAAAAw3O3W6CMBgA0FdqQRR2p2IlXQqjtF9_7qCQYEHGwATH02_nCc7JtTFKgqZBxy4OExyfGhc3iYtdjZyL2g85kA0y.BHX.CAUCaUABBOpK88zINaX4.XLYgtMu6jc26PF53eREt0ALfg0PxRhiwioqqYWq9vwZprhHOWKpVS43S1C92vnqTXBWJVAkPC94Zpt.ZMbuM9G3NfABvOxmXj2ifClS8._.TBeYcA39jyEbZizSlyIkPxmCRFmpKyWUVENs5apWQD3r0JFYTPM4___1flclwqHrZe7nIBytC3u8SIcw1YJ.nCea6f4LghDRuJV.iFw2djXKc1yTCVgWHl6DgHsdylQ8gd2WpeiQQEAAA--/ea18a1816b821e1ba4ee5d4a76b0b7cf/index.m3u8

View file

@ -1,274 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<title>Full Metal Jacket (1987)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Access-Control-Allow-Origin" content="*" />
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.0-2/css/all.min.css" integrity="" crossorigin="anonymous"/>
<link rel="stylesheet" href="/style.css?t=1710289820"/>
<style>
.mctitle a {
font-size:1em !important;
}
#AdWidgetContainer {
position: fixed !important;
transition: transform 1s linear 0s !important;
opacity: 1 !important;
transform: translate(0px, 0px) !important;
}
#ad720 {
width: 100%;
position: absolute;
bottom: 0;
display: flex;
align-items: center;
justify-content: center;
color: white;
}
#ad720 .ad_container {
max-width: 720px;
position: relative;
}
#ad720 .ad_container img {
width: 100%;
height: auto;
}
#ad720 .ad_container #close {
position: absolute;
top: 3px;
right: 3px;
color: white;
opacity: 0.7;
}
#ad720 .ad_container #close:hover {
opacity: 1;
cursor: pointer;
}
#onexbet {
position: absolute;
top: calc(50% - 25px);
left: -30px;
transform: rotate(-90deg);
}
#onexbet img {
width: 100px;
height: 36.5px;
}
</style>
</head>
<body data-i="93058" >
<div id="loading_overlay"></div>
<div id="the_frame">
<iframe id="player_iframe" src="//cloudnestra.com/rcp/ZDM3NDM0YzEyMjAzYTUyMGVmZjNkMzVlNTcxODcwOTE6VlZoNlEyTlJkRkZuTm5wdFFqTldkWGhJTjB0WllraG1PV3BKTjI5VFVDOWtLM28xUkRWeFExVlpiako0ZDNCS1NXbE5ZVlJ2V1VoMmQyTnNlRVF4V0dodlVEaDNUVGxwY1dWQ1prRnRlVGx3WjJGUGFVeHZla1kyWlZkbVpteENWRTB2UW5sVlowUmxMemRMT0hKemVIbEZRbTlpVW05VmJURjZhVE5MVDBjdlJWbHBZWFJFVVdaeVpYQkZORkpSZUZVeFlVeHRTbEIzYUVsWlJFWXlUVVZYVlc1VVpUSkZaMnBSWmxGWFNYbEthbkpaUVZVMk5XdDVUV056TkRKWk1UbE1ZVGx5WlZsdFFXMVVSVzVPYnpReFoyUTRha2d3WXpGV1VYaFZiRVZSUWpOSk5tcE1WMnR6VEhBNU1uRlJaR1ZFTlhOR09FaFNSM0VyYnpRelNtdERReThyUTJkMk5WZ3ljM2R2TmpkaU9FdE1UbTlUZFRocmFHdzFaeTkzYUVWTGNWZEdNRmt2VmpCc09XeDFNWEpqVWxabFNUVkVUVlpRVHpCeU9HOHljMk5pU0VsalNrOUtiak56VjFSNk4waFdOVk5TUlVodGNEaFJlRWhyWTJ0MFJqRXpWR0Z3UjJOYVJFUnlPR3QwWTFSVlowdEZWVU4yUTJKS05rZEpOM2w2ZDIxemJEQjVSMnRETkhOVlNXaDRkamhSUjNKeVZta3pjRkpWTlhFelMzbDJVVFl2Y0ZkNVp6Qm9NMVpsTUcxaGRua3Jha2RSTlZCSGRXWlFkMnBVZEZCVFNXOXBkVlJhYUhwalJESkpORXMyWlRWV1QzQXlTMWhvVjJRelIwbzFNVXhNYmpsVFpHVlJSVUZDZUhSc1VHOWhibk4yWjJkb2FGcHZZMVJQYmtOaVFrdEViVXMzVDJGTlQwNXRUVlZEV21wRGJFbGtVMEl2V0VOMmFtSkdRVUpPYjFOWlRFRXlWSFF2YkZGS2FUZFlUblZ1ZGtveVduTnhTVGw2VGtwTFVIWjRRVVJZTXpCelRpOW1Va0ZzVm1sUk55OW9NVGx3WWxaSFRGRkJhbXRLVWtkT2NWZG9SMU51VVZwWU1qRkZZVU5hUkc0NFNGVnBkVm8xZGpOcmJXOTRabU5qZGt4QmRUTnVkeTgwUTJWTk9IWnNOWE4yU2xCcVRYaDRSVkZxYm1WaU1tbHBjM1psVmpOUFZXNVFUMEZUU0hVelZVZEZlV2syWmtGUFYwWjRVR0pwT0hVelZuVnlla1J4YUhkVmF6Y3pjMGhUY0dKbFoycDBNR05sZVZGeGVqRlJSMWxRY0RWaVpUTnVhblJvUTJaNk5YUlVNbEp3U1RReE0ycHRUMjVwY1ZwdEswSTNjV1ZRYzA1b2RVNDNXbTlrUzNsRU5GWmFZMFo1ZWtrMkswZENiUzkwVlhOWFdrRlJkSGhJVGs1eVRERllWa0pYUmpZd1dGZFVNblJNUTJNNVVFOWFkMU14TlZjeVRVZHNSa2hJY3l0V01qaHROa2R4ZG5SclMzQlBaVk51VVZrd1FrWnFZV2xJYVRoeGFXVTVXRWxzUjFNNWNXZG1ibXN4YUhaTVMzVTNkV2RpWkVacWNVcG9TME50TVhGYVdYaE1iM0JSTVM4ellXeENVMngxVlhSM1ZXTjFURU5aZFRobGQxWk9MekJSZWxoVFlVczBhMGxUYUZKQ2JtVk1XV1pPTDJOU1dIVTBkRTFFVGl0MFRWVk9TR1JNV0RoMVNHdHdSMlJWYW1kbVdqZDZObFJKWTA5clpEUnZSWEY2VFhVeU1VRjZXbFF4S3pnMVZXMVljamxGTlRocldraG1Ra05MZFU5NVdXaHVWemRNV0VKQ00wSkdZVWxJUzIxbE1XODNaMUZ4ZGpCclEwVnJOVkZZZG5oUk4xVlFWek0wU0d0TGR6Sk5UMmRWUmpjMU5FbHVlWE40VDBOYVZESlFTbGsyZGs0eVNFRkhlRGQwVnl0dk0xUkNlWGQzTWpWb2VsUTVZbUU0VG5CUVMyZGxhMkl6Y1VvMWVtMUljMHh3V2tGbVFVOXBhSGQ0U0Rad1dGVXdXalJVTWk5ell5dEpiU3RXWm5ORVJuTmlkejA9" frameborder="0" scrolling="no" allowfullscreen="yes" style="height: 100%; width: 100%;"></iframe>
</div>
<!--
<div class="servers" style="display: none; " >
<i class="serversToggle fas fa-cloud"></i>
<div class="serversList">
<div class="server" data-hash="ZDM3NDM0YzEyMjAzYTUyMGVmZjNkMzVlNTcxODcwOTE6VlZoNlEyTlJkRkZuTm5wdFFqTldkWGhJTjB0WllraG1PV3BKTjI5VFVDOWtLM28xUkRWeFExVlpiako0ZDNCS1NXbE5ZVlJ2V1VoMmQyTnNlRVF4V0dodlVEaDNUVGxwY1dWQ1prRnRlVGx3WjJGUGFVeHZla1kyWlZkbVpteENWRTB2UW5sVlowUmxMemRMT0hKemVIbEZRbTlpVW05VmJURjZhVE5MVDBjdlJWbHBZWFJFVVdaeVpYQkZORkpSZUZVeFlVeHRTbEIzYUVsWlJFWXlUVVZYVlc1VVpUSkZaMnBSWmxGWFNYbEthbkpaUVZVMk5XdDVUV056TkRKWk1UbE1ZVGx5WlZsdFFXMVVSVzVPYnpReFoyUTRha2d3WXpGV1VYaFZiRVZSUWpOSk5tcE1WMnR6VEhBNU1uRlJaR1ZFTlhOR09FaFNSM0VyYnpRelNtdERReThyUTJkMk5WZ3ljM2R2TmpkaU9FdE1UbTlUZFRocmFHdzFaeTkzYUVWTGNWZEdNRmt2VmpCc09XeDFNWEpqVWxabFNUVkVUVlpRVHpCeU9HOHljMk5pU0VsalNrOUtiak56VjFSNk4waFdOVk5TUlVodGNEaFJlRWhyWTJ0MFJqRXpWR0Z3UjJOYVJFUnlPR3QwWTFSVlowdEZWVU4yUTJKS05rZEpOM2w2ZDIxemJEQjVSMnRETkhOVlNXaDRkamhSUjNKeVZta3pjRkpWTlhFelMzbDJVVFl2Y0ZkNVp6Qm9NMVpsTUcxaGRua3Jha2RSTlZCSGRXWlFkMnBVZEZCVFNXOXBkVlJhYUhwalJESkpORXMyWlRWV1QzQXlTMWhvVjJRelIwbzFNVXhNYmpsVFpHVlJSVUZDZUhSc1VHOWhibk4yWjJkb2FGcHZZMVJQYmtOaVFrdEViVXMzVDJGTlQwNXRUVlZEV21wRGJFbGtVMEl2V0VOMmFtSkdRVUpPYjFOWlRFRXlWSFF2YkZGS2FUZFlUblZ1ZGtveVduTnhTVGw2VGtwTFVIWjRRVVJZTXpCelRpOW1Va0ZzVm1sUk55OW9NVGx3WWxaSFRGRkJhbXRLVWtkT2NWZG9SMU51VVZwWU1qRkZZVU5hUkc0NFNGVnBkVm8xZGpOcmJXOTRabU5qZGt4QmRUTnVkeTgwUTJWTk9IWnNOWE4yU2xCcVRYaDRSVkZxYm1WaU1tbHBjM1psVmpOUFZXNVFUMEZUU0hVelZVZEZlV2syWmtGUFYwWjRVR0pwT0hVelZuVnlla1J4YUhkVmF6Y3pjMGhUY0dKbFoycDBNR05sZVZGeGVqRlJSMWxRY0RWaVpUTnVhblJvUTJaNk5YUlVNbEp3U1RReE0ycHRUMjVwY1ZwdEswSTNjV1ZRYzA1b2RVNDNXbTlrUzNsRU5GWmFZMFo1ZWtrMkswZENiUzkwVlhOWFdrRlJkSGhJVGs1eVRERllWa0pYUmpZd1dGZFVNblJNUTJNNVVFOWFkMU14TlZjeVRVZHNSa2hJY3l0V01qaHROa2R4ZG5SclMzQlBaVk51VVZrd1FrWnFZV2xJYVRoeGFXVTVXRWxzUjFNNWNXZG1ibXN4YUhaTVMzVTNkV2RpWkVacWNVcG9TME50TVhGYVdYaE1iM0JSTVM4ellXeENVMngxVlhSM1ZXTjFURU5aZFRobGQxWk9MekJSZWxoVFlVczBhMGxUYUZKQ2JtVk1XV1pPTDJOU1dIVTBkRTFFVGl0MFRWVk9TR1JNV0RoMVNHdHdSMlJWYW1kbVdqZDZObFJKWTA5clpEUnZSWEY2VFhVeU1VRjZXbFF4S3pnMVZXMVljamxGTlRocldraG1Ra05MZFU5NVdXaHVWemRNV0VKQ00wSkdZVWxJUzIxbE1XODNaMUZ4ZGpCclEwVnJOVkZZZG5oUk4xVlFWek0wU0d0TGR6Sk5UMmRWUmpjMU5FbHVlWE40VDBOYVZESlFTbGsyZGs0eVNFRkhlRGQwVnl0dk0xUkNlWGQzTWpWb2VsUTVZbUU0VG5CUVMyZGxhMkl6Y1VvMWVtMUljMHh3V2tGbVFVOXBhSGQ0U0Rad1dGVXdXalJVTWk5ell5dEpiU3RXWm5ORVJuTmlkejA9">CloudStream Pro</div>
<div class="server" data-hash="ZDJiY2QxNzViOGFjNmRmYjBlMjQ2ZmRkYmU1YjBmZmY6Um1RMFEwcGFLMk5sU0VkblZIaDBjMjlaYm01SWJVWkZNR0ZrUTJGQ1NHNDNNVTlRWm1sRlVXNHpRbXhFVG5kR2FqUjZValZ2YVdSQlNuTkNVMUIzWkZwdllrTjNhMWxvTlhCb2IwbEhRbFpCYzFFdmFVMXFTelZHUlZBcmRXSlVkbWN4VlRGRGRuWndkM0pXTVRFNE5sUkRZbFpNVTAxaU5tMU1jbmxxVUZCMFltNUtTVlpIUm1KV09HbzVXVFoySzNCdVpHRkhOVFJaV2xGNGJVOHliVVZGWjBseVVqaERiazlITW5ZM2NsZEhVbVZzZFhkdGFGaG1LMVV3YjJVMQ--">2Embed</div>
<div class="server" data-hash="NDNmZWFlNzVmZDQ0MWZhODczN2QwNTE2Yzk2YzljNjk6Y25ZdlZYRkRiUzkyUm5BcmFFVkZTSE5xV2pRcmJHZEZUR2MyY2tGdE9WZHdOSFJNVld4bFdYZzBOSEUzUnpkNlNtbHRORVJyV1UxSlozVk9WelJrVjJ4Q1pYa3dLMGt5TW1oMGRFUm5VRlpHUkZWVU5tYzlQUT09">Superembed</div>
</div>
</div>
-->
<script>
var sb_test = true;
</script>
<!--<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>-->
<script src="/jquery-3.7.1.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/blueimp-md5/2.16.0/js/md5.min.js" integrity="" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/js-cookie/3.0.5/js.cookie.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js" integrity="sha512-3j3VU6WC5rPQB4Ld1jnLV7Kd5xr+cq9avvhwqzbH/taCRNURoeEpoPBK9pDyeukwSxwRPJ8fDgvYXd6SkaZ2TA==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script src="/base64.js?t=1688387834"></script>
<script src="/sources.js?t=1745104089"></script>
<script src="/reporting.js?t=1688387834"></script>
<script src="//cloudnestra.com/asdf.js"></script>
<script src="/sbx.js?t=1754734900"></script>
<script>
var lc_on = IsLcOn();
var the_iframe = document.getElementById('player_iframe');
current_sub_name = "sub_"+$("body").data("i");
if ($("body").data("s") && $("body").data("e")){
current_sub_name += "_"+$("body").data("s")+"x"+$("body").data("e");
}
var lc_pro_cc = true;
var current_sub_data = 0;
if(lc_on){
var current_sub_data_tmp = JSON.parse(localStorage.getItem(current_sub_name));
}
var sub_hash = '0c7e9a7d03c674706dd16dcf5debaf29';
/*
if(current_sub_data_tmp != null){
if (typeof current_sub_data_tmp === 'object'){
//console.log(current_sub_data_tmp);
if(current_sub_data_tmp.sub_hash == sub_hash)
current_sub_data = current_sub_data_tmp;
}
}
*/
// pm redirector
window.addEventListener('message', message => {
if (message.source == window) {
return; // Skip message in this event listener
}
if(message.data.type == "PLAYER_EVENT"){
//console.log(message.data);
}
if(message.data == "reload_page"){
window.location.reload();
}
if(message.data == "tvfull"){
$(".servers")[0].css('left', '100px');
}
if(message.source == window.parent){
var the_iframe = document.getElementById('player_iframe');
the_iframe.contentWindow.postMessage(message.data,'*');
}else{
window.parent.postMessage(message.data , '*');
}
});
function IsLcOn(){
var is_on = false;
try {
localStorage.setItem('test_lc' , "1");
if(localStorage.getItem('test_lc') == "1"){
is_on = true
}
}
catch(err) {
return false;
}
return is_on;
}
$("#iFrameId").on("load", function () {
});
$("#ad720 #close").click(function(){
$(this).parent().parent().hide();
$.cookie("ad720", "1" ,
{
expires : 0.001,
path: "/;SameSite=None",
secure: true
}
);
});
$(document).ready(function(){
$(".servers").show();
if(window.frameElement === null){
$("#top_buttons_parent").show();
}else{
var ref = window.frameElement.getAttribute('data-ref');
if(ref != null){
$(".servers").css("left","100px")
if(ref.length > 3){
$.get("/is_vip_str.php?ref="+encodeURIComponent(ref), function(data, status){
if(data == "1"){
$("#top_buttons_parent").hide();
}else{
$("#top_buttons_parent").show();
}
});
}else{
$("#top_buttons_parent").show();
}
}else{
$("#top_buttons_parent").show();
}
}
});
</script>
<!-- Histats.com (div with counter) --><div id="histats_counter"></div>
<!-- Histats.com START (aync)-->
<script type="text/javascript">var _Hasync= _Hasync|| [];
_Hasync.push(['Histats.start', '1,4873540,4,511,95,18,00000000']);
_Hasync.push(['Histats.fasi', '1']);
_Hasync.push(['Histats.track_hits', '']);
_Hasync.push(['Histats.framed_page', '']);
(function() {
var hs = document.createElement('script'); hs.type = 'text/javascript'; hs.async = true;
hs.src = ('//s10.histats.com/js15_as.js');
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(hs);
})();</script>
<noscript><a href="/" target="_blank"><img src="//sstatic1.histats.com/0.gif?4873540&101" alt="free counter with statistics" border="0"></a></noscript>
<!-- Histats.com END -->
<script src='https://unpkg.com/disable-devtool@0.3.9/disable-devtool.min.js#/misdir.js'></script>
<script>
DisableDevtool({
clearLog: true ,// Whether to clear the log every time
disableSelect: true , // Whether to disable selection text Default is false
disableCopy: true , // Whether to disable copying, default is false
disableCut: true , // Whether to disable cutting, default is false
disablePaste: true ,
disableIframeParents: false // Whether all parent windows are disabled in the iframe
})
</script>
<script data-ssr="1" data-cfasync="false" async type="text/javascript" src="//pb.rootcapruntime.cyou/r6967971082834/131608"></script>
</body>
</html>

View file

@ -1,274 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<title>Black Mirror (2011) S04E02</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Access-Control-Allow-Origin" content="*" />
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.0-2/css/all.min.css" integrity="" crossorigin="anonymous"/>
<link rel="stylesheet" href="/style.css?t=1710289820"/>
<style>
.mctitle a {
font-size:1em !important;
}
#AdWidgetContainer {
position: fixed !important;
transition: transform 1s linear 0s !important;
opacity: 1 !important;
transform: translate(0px, 0px) !important;
}
#ad720 {
width: 100%;
position: absolute;
bottom: 0;
display: flex;
align-items: center;
justify-content: center;
color: white;
}
#ad720 .ad_container {
max-width: 720px;
position: relative;
}
#ad720 .ad_container img {
width: 100%;
height: auto;
}
#ad720 .ad_container #close {
position: absolute;
top: 3px;
right: 3px;
color: white;
opacity: 0.7;
}
#ad720 .ad_container #close:hover {
opacity: 1;
cursor: pointer;
}
#onexbet {
position: absolute;
top: calc(50% - 25px);
left: -30px;
transform: rotate(-90deg);
}
#onexbet img {
width: 100px;
height: 36.5px;
}
</style>
</head>
<body data-i="2085059" data-s="4" data-e="2" >
<div id="loading_overlay"></div>
<div id="the_frame">
<iframe id="player_iframe" src="//cloudnestra.com/rcp/MTQ1ZTU4OGFjMGFlYTcwMzJkNzRhYzBkMDE0M2YxMjU6ZVhoQlRYRm1SemRyU0hOVGEzRkNVWEJsTUdOMGFsbzFSa3hqYzNkbFYzUmtObHBzTHpoNU9EaEJUSFoyYW1Wa2VtTklOVEpQU25Kb1MyRm1MMVJGY1hkbU1UWk9ObkkwTVdKMlVXcDVZM3B6Unl0T1pXOTZVbk5sUmt4bllXdEdNVGRCT0M4NGRYSnZSeTgxVUV0NlMwSTNTMWRUVmxWQ2JsRkRhWG94V0hoVVpYZzJUbG92UVZack9Vc3ZOMUYzTUM5WEwydEJiMlZUTXpVNWJVbzROMHhUTVZseWRGSlZTV2xGUmxSTmJ5OVRLMVkxVkRkbVJGSmhjVXMxUlVOUFUyUklTR2h1TVZodGJVNXBTa1ZLUjNaWU5uTkxibkZrWTB4elkwZEpNVll5Vkc1M2NGUjVaMjlwU1RsdFZVWlJibXBHWTA5NlpscHBhUzlaU1RKVVVFdHFhMGM0V2twMVowMDRXR1E1VERGUmNqaDFkRVJhYWtKVVZWWnlWME40VVZOYVVURnNlbGQwYjIxM05XaGhWVmhtV0hwM05VWldkMWxvWjJFNWFscFFSRkZMT1hSamVIQlBWMjUxVG1Ga1lrZHlVRTVTT0dOcFVFSldOVXgwVERKVVRGRjVOWFZsVUZWYVNVNXJTVzVaZVhOa1RWSlZTMmhVTjBwaWJpdFRUbWxPY1hNNVF6TnVRME54UjFWcFdra3lWbUoyYmk5c2MzbEhZMnhGU1ZJeVJrNTJPRzl2TXl0cVdXUTFRakJ4ZERKWE5EWnRSMEZ2YlZaMUt6STNVV3hVVG5wRU0wRTVhVEVyUTJwNVkwTm1VV1p1WVRaUVIyTXJRV1kwT0c4MmQxaERaMVZTUkVaeU1YbDJhMFJGYldkbmJUZDJlRTF6V25Cb1VHUkxXbTFzYWxCMGNrdERlazVCWkRGeFV6SlhURzVpWVZKRVVVcEZTV1psZFdFeFNVRmFlblpqYTJadk4zSndVRnBOTVU5M1QxbE1NMHhZUm5wR1ZXOXpUSFp4WXpWdVZFSXhlSFZtYWxsb09TOUpVMFZzZGtwc1JqRnFVMlJYVkRGblFreElNbTgwYTFJeVJWbEpRM0ZMSzFNMlozVkhRMVJRWnk5cksycEtZV3REUjBoNlMycG5WM2N3YmtkWVkxbFJMMHRxZWpsS2VHd3JZV3h0V2trMVZuTm5Sa1V6Y25WSU5sTlRkbk12YUVkYVlqa3haSFU0YzBSd1kwdGpSVFpJZWpsTlRHZG5OalpKWTFnd09GWmFTRGRMVnk5V01rb3pXbGQxYjB4aU9UUldWbloxUnpGWkt6Tm5Vbkl4UzIxNGF5OXdkSFJoYlc5bmJrZExVblExVkZOWWFFZHZNMWRXYkZGNVIwcDNjbVpyTmxaSk1FczFVVmhFV1dscGFqaG9hVVJsYTNWTFJXZDBMM1IzSzIxWlUxWjViRkZQYVVwdWRFOUpiVTFVYmsxRlJsbzRXRWxyUm5Nd1dsVlJTbXQzVVZRM0x6ZG9keTlCT0VSRFZtYzFZa1pvVVRKWlp6TTFRMmxJSzFOcFZUWXhSMEYxYlRWaGNqTnVXVWgyTjI5WmQyNVRka2N4WlRaaVEyWkdUMDE1YUhCaWJ6bHhMMGRyUjJORFRVVnBNRzgyZG5aNGFsWnpkVUkwVVc1VVNtWTFiVGN4Y2tOMlIyUlVjRlZ3U2xveE5rVXZTbTg0VEVwa09WWmlPRmR0U1Zrd05sUXlaQ3RSV2pGVFkyWlliMjVYVERGdGIxUk1aMk41Wlc1SVpUVlNVVFJ5VjB0Q1FXTm1PREp4U21OSkswYzFSVTlGTVZsMmMydHVSRGxuYmtKU09GaE9PRzluU0RoRFozbE1jVTlST0RKM1FYQlBRMWR3TURWelNXUnhlWGRpU2xSWVExaFhLMHBKUTBSNGMxZHhXQ3RKVUdVM1RuWktaa0Y2UVZONk1TdDZhVmhyUTI1S1R5OWhSbEo1WjJWeE4xaHBha3BQVERkTlUzZHplRUVyTURsRFFpdFlRMmRxVkhKNFJHTk5SRVZWUkVOQmMyWkVRak0xU2poVFkzaHRlREozTXpsWmJTOXVSMFo0UlZjNE1FaE5jMEYwUkVaNU1tdEJjMEl5Y3poM1N6UTRVVzg0Tm5KTlp6Wm1jbXRXY1E9PQ--" frameborder="0" scrolling="no" allowfullscreen="yes" style="height: 100%; width: 100%;"></iframe>
</div>
<!--
<div class="servers" style="display: none; " >
<i class="serversToggle fas fa-cloud"></i>
<div class="serversList">
<div class="server" data-hash="MTQ1ZTU4OGFjMGFlYTcwMzJkNzRhYzBkMDE0M2YxMjU6ZVhoQlRYRm1SemRyU0hOVGEzRkNVWEJsTUdOMGFsbzFSa3hqYzNkbFYzUmtObHBzTHpoNU9EaEJUSFoyYW1Wa2VtTklOVEpQU25Kb1MyRm1MMVJGY1hkbU1UWk9ObkkwTVdKMlVXcDVZM3B6Unl0T1pXOTZVbk5sUmt4bllXdEdNVGRCT0M4NGRYSnZSeTgxVUV0NlMwSTNTMWRUVmxWQ2JsRkRhWG94V0hoVVpYZzJUbG92UVZack9Vc3ZOMUYzTUM5WEwydEJiMlZUTXpVNWJVbzROMHhUTVZseWRGSlZTV2xGUmxSTmJ5OVRLMVkxVkRkbVJGSmhjVXMxUlVOUFUyUklTR2h1TVZodGJVNXBTa1ZLUjNaWU5uTkxibkZrWTB4elkwZEpNVll5Vkc1M2NGUjVaMjlwU1RsdFZVWlJibXBHWTA5NlpscHBhUzlaU1RKVVVFdHFhMGM0V2twMVowMDRXR1E1VERGUmNqaDFkRVJhYWtKVVZWWnlWME40VVZOYVVURnNlbGQwYjIxM05XaGhWVmhtV0hwM05VWldkMWxvWjJFNWFscFFSRkZMT1hSamVIQlBWMjUxVG1Ga1lrZHlVRTVTT0dOcFVFSldOVXgwVERKVVRGRjVOWFZsVUZWYVNVNXJTVzVaZVhOa1RWSlZTMmhVTjBwaWJpdFRUbWxPY1hNNVF6TnVRME54UjFWcFdra3lWbUoyYmk5c2MzbEhZMnhGU1ZJeVJrNTJPRzl2TXl0cVdXUTFRakJ4ZERKWE5EWnRSMEZ2YlZaMUt6STNVV3hVVG5wRU0wRTVhVEVyUTJwNVkwTm1VV1p1WVRaUVIyTXJRV1kwT0c4MmQxaERaMVZTUkVaeU1YbDJhMFJGYldkbmJUZDJlRTF6V25Cb1VHUkxXbTFzYWxCMGNrdERlazVCWkRGeFV6SlhURzVpWVZKRVVVcEZTV1psZFdFeFNVRmFlblpqYTJadk4zSndVRnBOTVU5M1QxbE1NMHhZUm5wR1ZXOXpUSFp4WXpWdVZFSXhlSFZtYWxsb09TOUpVMFZzZGtwc1JqRnFVMlJYVkRGblFreElNbTgwYTFJeVJWbEpRM0ZMSzFNMlozVkhRMVJRWnk5cksycEtZV3REUjBoNlMycG5WM2N3YmtkWVkxbFJMMHRxZWpsS2VHd3JZV3h0V2trMVZuTm5Sa1V6Y25WSU5sTlRkbk12YUVkYVlqa3haSFU0YzBSd1kwdGpSVFpJZWpsTlRHZG5OalpKWTFnd09GWmFTRGRMVnk5V01rb3pXbGQxYjB4aU9UUldWbloxUnpGWkt6Tm5Vbkl4UzIxNGF5OXdkSFJoYlc5bmJrZExVblExVkZOWWFFZHZNMWRXYkZGNVIwcDNjbVpyTmxaSk1FczFVVmhFV1dscGFqaG9hVVJsYTNWTFJXZDBMM1IzSzIxWlUxWjViRkZQYVVwdWRFOUpiVTFVYmsxRlJsbzRXRWxyUm5Nd1dsVlJTbXQzVVZRM0x6ZG9keTlCT0VSRFZtYzFZa1pvVVRKWlp6TTFRMmxJSzFOcFZUWXhSMEYxYlRWaGNqTnVXVWgyTjI5WmQyNVRka2N4WlRaaVEyWkdUMDE1YUhCaWJ6bHhMMGRyUjJORFRVVnBNRzgyZG5aNGFsWnpkVUkwVVc1VVNtWTFiVGN4Y2tOMlIyUlVjRlZ3U2xveE5rVXZTbTg0VEVwa09WWmlPRmR0U1Zrd05sUXlaQ3RSV2pGVFkyWlliMjVYVERGdGIxUk1aMk41Wlc1SVpUVlNVVFJ5VjB0Q1FXTm1PREp4U21OSkswYzFSVTlGTVZsMmMydHVSRGxuYmtKU09GaE9PRzluU0RoRFozbE1jVTlST0RKM1FYQlBRMWR3TURWelNXUnhlWGRpU2xSWVExaFhLMHBKUTBSNGMxZHhXQ3RKVUdVM1RuWktaa0Y2UVZONk1TdDZhVmhyUTI1S1R5OWhSbEo1WjJWeE4xaHBha3BQVERkTlUzZHplRUVyTURsRFFpdFlRMmRxVkhKNFJHTk5SRVZWUkVOQmMyWkVRak0xU2poVFkzaHRlREozTXpsWmJTOXVSMFo0UlZjNE1FaE5jMEYwUkVaNU1tdEJjMEl5Y3poM1N6UTRVVzg0Tm5KTlp6Wm1jbXRXY1E9PQ--">CloudStream Pro</div>
<div class="server" data-hash="OGQyZDY4MTBjY2I2ZjBkOTg0YzMyODZkZTVhNGJlODM6YjBjeU0zcFhWM0pKT0ZGSmFXcFFia1kxVG1kNVpHVmpkVE5ZZUVkMFdHUklXRTh5UjAxWGVrTmhTR042TVhGaFRGcEtSUzlSV0V0Q1duSkJUWFpIV0RCWlpHRktZalJ0Tld0QmNYTTBTelpPYkhWVmIwaDJVbkpIZVZjMGMwOUllbEJhVjNKNk56SkRjamR1VEdwTU4wVXpMM1JFV2pkSGEyWnRLME5VVDFWWVZ6RTRWREY0YzJsRmFtTldUbWhvT0RCeFN6bEljVTF1U1ZSRFUzVmxTVlIxVGtzMGRtVjVRbmhoWnpkMVdtNVRlRTAzYW04NVNITkxXbms0V25wcA--">2Embed</div>
<div class="server" data-hash="NWQ2MjU3YTg3MmViYzMzZThhMjk0NDdkODAwNDI4ZDk6ZDNReU9ISndXbTg0U0RSd09YWmlaQ3N5U20xVU1EazBZVVl4TVZkaVltTXZZME13WW1oSGJHbG9WemxVWm1GcVZWRm9UVk5KY1VOTGRFd3haalp2V1M5dWRrYzJabE0xV0ZOSFIzZ3lWbmRHVmpRMFkwRTlQUT09">Superembed</div>
</div>
</div>
-->
<script>
var sb_test = true;
</script>
<!--<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>-->
<script src="/jquery-3.7.1.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/blueimp-md5/2.16.0/js/md5.min.js" integrity="" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/js-cookie/3.0.5/js.cookie.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js" integrity="sha512-3j3VU6WC5rPQB4Ld1jnLV7Kd5xr+cq9avvhwqzbH/taCRNURoeEpoPBK9pDyeukwSxwRPJ8fDgvYXd6SkaZ2TA==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script src="/base64.js?t=1688387834"></script>
<script src="/sources.js?t=1745104089"></script>
<script src="/reporting.js?t=1688387834"></script>
<script src="//cloudnestra.com/asdf.js"></script>
<script src="/sbx.js?t=1754734900"></script>
<script>
var lc_on = IsLcOn();
var the_iframe = document.getElementById('player_iframe');
current_sub_name = "sub_"+$("body").data("i");
if ($("body").data("s") && $("body").data("e")){
current_sub_name += "_"+$("body").data("s")+"x"+$("body").data("e");
}
var lc_pro_cc = true;
var current_sub_data = 0;
if(lc_on){
var current_sub_data_tmp = JSON.parse(localStorage.getItem(current_sub_name));
}
var sub_hash = 'd95b3482760d7e331a0e4505fe338f2d';
/*
if(current_sub_data_tmp != null){
if (typeof current_sub_data_tmp === 'object'){
//console.log(current_sub_data_tmp);
if(current_sub_data_tmp.sub_hash == sub_hash)
current_sub_data = current_sub_data_tmp;
}
}
*/
// pm redirector
window.addEventListener('message', message => {
if (message.source == window) {
return; // Skip message in this event listener
}
if(message.data.type == "PLAYER_EVENT"){
//console.log(message.data);
}
if(message.data == "reload_page"){
window.location.reload();
}
if(message.data == "tvfull"){
$(".servers")[0].css('left', '100px');
}
if(message.source == window.parent){
var the_iframe = document.getElementById('player_iframe');
the_iframe.contentWindow.postMessage(message.data,'*');
}else{
window.parent.postMessage(message.data , '*');
}
});
function IsLcOn(){
var is_on = false;
try {
localStorage.setItem('test_lc' , "1");
if(localStorage.getItem('test_lc') == "1"){
is_on = true
}
}
catch(err) {
return false;
}
return is_on;
}
$("#iFrameId").on("load", function () {
});
$("#ad720 #close").click(function(){
$(this).parent().parent().hide();
$.cookie("ad720", "1" ,
{
expires : 0.001,
path: "/;SameSite=None",
secure: true
}
);
});
$(document).ready(function(){
$(".servers").show();
if(window.frameElement === null){
$("#top_buttons_parent").show();
}else{
var ref = window.frameElement.getAttribute('data-ref');
if(ref != null){
$(".servers").css("left","100px")
if(ref.length > 3){
$.get("/is_vip_str.php?ref="+encodeURIComponent(ref), function(data, status){
if(data == "1"){
$("#top_buttons_parent").hide();
}else{
$("#top_buttons_parent").show();
}
});
}else{
$("#top_buttons_parent").show();
}
}else{
$("#top_buttons_parent").show();
}
}
});
</script>
<!-- Histats.com (div with counter) --><div id="histats_counter"></div>
<!-- Histats.com START (aync)-->
<script type="text/javascript">var _Hasync= _Hasync|| [];
_Hasync.push(['Histats.start', '1,4873540,4,511,95,18,00000000']);
_Hasync.push(['Histats.fasi', '1']);
_Hasync.push(['Histats.track_hits', '']);
_Hasync.push(['Histats.framed_page', '']);
(function() {
var hs = document.createElement('script'); hs.type = 'text/javascript'; hs.async = true;
hs.src = ('//s10.histats.com/js15_as.js');
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(hs);
})();</script>
<noscript><a href="/" target="_blank"><img src="//sstatic1.histats.com/0.gif?4873540&101" alt="free counter with statistics" border="0"></a></noscript>
<!-- Histats.com END -->
<script src='https://unpkg.com/disable-devtool@0.3.9/disable-devtool.min.js#/misdir.js'></script>
<script>
DisableDevtool({
clearLog: true ,// Whether to clear the log every time
disableSelect: true , // Whether to disable selection text Default is false
disableCopy: true , // Whether to disable copying, default is false
disableCut: true , // Whether to disable cutting, default is false
disablePaste: true ,
disableIframeParents: false // Whether all parent windows are disabled in the iframe
})
</script>
<script data-ssr="1" data-cfasync="false" async type="text/javascript" src="//pb.rootcapruntime.cyou/r696797109dc94/131608"></script>
</body>
</html>

File diff suppressed because one or more lines are too long

View file

@ -1,11 +0,0 @@
#EXTM3U
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",NAME="English [CC]",DEFAULT=NO,AUTOSELECT=NO,FORCED=NO,LANGUAGE="eng",URI="https://vixsrc.to/playlist/612252?type=subtitle&rendition=eng-2&token=A4DdWVOC-Zk7oVrYIQU3bA&expires=1773654453&edge=sc-u9-01"
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",NAME="English [Forced]",DEFAULT=NO,AUTOSELECT=NO,FORCED=NO,LANGUAGE="eng-forced",URI="https://vixsrc.to/playlist/612252?type=subtitle&rendition=eng-forced-3&token=A4DdWVOC-Zk7oVrYIQU3bA&expires=1773654453&edge=sc-u9-01"
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",NAME="French",DEFAULT=NO,AUTOSELECT=NO,FORCED=NO,LANGUAGE="fre",URI="https://vixsrc.to/playlist/612252?type=subtitle&rendition=fre-4&token=A4DdWVOC-Zk7oVrYIQU3bA&expires=1773654453&edge=sc-u9-01"
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",NAME="Spanish",DEFAULT=NO,AUTOSELECT=NO,FORCED=NO,LANGUAGE="spa",URI="https://vixsrc.to/playlist/612252?type=subtitle&rendition=spa-5&token=A4DdWVOC-Zk7oVrYIQU3bA&expires=1773654453&edge=sc-u9-01"
#EXT-X-STREAM-INF:BANDWIDTH=4500000,CODECS="avc1.640028,mp4a.40.2",RESOLUTION=1920x1080,SUBTITLES="subs"
https://vixsrc.to/playlist/612252?type=video&rendition=1080p&token=ILslAWZ4iHG13XwOYOr42g&expires=1773654453&edge=sc-u9-01
#EXT-X-STREAM-INF:BANDWIDTH=1800000,CODECS="avc1.64001f,mp4a.40.2",RESOLUTION=1280x720,SUBTITLES="subs"
https://vixsrc.to/playlist/612252?type=video&rendition=720p&token=9LPJeLV-X45xQ9bKCLyYFA&expires=1773654453&edge=sc-u9-01
#EXT-X-STREAM-INF:BANDWIDTH=720000,CODECS="avc1.640015,mp4a.40.2",RESOLUTION=640x360,SUBTITLES="subs"
https://vixsrc.to/playlist/612252?type=video&rendition=360p&token=CQDIdX_LN3QdQ9yFRDMNlA&expires=1773654453&edge=sc-u9-01

View file

@ -4,14 +4,35 @@ exports[`DoodStream can guess height from title 1`] = `
[ [
{ {
"format": "mp4", "format": "mp4",
"label": "DoodStream (MFP)", "label": "DoodStream",
"meta": { "meta": {
"bytes": 549139251, "bytes": 549139251,
"extractorId": "doodstream", "extractorId": "doodstream",
"title": "Black Mirror S04E02 FRENCH 720p WEB x264-RiPiT", "title": "Black Mirror S04E02 FRENCH 720p WEB x264-RiPiT",
}, },
"requestHeaders": {
"Referer": "http://dood.to",
},
"ttl": 21600000, "ttl": 21600000,
"url": "https://mediaflow.test.org/extractor/video?host=Doodstream&api_password=test&d=http%3A%2F%2Fdood.to%2Fe%2Fdfx8me4un4ul&h_referer=http%3A%2F%2Fdood.to%2Fe%2Fdfx8me4un4ul&redirect_stream=true", "url": "https://ee317r.cloudatacdn.com/u5kj63yvxddlsdgge7qremqqka27irwiupc4k7o5cikbhjliz6xwv2xr53uq/lco4d3heif~mocked-random-string?token=fh3rdlhjvao7chgxndsi3ra7&expiry=639837296000",
},
]
`;
exports[`DoodStream cloudflare storage 1`] = `
[
{
"format": "mp4",
"label": "DoodStream",
"meta": {
"extractorId": "doodstream",
"title": "241653--5bf448d3-184a-4b3f-a766-fa98d93c1300--bllz--2100527-doodstream",
},
"requestHeaders": {
"Referer": "http://dood.to",
},
"ttl": 21600000,
"url": "https://wec6bnh7rx7rw11bv9e9vslw4rud8nam.5f1ebd98099ce35faeeddb30c1752191.r2.cloudflarestorage.com/icxxqqdsfdc4?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ab085b515b950aae0a86cae59456cacd%2F20250714%2Fauto%2Fs3%2Faws4_request&X-Amz-Date=20250714T154400Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=845ebfa5feedd840027e431f31e013513dd4c4f74364b4e75a2c8ddb213bd97a",
}, },
] ]
`; `;
@ -20,16 +41,21 @@ exports[`DoodStream dood.to 1`] = `
[ [
{ {
"format": "mp4", "format": "mp4",
"label": "DoodStream (MFP)", "label": "DoodStream",
"meta": { "meta": {
"bytes": 1395864371, "bytes": 1395864371,
"extractorId": "doodstream", "extractorId": "doodstream",
"title": "des-teufels-bad-2024", "title": "des-teufels-bad-2024",
}, },
"requestHeaders": {
"Referer": "http://dood.to",
},
"ttl": 21600000, "ttl": 21600000,
"url": "https://mediaflow.test.org/extractor/video?host=Doodstream&api_password=test&d=http%3A%2F%2Fdood.to%2Fe%2Fsk1m9eumzyjj&h_referer=http%3A%2F%2Fdood.to%2Fe%2Fsk1m9eumzyjj&redirect_stream=true", "url": "https://aa360cc.cloudatacdn.com/u5kjv4jxytd3sdgge5uogji5dg4huat2pxrm2qibdbm5rlyusvl46iz3u3ta/1f4isxg0tw~mocked-random-string?token=7uebebipnnhusa4xnyea1er4&expiry=639837296000",
}, },
] ]
`; `;
exports[`DoodStream missing pass_md5 -> not found 1`] = `[]`;
exports[`DoodStream not found 1`] = `[]`; exports[`DoodStream not found 1`] = `[]`;

View file

@ -11,9 +11,6 @@ exports[`Dropload download URL 1`] = `
"height": 720, "height": 720,
"title": "[~Squid~Game~EnG~]~S03E01~720p~WebRip ~❤GLD❤~", "title": "[~Squid~Game~EnG~]~S03E01~720p~WebRip ~❤GLD❤~",
}, },
"requestHeaders": {
"Referer": "https://dr0pstream.com/",
},
"ttl": 10800000, "ttl": 10800000,
"url": "https://srv29.dropload.io/hls2/01/00305/xhcmgcc2txnv_h/master.m3u8?t=MBKiIoVlA42YcZEixT7ZR1xJA5qKhcKgBi84GPmyT7U&s=1752613129&e=14400&f=1526758&i=0.0&sp=0&ii=130.61.236.204", "url": "https://srv29.dropload.io/hls2/01/00305/xhcmgcc2txnv_h/master.m3u8?t=MBKiIoVlA42YcZEixT7ZR1xJA5qKhcKgBi84GPmyT7U&s=1752613129&e=14400&f=1526758&i=0.0&sp=0&ii=130.61.236.204",
}, },
@ -30,9 +27,6 @@ exports[`Dropload dropload unknown height and size 1`] = `
"height": 800, "height": 800,
"title": "The Lost Bus 2025 1080p WEBRip x265", "title": "The Lost Bus 2025 1080p WEBRip x265",
}, },
"requestHeaders": {
"Referer": "https://dr0pstream.com/",
},
"ttl": 10800000, "ttl": 10800000,
"url": "https://ds16.dropcdn.io/hls2/02/00314/gf2apij3ql37_h/master.m3u8?t=jq0VCV2dOyLIIH07IGIpzruCXvbfdVqzGLWfMeo00AM&s=1759845990&e=14400&f=1571895&srv=ds3&i=0.0&sp=0&ii=2.184.0.222&p1=ds3&p2=ds3", "url": "https://ds16.dropcdn.io/hls2/02/00314/gf2apij3ql37_h/master.m3u8?t=jq0VCV2dOyLIIH07IGIpzruCXvbfdVqzGLWfMeo00AM&s=1759845990&e=14400&f=1571895&srv=ds3&i=0.0&sp=0&ii=2.184.0.222&p1=ds3&p2=ds3",
}, },
@ -50,9 +44,6 @@ exports[`Dropload dropload.io 1`] = `
"height": 1080, "height": 1080,
"title": "des-teufels-bad-2024", "title": "des-teufels-bad-2024",
}, },
"requestHeaders": {
"Referer": "https://dr0pstream.com/",
},
"ttl": 10800000, "ttl": 10800000,
"url": "https://srv34.dropload.io/hls2/01/00197/lyo2h1snpe5c_h/master.m3u8?t=ESjD9Le53ttKN2JPyxrhLUqTebDZvx3vcQUlNgP6Vko&s=1749845553&e=14400&f=987607&srv=srv27&i=0.0&sp=0&ii=50.99.15.93&p1=srv27&p2=srv27", "url": "https://srv34.dropload.io/hls2/01/00197/lyo2h1snpe5c_h/master.m3u8?t=ESjD9Le53ttKN2JPyxrhLUqTebDZvx3vcQUlNgP6Vko&s=1749845553&e=14400&f=987607&srv=srv27&i=0.0&sp=0&ii=50.99.15.93&p1=srv27&p2=srv27",
}, },

View file

@ -1,7 +1,5 @@
// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing // Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing
exports[`ExtractorRegistry empty results are cached 1`] = `[]`;
exports[`ExtractorRegistry returns error result from extractor 1`] = `[]`; exports[`ExtractorRegistry returns error result from extractor 1`] = `[]`;
exports[`ExtractorRegistry returns external URLs if enabled by config 1`] = ` exports[`ExtractorRegistry returns external URLs if enabled by config 1`] = `
@ -30,7 +28,6 @@ exports[`ExtractorRegistry returns external url for error 1`] = `
"meta": { "meta": {
"extractorId": "dropload", "extractorId": "dropload",
}, },
"ttl": 0,
"url": "https://dropload.io/mocked-blocked.html", "url": "https://dropload.io/mocked-blocked.html",
}, },
] ]

View file

@ -10,7 +10,6 @@ exports[`Fsst Wake up Dead Man 1`] = `
"height": 1080, "height": 1080,
"title": "Wake.Up.Dead.Man.A.Knives.Out.Mystery.2025.mkv", "title": "Wake.Up.Dead.Man.A.Knives.Out.Mystery.2025.mkv",
}, },
"ttl": 10800000,
"url": "https://a41.filevideo1.com/remote_control.php?time=1767712695&cv=a5df8582e6558fcf6bc25d7f02e5e646&lr=0&cv2=81173262e5b3e34fa9ebf67326ca98a5&file=%2Fvideos%2F948000%2F948429%2F948429.mp4&cv3=2d8ee1a66c0ca6ce75d84c67a50a70e9&cv4=7cf7fccae0c48291e3452c8ca2277f70", "url": "https://a41.filevideo1.com/remote_control.php?time=1767712695&cv=a5df8582e6558fcf6bc25d7f02e5e646&lr=0&cv2=81173262e5b3e34fa9ebf67326ca98a5&file=%2Fvideos%2F948000%2F948429%2F948429.mp4&cv3=2d8ee1a66c0ca6ce75d84c67a50a70e9&cv4=7cf7fccae0c48291e3452c8ca2277f70",
}, },
] ]

View file

@ -7,56 +7,27 @@ exports[`HubCloud handle crayon shin-chan 1993 1`] = `
"label": "HubCloud (FSL)", "label": "HubCloud (FSL)",
"meta": { "meta": {
"bytes": 28550795100, "bytes": 28550795100,
"countryCodes": [
"hi",
"ja",
],
"extractorId": "hubcloud_fsl", "extractorId": "hubcloud_fsl",
"height": 1080,
"title": "Crayon Shinchan Action Kamen vs Demon (1993) 1080p BluRay REMUX AVC [Hindi DD 2.0 + Japanese FLAC 2.0] (PitiPati-Ionicboy) (4kHDHub.com).mkv", "title": "Crayon Shinchan Action Kamen vs Demon (1993) 1080p BluRay REMUX AVC [Hindi DD 2.0 + Japanese FLAC 2.0] (PitiPati-Ionicboy) (4kHDHub.com).mkv",
}, },
"ttl": 43200000, "ttl": 259200000,
"url": "https://hub.oreao-cdn.buzz/e35ec4a9a4efb5a154d0d10f9481dafc?token=1774428754", "url": "https://pub-6b25c191839c4b01a878de4fdde0227b.r2.dev/e35ec4a9a4efb5a154d0d10f9481dafc?token=1765557445",
}, },
] ]
`; `;
exports[`HubCloud handle dark 2017 s03e08 1`] = ` exports[`HubCloud handle dark 2017 s03e08 1`] = `
[ [
{
"format": "unknown",
"label": "HubCloud (FSL)",
"meta": {
"bytes": 3382286745,
"countryCodes": [
"de",
"en",
],
"extractorId": "hubcloud_fsl",
"height": 1080,
"title": "Dark.S03E08.The.Paradise.1080p.NF.WEB-DL.English.DDP5.1-German.DDP5.1.H.264-4kHdHub.Com.mkv",
},
"ttl": 43200000,
"url": "https://pub-0cef6721657649918259091880efe12f.r2.dev/c8c652be7fb5a8d731b9c7ddc465d37f?token=1774428754",
},
{ {
"format": "unknown", "format": "unknown",
"label": "HubCloud (PixelServer)", "label": "HubCloud (PixelServer)",
"meta": { "meta": {
"bytes": 3382286745, "bytes": 3382286745,
"countryCodes": [
"de",
"en",
],
"extractorId": "hubcloud_pixelserver", "extractorId": "hubcloud_pixelserver",
"height": 1080,
"title": "Dark.S03E08.The.Paradise.1080p.NF.WEB-DL.English.DDP5.1-German.DDP5.1.H.264-4kHdHub.Com.mkv", "title": "Dark.S03E08.The.Paradise.1080p.NF.WEB-DL.English.DDP5.1-German.DDP5.1.H.264-4kHdHub.Com.mkv",
}, },
"requestHeaders": { "ttl": 259200000,
"Referer": "https://pixeldrain.dev/u/2kFQBQio", "url": "https://pixeldrain.dev/api/file/2kFQBQio",
},
"ttl": 43200000,
"url": "https://pixeldrain.dev/api/file/2kFQBQio?download=",
}, },
] ]
`; `;
@ -68,66 +39,22 @@ exports[`HubCloud handle dexter original sin 2024 s01e01 1`] = `
"label": "HubCloud (FSL)", "label": "HubCloud (FSL)",
"meta": { "meta": {
"bytes": 5733781340, "bytes": 5733781340,
"countryCodes": [],
"extractorId": "hubcloud_fsl", "extractorId": "hubcloud_fsl",
"height": 2160,
"title": "Dexter.Original.Sin.S01E01.2160p.SKST.WEB-DL.H.265.DDP5.1-Tyrell.mkv", "title": "Dexter.Original.Sin.S01E01.2160p.SKST.WEB-DL.H.265.DDP5.1-Tyrell.mkv",
}, },
"ttl": 43200000, "ttl": 259200000,
"url": "https://pub-b5ecaffddf2344a0ae2222f5e8913e1b.r2.dev/Dexter.Original.Sin.S01E01.2160p.SKST.WEB-DL.H.265.DDP5.1-Tyrell.mkv?token=1774428754", "url": "https://pub-b5ecaffddf2344a0ae2222f5e8913e1b.r2.dev/Dexter.Original.Sin.S01E01.2160p.SKST.WEB-DL.H.265.DDP5.1-Tyrell.mkv?token=1765557444",
}, },
{ {
"format": "unknown", "format": "unknown",
"label": "HubCloud (PixelServer)", "label": "HubCloud (PixelServer)",
"meta": { "meta": {
"bytes": 5733781340, "bytes": 5733781340,
"countryCodes": [],
"extractorId": "hubcloud_pixelserver", "extractorId": "hubcloud_pixelserver",
"height": 2160,
"title": "Dexter.Original.Sin.S01E01.2160p.SKST.WEB-DL.H.265.DDP5.1-Tyrell.mkv", "title": "Dexter.Original.Sin.S01E01.2160p.SKST.WEB-DL.H.265.DDP5.1-Tyrell.mkv",
}, },
"requestHeaders": { "ttl": 259200000,
"Referer": "https://pixeldrain.dev/u/HqAiguQV", "url": "https://pixeldrain.dev/api/file/HqAiguQV",
},
"ttl": 43200000,
"url": "https://pixeldrain.dev/api/file/HqAiguQV?download=",
},
]
`;
exports[`HubCloud handle goat 2026 1`] = `
[
{
"format": "unknown",
"label": "HubCloud (FSL)",
"meta": {
"bytes": 19091129630,
"countryCodes": [
"en",
"hi",
],
"extractorId": "hubcloud_fsl",
"height": 2160,
"title": "Goat (2026) 2160p 10bit HDR10+ DV iTunes WEB-DL HEVC x265 [Hindi AMZN DDP 5.1 640kbps + English DDP Atmos 5.1] ESub-(BYNDR-4kHdHub).mkv",
},
"ttl": 43200000,
"url": "https://hub.shipcdn.buzz/06a50fe95983473b5eeb7fa0ed1b453b?token=1774428722",
},
{
"format": "unknown",
"label": "HubCloud (FSLv2)",
"meta": {
"bytes": 19091129630,
"countryCodes": [
"en",
"hi",
],
"extractorId": "hubcloud_fslv2",
"height": 2160,
"title": "Goat (2026) 2160p 10bit HDR10+ DV iTunes WEB-DL HEVC x265 [Hindi AMZN DDP 5.1 640kbps + English DDP Atmos 5.1] ESub-(BYNDR-4kHdHub).mkv",
},
"ttl": 43200000,
"url": "https://cdn.fsl-buckets.life/Goat%202026%202160p%2010bit%20HDR10+%20DV%20iTunes%20WEB-DL%20HEVC%20x265%20[Hindi%20AMZN%20DDP%205.1%20640kbps%20+%20English%20DDP%20Atmos%205.1]%20ESub-BYNDR-4kHdHub.mkv?token=af180cafc2418c7c47249d0167ba9704",
}, },
] ]
`; `;

View file

@ -1,24 +0,0 @@
// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing
exports[`HubDrive handle avatar 1`] = `
[
{
"format": "unknown",
"label": "HubCloud (FSL)",
"meta": {
"bytes": 64649995223,
"countryCodes": [
"en",
"hi",
],
"extractorId": "hubcloud_fsl",
"height": 2160,
"title": "Avatar (2009) Extended Collector's Edition IMAX 2160p UHD BluRay REMUX DV HDR 10bit HEVC [Hindi DDP 5.1 + English DTS-HD MA 5.1] x265 (LM-LUMiX) 4KHDHUB.[Com].mkv",
},
"ttl": 43200000,
"url": "https://love.polgen.buzz/9eb5c280ca70adc5c98417476ff16743?token=1768569027",
},
]
`;
exports[`HubDrive handle missing hubcloud 1`] = `[]`;

View file

@ -10,8 +10,8 @@ exports[`RgShows handle one battle after another 1`] = `
"height": 1080, "height": 1080,
}, },
"requestHeaders": { "requestHeaders": {
"Origin": "https://www.rgshows.ru", "Origin": "https://rgshows.ru",
"Referer": "https://www.rgshows.ru/", "Referer": "https://rgshows.ru/",
"User-Agent": "Mozilla", "User-Agent": "Mozilla",
}, },
"ttl": 10800000, "ttl": 10800000,
@ -29,8 +29,8 @@ exports[`RgShows handle parasite 2019 (mp4) 1`] = `
"extractorId": "rgshows", "extractorId": "rgshows",
}, },
"requestHeaders": { "requestHeaders": {
"Origin": "https://www.rgshows.ru", "Origin": "https://rgshows.ru",
"Referer": "https://www.rgshows.ru/", "Referer": "https://rgshows.ru/",
"User-Agent": "Mozilla", "User-Agent": "Mozilla",
}, },
"ttl": 10800000, "ttl": 10800000,
@ -49,8 +49,8 @@ exports[`RgShows handle stranger things s05e01 1`] = `
"height": 1080, "height": 1080,
}, },
"requestHeaders": { "requestHeaders": {
"Origin": "https://www.rgshows.ru", "Origin": "https://rgshows.ru",
"Referer": "https://www.rgshows.ru/", "Referer": "https://rgshows.ru/",
"User-Agent": "Mozilla", "User-Agent": "Mozilla",
}, },
"ttl": 10800000, "ttl": 10800000,

View file

@ -12,7 +12,7 @@ exports[`StreamEmbed watch.gxplayer.xyz 1`] = `
"height": 720, "height": 720,
"title": "Baymax - Riesiges Robowabohu.mp4", "title": "Baymax - Riesiges Robowabohu.mp4",
}, },
"ttl": 259200000, "ttl": 900000,
"url": "https://watch.gxplayer.xyz/m3u8/3/30b4a92517ace5825f5944c8a794ad3e/master.txt?s=1&id=11782&cache=1", "url": "https://watch.gxplayer.xyz/m3u8/3/30b4a92517ace5825f5944c8a794ad3e/master.txt?s=1&id=11782&cache=1",
}, },
] ]

View file

@ -0,0 +1,17 @@
// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing
exports[`StreamUp handle one battle after another 1`] = `
[
{
"format": "hls",
"label": "StreamUP",
"meta": {
"extractorId": "streamup",
"height": 1080,
"title": "Wake.Up.Dead.Man.A.Knives.Out.Mystery.2025",
},
"ttl": 10800000,
"url": "https://s3-hls2-cdn59.strmupcdn.com/hls/SJbD5Zm1pj06jZ2LDbHa13YBmryxas/master.m3u8?token=35f702a94c0e324d607d8761795a3788-1768016464-104.28.197.7-5ebad85b212e5e349b388501e051c992a2b68e70fdcaa6cc18270adee1f7c003",
},
]
`;

View file

@ -12,9 +12,6 @@ exports[`SuperVideo embed only 1`] = `
"height": 1080, "height": 1080,
"title": "", "title": "",
}, },
"requestHeaders": {
"Referer": "https://supervideo.cc/",
},
"ttl": 10800000, "ttl": 10800000,
"url": "https://hfs308.serversicuro.cc/hls/,dnzpe7rf5xg4a3gyva3h5orlyw23xosfzwunl5xbmjpz2l6t3doh5zbwynna,.urlset/master.m3u8", "url": "https://hfs308.serversicuro.cc/hls/,dnzpe7rf5xg4a3gyva3h5orlyw23xosfzwunl5xbmjpz2l6t3doh5zbwynna,.urlset/master.m3u8",
}, },
@ -34,9 +31,6 @@ exports[`SuperVideo supervideo.cc /e/ 1`] = `
"height": 720, "height": 720,
"title": "des-teufels-bad-2024", "title": "des-teufels-bad-2024",
}, },
"requestHeaders": {
"Referer": "https://supervideo.cc/",
},
"ttl": 10800000, "ttl": 10800000,
"url": "https://hfs309.serversicuro.cc/hls/,dnzpfi3d27g4a3gyvbmh5klwtl65qh654hyjtgupd6p577fze64cp3rsmdyq,.urlset/master.m3u8", "url": "https://hfs309.serversicuro.cc/hls/,dnzpfi3d27g4a3gyvbmh5klwtl65qh654hyjtgupd6p577fze64cp3rsmdyq,.urlset/master.m3u8",
}, },
@ -54,9 +48,6 @@ exports[`SuperVideo supervideo.tv /embed-/ 1`] = `
"height": 344, "height": 344,
"title": "Babylon 5 2x3", "title": "Babylon 5 2x3",
}, },
"requestHeaders": {
"Referer": "https://supervideo.cc/",
},
"ttl": 10800000, "ttl": 10800000,
"url": "https://hfs307.serversicuro.cc/hls/,dnzpaalv5xg4a3gyvavh52jryoft7o5cd5nm7cwtnu74kmc4ohiklh5qwq4q,.urlset/master.m3u8", "url": "https://hfs307.serversicuro.cc/hls/,dnzpaalv5xg4a3gyvavh52jryoft7o5cd5nm7cwtnu74kmc4ohiklh5qwq4q,.urlset/master.m3u8",
}, },

View file

@ -1,33 +0,0 @@
// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing
exports[`VidSrc Black Mirror 1`] = `
[
{
"format": "hls",
"label": "CloudStream Pro",
"meta": {
"extractorId": "vidsrc",
"height": 1040,
"title": "Black Mirror (2011) S04E02",
},
"ttl": 10800000,
"url": "https://tmstr1.cloudnestra.com/pl/H4sIAAAAAAAAAwXB3ZKCIBgA0FcC0X72bmuU1pRW4EPlDsHGkBxr2nXz6fcct.lwl_Sx6XC0M1tntrYnZtejTXzF6Hr9UMjGdb3PWTTcWIqLc8Rb8C0qqf6WkmEZhkI0LVG1OnCKcOlZYikfOc6K1g.RTUdUZrMA0D_KcykgqyT9m.wUDoYOF1vnSquQKOKai9SNgUDNCs8z_nqatfyVaf4QgXGlZtD3MFji0h7CiaFEAsXHi3htoPmMxO3l69TJCu3f_PhigLNayXJhqz4WpH1XUx4LPL_PSC8ahkexukrfs4cjagNeEwGIOO.ybsomATm1mJ3MFGY18gpwWARhQa7D2HmNS1C1HvUCEu3_ASDZlyFBAQAA/master.m3u8",
},
]
`;
exports[`VidSrc Full Metal Jacket 1`] = `
[
{
"format": "hls",
"label": "CloudStream Pro",
"meta": {
"extractorId": "vidsrc",
"height": 714,
"title": "Full Metal Jacket (1987)",
},
"ttl": 10800000,
"url": "https://tmstr5.cloudnestra.com/pl/H4sIAAAAAAAAAw3O3W6CMBgA0FdqQRR2p2IlXQqjtF9_7qCQYEHGwATH02_nCc7JtTFKgqZBxy4OExyfGhc3iYtdjZyL2g85kA0y.BHX.CAUCaUABBOpK88zINaX4.XLYgtMu6jc26PF53eREt0ALfg0PxRhiwioqqYWq9vwZprhHOWKpVS43S1C92vnqTXBWJVAkPC94Zpt.ZMbuM9G3NfABvOxmXj2ifClS8._.TBeYcA39jyEbZizSlyIkPxmCRFmpKyWUVENs5apWQD3r0JFYTPM4___1flclwqHrZe7nIBytC3u8SIcw1YJ.nCea6f4LghDRuJV.iFw2djXKc1yTCVgWHl6DgHsdylQ8gd2WpeiQQEAAA--/master.m3u8",
},
]
`;

View file

@ -7,9 +7,8 @@ exports[`VixSrc Black Mirror 1`] = `
"label": "VixSrc", "label": "VixSrc",
"meta": { "meta": {
"countryCodes": [ "countryCodes": [
"multi",
"en",
"it", "it",
"en",
], ],
"extractorId": "vixsrc", "extractorId": "vixsrc",
"height": 1080, "height": 1080,
@ -29,9 +28,8 @@ exports[`VixSrc Full Metal Jacket 1`] = `
"label": "VixSrc", "label": "VixSrc",
"meta": { "meta": {
"countryCodes": [ "countryCodes": [
"multi",
"en",
"it", "it",
"en",
], ],
"extractorId": "vixsrc", "extractorId": "vixsrc",
"height": 1080, "height": 1080,
@ -41,21 +39,3 @@ exports[`VixSrc Full Metal Jacket 1`] = `
}, },
] ]
`; `;
exports[`VixSrc Rental Family 1`] = `
[
{
"format": "hls",
"label": "VixSrc",
"meta": {
"countryCodes": [
"multi",
],
"extractorId": "vixsrc",
"height": 1080,
},
"ttl": 21600000,
"url": "https://vixsrc.to/playlist/612252.m3u8?token=d4118614964ebe7f00430371d305378d&expires=1773654453&h=1",
},
]
`;

View file

@ -8,7 +8,6 @@ import { FileLions } from './FileLions';
import { FileMoon } from './FileMoon'; import { FileMoon } from './FileMoon';
import { Fsst } from './Fsst'; import { Fsst } from './Fsst';
import { HubCloud } from './HubCloud'; import { HubCloud } from './HubCloud';
import { HubDrive } from './HubDrive';
import { KinoGer } from './KinoGer'; import { KinoGer } from './KinoGer';
import { LuluStream } from './LuluStream'; import { LuluStream } from './LuluStream';
import { Mixdrop } from './Mixdrop'; import { Mixdrop } from './Mixdrop';
@ -16,10 +15,10 @@ import { RgShows } from './RgShows';
import { SaveFiles } from './SaveFiles'; import { SaveFiles } from './SaveFiles';
import { StreamEmbed } from './StreamEmbed'; import { StreamEmbed } from './StreamEmbed';
import { Streamtape } from './Streamtape'; import { Streamtape } from './Streamtape';
import { StreamUp } from './StreamUp';
import { SuperVideo } from './SuperVideo'; import { SuperVideo } from './SuperVideo';
import { Uqload } from './Uqload'; import { Uqload } from './Uqload';
import { Vidora } from './Vidora'; import { Vidora } from './Vidora';
import { VidSrc } from './VidSrc';
import { VixSrc } from './VixSrc'; import { VixSrc } from './VixSrc';
import { Voe } from './Voe'; import { Voe } from './Voe';
import { YouTube } from './YouTube'; import { YouTube } from './YouTube';
@ -30,8 +29,6 @@ export * from './ExtractorRegistry';
export const createExtractors = (fetcher: Fetcher): Extractor[] => { export const createExtractors = (fetcher: Fetcher): Extractor[] => {
const disabledExtractors = envGet('DISABLED_EXTRACTORS')?.split(',') ?? []; const disabledExtractors = envGet('DISABLED_EXTRACTORS')?.split(',') ?? [];
const hubCloud = new HubCloud(fetcher);
return [ return [
new DoodStream(fetcher), new DoodStream(fetcher),
new Dropload(fetcher), new Dropload(fetcher),
@ -39,8 +36,7 @@ export const createExtractors = (fetcher: Fetcher): Extractor[] => {
new FileLions(fetcher), new FileLions(fetcher),
new FileMoon(fetcher), new FileMoon(fetcher),
new Fsst(fetcher), new Fsst(fetcher),
hubCloud, new HubCloud(fetcher),
new HubDrive(fetcher, hubCloud),
new KinoGer(fetcher), new KinoGer(fetcher),
new LuluStream(fetcher), new LuluStream(fetcher),
new Mixdrop(fetcher), new Mixdrop(fetcher),
@ -48,18 +44,10 @@ export const createExtractors = (fetcher: Fetcher): Extractor[] => {
new SaveFiles(fetcher), new SaveFiles(fetcher),
new StreamEmbed(fetcher), new StreamEmbed(fetcher),
new Streamtape(fetcher), new Streamtape(fetcher),
new StreamUp(fetcher),
new SuperVideo(fetcher), new SuperVideo(fetcher),
new Uqload(fetcher), new Uqload(fetcher),
new Vidora(fetcher), new Vidora(fetcher),
new VidSrc(fetcher, [ // https://vidsrc.domains/
'vidsrcme.ru',
'vidsrcme.su',
'vidsrc-me.ru',
'vidsrc-me.su',
'vidsrc-embed.ru',
'vidsrc-embed.su',
'vsrc.su',
]),
new VixSrc(fetcher), new VixSrc(fetcher),
new Voe(fetcher), new Voe(fetcher),
new YouTube(fetcher), new YouTube(fetcher),

View file

@ -1,10 +1,8 @@
import { randomUUID } from 'node:crypto'; import { randomUUID } from 'node:crypto';
import axios from 'axios'; import axios from 'axios';
import { buildMemoryStorage, setupCache } from 'axios-cache-interceptor'; import { setupCache } from 'axios-cache-interceptor';
import axiosRetry from 'axios-retry'; import axiosRetry from 'axios-retry';
import express, { NextFunction, Request, Response } from 'express'; import express, { NextFunction, Request, Response } from 'express';
// eslint-disable-next-line import/no-named-as-default
import rateLimit from 'express-rate-limit';
import winston from 'winston'; import winston from 'winston';
import { ConfigureController, ExtractController, ManifestController, StreamController } from './controller'; import { ConfigureController, ExtractController, ManifestController, StreamController } from './controller';
import { BlockedError, logErrorAndReturnNiceString } from './error'; import { BlockedError, logErrorAndReturnNiceString } from './error';
@ -13,7 +11,7 @@ import { createSources, Source } from './source';
import { HomeCine } from './source/HomeCine'; import { HomeCine } from './source/HomeCine';
import { MeineCloud } from './source/MeineCloud'; import { MeineCloud } from './source/MeineCloud';
import { MostraGuarda } from './source/MostraGuarda'; import { MostraGuarda } from './source/MostraGuarda';
import { clearCache, contextFromRequestAndResponse, envGet, envIsProd, Fetcher, StreamResolver } from './utils'; import { contextFromRequestAndResponse, envGet, envIsProd, Fetcher, StreamResolver } from './utils';
if (envIsProd()) { if (envIsProd()) {
console.log = console.warn = console.error = console.info = console.debug = () => { /* disable in favor of logger */ }; console.log = console.warn = console.error = console.info = console.debug = () => { /* disable in favor of logger */ };
@ -32,18 +30,13 @@ const logger = winston.createLogger({
process.on('uncaughtException', (error: Error) => { process.on('uncaughtException', (error: Error) => {
logger.error(`Uncaught exception caught: ${error}, cause: ${error.cause}, stack: ${error.stack}`); logger.error(`Uncaught exception caught: ${error}, cause: ${error.cause}, stack: ${error.stack}`);
process.exit(1);
}); });
process.on('unhandledRejection', (error: Error) => { process.on('unhandledRejection', (error: Error) => {
logger.error(`Unhandled rejection: ${error}, cause: ${error.cause}, stack: ${error.stack}`); logger.error(`Unhandled rejection: ${error}, cause: ${error.cause}, stack: ${error.stack}`);
}); });
const cachedAxios = setupCache(axios, { const cachedAxios = setupCache(axios);
interpretHeader: true,
storage: buildMemoryStorage(false, 3 * 60 * 60 * 1000, 4096, 12 * 60 * 60 * 1000),
ttl: 15 * 60 * 1000, // 15m
});
axiosRetry(cachedAxios, { retries: 3, retryDelay: () => 333 }); axiosRetry(cachedAxios, { retries: 3, retryDelay: () => 333 });
const fetcher = new Fetcher(cachedAxios, logger); const fetcher = new Fetcher(cachedAxios, logger);
@ -54,16 +47,6 @@ const extractors = createExtractors(fetcher);
const addon = express(); const addon = express();
addon.set('trust proxy', true); addon.set('trust proxy', true);
if (envIsProd()) {
addon.use(rateLimit({ windowMs: 60 * 1000, limit: 30 }));
}
if (envGet('CACHE_FILES_DELETE_ON_START')) {
(async function () {
await clearCache(logger);
})();
}
addon.use((req: Request, res: Response, next: NextFunction) => { addon.use((req: Request, res: Response, next: NextFunction) => {
process.env['HOST'] = req.host; process.env['HOST'] = req.host;
process.env['PROTOCOL'] = req.protocol; process.env['PROTOCOL'] = req.protocol;
@ -74,7 +57,7 @@ addon.use((req: Request, res: Response, next: NextFunction) => {
res.setHeader('Access-Control-Allow-Headers', '*'); res.setHeader('Access-Control-Allow-Headers', '*');
if (envIsProd()) { if (envIsProd()) {
res.setHeader('Cache-Control', 'public, max-age=10, immutable'); res.setHeader('Cache-Control', 'max-age=10, public');
} }
next(); next();
@ -89,13 +72,6 @@ addon.use('/', (new ManifestController(sources, extractors)).router);
const streamResolver = new StreamResolver(logger, extractorRegistry); const streamResolver = new StreamResolver(logger, extractorRegistry);
addon.use('/', (new StreamController(logger, sources, streamResolver)).router); addon.use('/', (new StreamController(logger, sources, streamResolver)).router);
// error handler needs to stay at the end of the stack
addon.use((err: Error, _req: Request, _res: Response, next: NextFunction) => {
logger.error(`Error: ${err}, cause: ${err.cause}, stack: ${err.stack}`);
return next(err);
});
addon.get('/', (_req: Request, res: Response) => { addon.get('/', (_req: Request, res: Response) => {
res.redirect('/configure'); res.redirect('/configure');
}); });

View file

@ -280,13 +280,6 @@ export function landingTemplate(manifest: CustomManifest) {
<div class="separator"></div> <div class="separator"></div>
<p>
Note: HTTP streams have limitations. For a better experience, I'd advise using a Debrid service and WebStreamr as fallback.
<a href="https://torbox.app/subscription?referral=f22eb00d-27ce-4e20-85fc-68da3d018b99" target="_blank"><strong>TorBox</strong></a> is working very well.
</p>
<div class="separator"></div>
<h3 class="gives">This addon has more :</h3> <h3 class="gives">This addon has more :</h3>
<ul> <ul>
${stylizedTypes.map(t => `<li>${t}</li>`).join('')} ${stylizedTypes.map(t => `<li>${t}</li>`).join('')}

Some files were not shown because too many files have changed in this diff Show more